Всем добрый день! Помогите плиз с АЦП. У меня такая задача (думаю, что простая) : мне нужно зажигать 2 светодиода на порту D по изменению напряжения на аналоговом входе. Схема собрана так: к входу ADC0 подключен подвижный контакт переменника, включенного между питанием +5Вольт и землей, AREF и AVCC соединены и подключены к +5 вольт. На 4 и 5 линиях порта D светодиоды (с ними все ОК, я их программно зажигал, чтоб проверить). В общем нашел в книжке программу, но она не работает. Т.е. кручу резистор туда-сюда, светодиоды не загораются
Помогите чайнику, плиз
Код:
#include <avr/io.h>
#include <avr/interrupt.h> // доступ к функции sei
#include <avr/signal.h> // доступ к макросу interrupt
INTERRUPT(SIG_ADC) // обработчик прерыв-я от АЦП
{
unsigned int ADCdata; // буф переменная хранения
ADCdata = ADCW; // результата преобразования
if (ADCdata > (2046 / 5)) PORTD = 0b00001000; // если U>2 вольт, то вкл светодиод на 4 ножке порта D
else PORTD = 0b00010000; // иначе, если U<2 вольт на 5 ножке порта D
ADCSR = ADCSR l 0x40; // устанавливаем разряд adsc в регистре ADCSR чтоб начать новое преобразование
}
int main (void)
{
DDRD = 0xff ; // все ножки порта D выходы
ADMUX = 0b00000000; //назначаем в качестве аналог. входа
ADCSR = 0b11001110; // активизируем АЦП с коэф деления 64, разрешаем прерывание от АЦП и начинаем преобразование
sei(); // общее разрешение прерываний
while(1); //бесконечный цикл в ожидании прерываний от АЦП
}
Модератор "Digit":Листинги программ вставляются тегом [ CODE ]