xBoard v2.0
Easy to Use learning and development tool for Atmel AVR family of MCUs.
Every AVR MCU has several internal peripherals that provide powerful abilities to your projects. For example internal ADC can be used to convert analog value (say voltage output of some sensor) to a digital value that you can use. And a USART(Universal Synchronous Asynchronous Receiver Transmitter) can be used to connect your MCU with PC. (Example use - A PC serial mouse or A PC controlled Toy Rocket Launcher). This tutorial gives you overview of the process used to interface with these peripherals.
Now you know the basics of peripherals, lets see what peripherals are available in ATmega32(or ATmega16) MCU.
Using internal peripherals of AVR MCUs. |
A peripheral is connected to MCU by some special registers. The different
registers of any peripherals can be logically of two types-
1)Data registers – which usually contains some data,
say byte received from USART or data just read from internal EEPROM.
2)STATUS and CONTROL register – these are used to
configure the peripheral according to your need, and to control them from
your program. For example the ADMUX register has following bits.
REFS1 | REFS0 | ADLAR | MUX4 | MUX3 | MUX2 | MUX1 | MUX0 |
The ADC (analog to digital converter) has 8 input channels. Any one these
can be selected by setting the MUX2-MUX0. To select ADC channel 0 set them
to 000. Alternatively, to select channel 4 set them to 100(decimal 4)
and so on.
As we saw that you can use the STATUS registers to see the what the peripheral
has to say to the CPU, like it has just completed the conversion Analog
value to digital and the data is ready. But in this way you have to constantly
poll the registers. But one more advance feature is INTERRUPTs. Where the
peripheral halts the CPU whenever it has something interesting. Then the
CPU will jumps to a function called ISR (interrupt service routine) which
is provided by you.
You can configure which events should interrupt the CPU and also provide
the ISR.