Microcontrollers are there even before we have our computers to do our job thus in those times generally we used to program our controllers through Serial Protocols using COM Ports . Now as computers start advancing we developed more suitable and robust protocols for our communication needs such as USB (Universal Serial Bus). USB is a Faster and a easier way to communicate through the devices as compared to Big old Serial Ports. As the time passed away Serial COM ports are now totally vanished from the modern PC’s and thus arrived the need to change our programming Devices and Protocols.
As we see by default the AVR series of microcontrollers does not support the USB communication protocol and thus it is difficult for us to program it directly through USB. So the solution for this is USBAsp Programmer. It is a separate USB device which acts as a virtual COM Port for our microcontrollers, the thing here is it also supports USB protocol it is a Win-Win situation for all of us. Thus giving us the edge and freedom to use USB for programming our microcontrollers.
USBAsp is a Universal device and can be used to program any AVR related microcontrollers. It can also be used for loading the corresponding Arduino Bootloader into the ATmega IC’s.
It is a good thing that Arduino has lessen the worries of the newbies for setting up the initial development environment required for ATMEGA 328 as they have given a specific hardware with a pre-loaded bootloader and a particular programming software which is like ‘A Ready to Go’ solution for the users. It’s more like a prototyping platform and cannot be configured in an original way i.e. many of the things are hidden behind those header files we using for programming Arduino. It is just for the ease of the user, to include a pre defined library file and use it along the given instructions to control given device.
But for the precise control of given hardware one should know the actual working of the hardware and how to link that hardware with software to acquire the required data or to give any command to it. In depth knowledge of the hardware is the basic foundation of the microcontrollers.(As for the Engineers)
Sometimes specific reasons like commercializing your product or cutting the costs can force you to use them in bare bone (just enough) configuration. Sometimes you may be looking for a “Fit in Socket” Solution, thus providing just enough capabilities to do your work efficiently.
There are many reasons for which you want to deploy a different AVR microcontroller other then which are conventionally used in the Arduino Series (Those used in Arduino can be configured too) are numerous, some of these are :
- Configuring for Low Power Applications
- For a smaller and a smart design
- Tweaking your design parameters
- You want to explore an unconventional(Not pre-packed like Arduino) way
- Cutting the costs
- Commercializing your product
- More control over software
- Many more…