Accelerometer Interfacing with AVR

ADXL335 size

The article covers how to interface an accelerometer with the atmega32/atmega16. Before proceeding, the user must know the basics of ADC (Analogy to digital converter) of the AVR. An accelerometer is an electromechanical device that will measure acceleration forces. These forces may be static, like the constant force of gravity pulling at your feet, or they could be dynamic – caused by moving or vibrating the accelerometer. Accelerometers are of two types Analog and Digital. In this post, we will be discussing Analog accelerometer. They give voltage as output which is proportional to acceleration. The digital one gives the PWM output or direct binary digital data Continue reading

Interfacing seven segment with Atmega32 (AVR series)

seven_segment_display

A seven segment display is a set of seven bar-shaped LED (light-emitting diode) elements, arranged to form a squared-off figure 8. It’s also the most common, simple-to-use and cheap display. The pin configuration is as follows: There are two types of Seven Segment display available in the market: Continue reading

All you need to know about AVR fuses

avr crystal oscillator

AVR lock bits and fuses is one of the topics that may cause some confusion. If you missed something or set one bit wrong, it may lead to failure – bricking whole AVR chip. So it is important to understand once and do things right. Despite the fact that datasheets give enough information about AVR fuses, many times we feel somewhat unsure before executing write command. Lets go through main features of AVR fuses and lock bits so next time we would feel safe and get expected results. Continue reading

Programming AVR I2C interface

I2C (also referred to IIC or TWI) is a widely used interface in embedded applications. Two wire bus initially was used by Philips and become a standard among chip vendors. I2C bus consists of two lines called Serial Data Line (SDA) and Serial Clock Line (SCL). Communication is relatively fast, and short distance mainly used to communicate between sensors, RTC, EEPROM, LCD. I2C protocol allows up to 128 devices connected to those two lines where each of them has a unique address. Communication between devices is master and slave based. Master generates a clock signal, initiates and terminates data transfer. From electrical point of view I2C devices use open drain (open collector) pins. In order to operate correctly SDA and SCL lines require pull up resistors. Typically 4.7kΩ resistors are… Continue reading

Serial peripheral interface in AVR microcontrollers

Serial Peripheral Interface (SPI) is the fastest synchronous communication interface allowing data transfer speeds up to half of the core clock. If AVR microcontroller is clocked at 16MHz then SPI clock may reach 8MHz in master mode. SPI communication interface is standard way to talk to other peripherals around MCU like flash, EEPROM, sensors and even other microcontrollers. Generally speaking, devices communicate over SPI interface using four wires MISO (Master In Slave out), MOSI (Master Out Slave In), SCK (synchronization clock) and SS (Slave Select). Usually, if only one slave device is used SS line is omitted while slave chip select pin is connected to the GND. However, this is a particular case in all other cases SS pin has to be controlled manually in software – this isn’t handled… Continue reading

ADC on Atmega328. Part 2

After we’ve learned how to performs simple ADC conversions on AVR microcontroller we can move forward with more complex tasks. AVR ADC module has many useful features that make conversions more robust without occupying MCU resources. Imagine that we need to sample analog waveform or audio signal. It has to be done precisely at defined sampling frequency like 20kHz. The only way to do this correct is to use auto-triggering with exact time intervals. Why not to pass counting task to timer? Lets write Timer0 auto-triggered ADC conversions with ADC complete interrupt service routine. Continue reading