/*******************************************************************
Title: Работа с АЦП на микроконтроллере AVR
Сopyright: myROBOT, http://myrobot.ru
Date: апрель 2011
Software: AVR-GCC (WinAVR)
Hardware: ATmega8, 1 MHz
Description:
Пример демонстрирует считывание аналогового сигнала на линии ADC3
и вывод результата на индикатор из 8-ми светодиодов, подключенных
к порту D.
Аналоговый сигнал можно получить, подключив фототранзистор
к выводу PC3.
*******************************************************************/
#include <avr/io.h>
#include <avr/delay.h>
int main (void){
// инициализация портов
DDRC=0x00;
PORTC=0b11111111;
DDRD=0xFF;
PORTD=0xFF;
// инициализация АЦП
ADCSR = 0b10000011; // ADEN=1 (7-й бит); ADPS2..0=011;
ADMUX = 0b000011; // MUX4..0=ADC3 (00011);
while(1) {
ADCSR |= _BV(ADSC); // запуск преобразования
loop_until_bit_is_set(ADCSR,ADSC); // ждем, пока не
// будет сброшен ADSC
_delay_us(1); // ждем обновления регистра данных
PORTD = 1<<(ADCW/128); // выводим результат на индикатор
// из 8-ми светодиодов,
// подключенных к порту D
}
}