Use fixed integer types to enhance portability
If you have programmed anything with C you should be familiar with common data types like char, unsi[...]
Using Volatile keyword in embedded code
Volatile is probably least documented keyword in most tutorials and books. Probably this is main cau[...]
Interfacing GPS Module with AVR
GPS modem is a device which receives signals from satellite and provides information about latitude,[...]
Software Debouncing of buttons
Connecting a button as an input to a micro-controller is a relatively easy task, but there are some [...]
Interfacing DC motor to Atmega32
In a past tutorial, we saw how to control a servo using AVR. This tutorial will aim at interfacing a[...]
Interfacing matrix keyboard with AVR
Keypad is most widely used input device to provide input from the outside world to the microcontroll[...]
Sensing Temperature Using AVR
In this new tutorial, we will be interfacing a LM35 based temperature sensor with ATMEGA32. The 3 ma[...]
Interfacing Ultrasonic Rangefinder with AVR
In this tutorial, we are going to interface ultrasonic rangefinder with the all popular ATMEGA8. Ult[...]
Interfacing analog Joystick with AVR
In this tutorial we are going to learn something interesting which is already sued by many people to[...]
Interfacing shift register with AVR
Shift register is one of the important thing to learn while designing any embedded system. Using shi[...]
Controlling servo motor with AVR
Servo motors are a type of electromechanical actuators that do not rotate continuously like DC/AC mo[...]
Interfacing character LCD to AVR
In this tutorial, we will be interfacing a HD44780 character LCD. Although as an alternative you can[...]
Accelerometer Interfacing with AVR
The article covers how to interface an accelerometer with the atmega32/atmega16. Before proceeding, [...]
Interfacing seven segment with Atmega32 (AVR series)
A seven segment display is a set of seven bar-shaped LED (light-emitting diode) elements, arranged t[...]
All you need to know about AVR fuses
AVR lock bits and fuses is one of the topics that may cause some confusion. If you missed something [...]
Programming AVR I2C interface
I2C (also referred as IIC or TWI) is widely used interface in embedded applications. Two wire bus in[...]
Serial peripheral interface in AVR microcontrollers
Serial Peripheral Interface (SPI) is fastest synchronous communication interface allowing data trans[...]
ADC on Atmega328. Part 2
After we've learned how to performs simple ADC conversions on AVR microcontroller we can move forwar[...]
ADC on Atmega328. Part 1
Microcontrollers are meant to deal with digital information. They only understant '0' and '1' values[...]
Using Standard IO streams in AVR GCC
In previous tutorial we learned how to transmit data over USART. By using simple functions we can se[...]
Programming AVR USART with AVR-GCC. Part 2
In previous part of USART tutorial we have discussed about simplest way of implementing USART transm[...]
Programming AVR USART with AVR-GCC. Part 1
AVR USART tutorial is gonna be multi-part tutorial as this peripheral is quite complex device and ne[...]
Using watchdog timer in your projects
All AVR microcontrollers have internal watchdog timer that can be successfully used in your projects[...]
Accessing AVR EEPROM memory in AVRGCC
AVR microcontrollers have some amount of EEPROM memory on chip. For instance Atmega328 has 1K of byt[...]
Store constants and arrays in program memory
In many cases our embedded projects have to deal with various constants or arrays that aren't change[...]
When your project grows bigger
Until now we used pretty simple program examples where all code fit in to single file and didn't loo[...]
AVR Timer2 asynchronous mode
We have almost gone through main modes of AVR timers. It is impossible to review them all in more de[...]
Programming 16 bit timer on Atmega328
Atmega328 has one 16 bit timer which is more powerful comparing to 8 bit timers. 16 bit timer is c[...]
8-bit Timer/Counter0 operation modes.Part2
Previously we have revealed only two Timer/Counter0 modes: Normal and CTC. So far thre are couple mo[...]
8-bit Timer/Counter0 operation modes.Part1
As our selected Atmega328 microcontroller has three timers, I think it is best to analyze them separ[...]
AVR timers do more than count time
Probably Timer/Counters are complex peripherals in microcontrollers, but as fact they are most commo[...]
Implementing AVR interrupts
Before we go to the code part lets what is needed in order to run interrupts successfully. These con[...]
Basic understanding of microcontroller interrupts
Earlier I've made a mistake by referring this tutorial to older AVR family microcontrollers like Atm[...]
Controlling AVR I/O ports with AVR-GCC
Controlling pins is one of the first things to learn when learning microcontrollers. It seems that e[...]
Setting up AVR development platform
You can be encouraged to use various types of AVR development tools. Most of them cost money to get [...]
Choosing AVR programmer
As we talked earlier there are many AVR programmers to choose. The simplest ones are bitbang program[...]
Things needed before you learn AVR
There are several things you need to do before learning AVR. First of all you need an AVR chip. Bett[...]
AVR at a glance
Any AVR microcontroller is an 8 bit computer in a chip designed and manufactured by ATMEL Corporatio[...]
AVR tutorial. Initial word
AVR family is one of the leading 8 bit microcontrollers in its family. There are many reasons why ma[...]
Author: Mindaugas Marozas