Programming AVR I2C interface
I2C interface (also referred to as IIC or TWI) is a widely used interface in embedded applications.[...]
Use fixed integer types to enhance portability
If you have programmed anything with C, you should be familiar with common data types like char, un[...]
Using Volatile keyword in embedded code
Volatile is probably the least documented keyword in most tutorials and books. This is the primary [...]
Interfacing GPS Module with AVR
GPS modem is a device which receives signals from satellites and provides information about latitud[...]
Software Debouncing of buttons
Connecting a button as an input to a microcontroller 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 [...]
Interfacing matrix keyboard with AVR
The keypad is the most widely used input device to provide input from the outside world to the micr[...]
Sensing Temperature Using AVR
In this new tutorial, we will be interfacing an LM35-based temperature sensor with ATMEGA32. The th[...]
Interfacing Ultrasonic Rangefinder with AVR
In this tutorial, we are going to interface ultrasonic rangefinder with the all-popular ATMEGA8. An[...]
Interfacing analog Joystick with AVR
In this tutorial, we are going to learn something interesting which is already sued by many people [...]
Interfacing shift register with AVR
The shift register is one of the vital things to learn while designing an embedded system. One can [...]
Controlling servo motor with AVR
Servo motors are a type of electromechanical actuators that do not rotate continuously like DC/AC m[...]
Interfacing character LCD to AVR
In this tutorial, we will be interfacing an HD44780 character LCD. Although as an alternative, you [...]
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 are one of the topics that may cause some confusion. If you missed somethin[...]
Serial peripheral interface in AVR microcontrollers
Serial Peripheral Interface (SPI) is the fastest synchronous communication interface allowing data [...]
ADC on Atmega328. Part 2
After we've learned how to perform 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 understand '0' and '1' value[...]
Using Standard IO streams in AVR GCC
In the previous tutorial, we learned how to transmit data over USART. By using simple functions, we[...]
Programming AVR USART with AVR-GCC. Part 2
In the last part of the USART tutorial, we discussed the most straightforward way of implementing U[...]
Programming AVR USART with AVR-GCC. Part 1
AVR USART tutorial will be a multi-part tutorial as this peripheral is a sophisticated device and n[...]
Using watchdog timer in your projects
All AVR microcontrollers have an internal watchdog timer that can be successfully used in your proj[...]
Accessing AVR EEPROM memory in AVRGCC
AVR microcontrollers have some amount of EEPROM memory on-chip. For instance, Atmega328 has 1K of b[...]
Store constants and arrays in program memory
In many cases, our embedded projects have to deal with various constants or arrays that aren't chan[...]
When your project grows bigger
Until now, we used pretty simple program examples where all code fit into a single file and didn't [...]
AVR Timer2 asynchronous mode
We have almost gone through main modes of AVR timers. It is impossible to review them all in more d[...]
Programming 16 bit timer on Atmega328
Atmega328 has one 16 bit timer, which is more powerful comparing to 8-bit timers. A 16-bit timer is[...]
8-bit Timer/Counter0 operation modes. Part2
Previously we have revealed only two Timer/Counter0 modes: Normal and CTC. So far, there are a coup[...]
8-bit Timer/Counter0 operation modes.Part1
As our selected Atmega328 microcontroller has three timers, I think it is best to analyze them sepa[...]
AVR timers do more than count time
Timers/Counters are probably one of the most complex peripherals in microcontrollers, but they are [...]
Implementing AVR interrupts
Before we go to the code part, let's what is needed to run interrupts successfully. These condition[...]
Basic understanding of microcontroller interrupts
This tutorial is based on Atmega328 microcontroller, which is popular in Arduino boards. So you'll [...]
Controlling AVR I/O ports with AVR-GCC
Controlling pins is one of the first things to learn when learning microcontrollers. It seems that [...]
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
There are many AVR programmers to choose from. The simplest ones are bitbang programmers. These are[...]
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. Yo[...]
AVR at a glance
Any AVR microcontroller is an 8-bit computer in a chip designed and manufactured by ATMEL Corporati[...]
AVR tutorial. Initial word
AVR family is one of the leading 8-bit microcontrollers in its family. There are many reasons why m[...]