Blog

ARDUINO VS AVR MICROCONTROLLER

  1.  Arduino is an open-source microcontroller platform and not only an AVR chip alone. In simple words, Arduino = AVR + Arduino Bootloader + Arduino IDE.
  2. Arduino has a dedicated IDE which is needed to program it. The IDE uses C languages to deal with programming. An ordinary AVR, on the other hand, doesn’t necessarily need C languages to program it. Other languages like BASIC, assembly, Pascal, etc can be used for an ordinary AVR unlike Arduino AVRs.
  3. Arduino’s built-in libraries and functions provide quick solution to a problem but they consume too much resources (memory, clock cycle, etc) of an AVR unlike what can achieved with an ordinary AVR. In terms of code efficiency Arduino platform is not as good as assembly or generic C languages due to this fact. Even a blank Arduino sketch consumes heavy resources.
  4. Resources for Arduino are way bigger than for a regular AVR as lot of people work with it. Open source resources and communities provide limitless stuffs.
  5. Arduino AVRs contain an Arduino bootloader by default. This is a tiny program which make the Arduino’s AVR chips respond to commands sent by Arduino IDE. This helps in flashing programs. Most ordinary AVRs don’t have any bootloader by default. The bootloader occupies some space of the micro embedded with it and so not all the space of that micro is available for programming. For bigger Arduinos like the Mega2560 this is not a serious issue but for smaller ones like ATTiny85-based Arduinos, it matters a lot. Despite this fact bootloaders enable users to download programs into micros without needing a dedicated programmer hardware. This is usually achieved with serial ports. This is the cool part of a bootloader.
  6. Since Arduino AVRs need Arduino bootloaders, Arduino AVRs are usually limited to larger AVR micro. For smaller projects, smaller micros like the ATTiny13 may be more desirable than a larger chip and this is where Arduino AVRs fail. Chips without boot sectors can’t be Arduino compatible. Besides Arduino IDE needs some changes for adding other micros other than the official one.
  7. An ordinary AVR will need a programmer hardware and software to burn codes in it while this is not required for Arduino AVRs. An Arduino board or a virtual serial port based on FT232, PL2303 or something similar can handle the programming using virtual serial ports. Arduino AVRs can also be flashed with AVR programmers like the AVR MKII ISP and USBASP. If dedicated AVR programmers are used then the Arduino bootloader which occupies some space of its micro, can be avoided.
  8. Arduino runs with 16MHz external crystal clock by default unlike a regular AVR which can run with internal or external clocks and at various clock speeds. In the case of Arduino, clock speed can be changed but requires some skills which a beginner may not have.
  9. Arduino IDE is required for Arduino AVRs. Ordinary AVRs are independent of any IDE other than programming. A typical AVR user can use MikroC, BASCOM AVR, etc for compiling codes and doesn’t need to stick with a particular one.
  10. 10. Arduino AVRs have pin names with functional description while ordinary AVRs have ports and no pin specific fixed names except what their datasheet tell about them. Arduino also hides certain deeper aspects of an AVR chip like fuse settings, registers, some