AVR is the series of the micro-controllers released by Atmel Corporation. These controllers are available in 8 and 32 bit modes and have many versions. The one which we are specifically talking about here is Atmega 16 which is a 8 bit controller with 16 Kb of flash memory i.e we can store a program of 16 Kb size in it.
You are free to choose from the wide variety of these controllers and can experiment on them. The only difference you will note is the variation of the physical capabilities like no. of ports, Memory size, no. of ADC enabled pins, amount of RAM or some internal characteristics.
AVR is a popular microcontroller among hobbyists also, for an example the most popular micro-controller platform Arduino Uno is using one of the AVR chip ATMEGA 328 which is a 8-bit micro-controller with a 32 Kb of the flash memory.
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…
In this tutorial we are dealing with Atmega 16 version of the AVR as an example you can choose whatever you are okay with.
First of all before working on the real hardware, we will be simulating our designs on the Simulation software which does provides us the safe way to test our code as hardware is sensitive object so before really working on the hardware one should familiarize him/herself to the simulation first.
Here we assume that the reader has a PC with Windows operating System and a Basic understanding of C-programming language and have skills for the basic computer operations.