Нашел в Интернете простой код для управления 2 светодиодами с помощью АЦП.
К порту РС0 atmega8 подключен переменный резистор и второй конец резистора идет к +5в
2 светодиода подсоединение с портами PD4,PD5
При 5в горит один светодиод,а когда напряжение падает ниже2в горит уже другой светодиод
Но код у меня не заработал
Смотрел по datasheet-у регистры вроде настроены правильно
Вот код
CODE:#include <avr/io.h>
#include <util/delay.h>
#include <avr/iom8.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
#define F_CPU 16000000UL // 8 MHz
SIGNAL(SIG_ADC) // обработчик прерыв-я от АЦП
{
unsigned int ADCdata; // буф переменная хранения
ADCdata = ADCW; // результата преобразования
if (ADCdata > (2046 / 5) ) PORTD = 0b00001000; // если U>2 вольт, то вкл светодиод на 4 ножке порта D (2046 / 5)
else PORTD = 0b00010000; // иначе, если U<2 вольт на 5 ножке порта D
ADCSR = 0b10000000;; // устанавливаем разряд adsc в регистре ADCSR чтоб начать новое преобразование
}
int main (void)
{
DDRD = 0xFF ; // все ножки порта D выходы
ADMUX = 0b00000000; //назначаем в качестве аналог. входа
ADCSR = 0b11001110; // активизируем АЦП с коэф деления 64, разрешаем прерывание от АЦП и начинаем преобразование
sei(); // общее разрешение прерываний
while(1); //бесконечный цикл в ожидании прерываний от АЦП
}
Пожалуйста помогите найти ошибку
Если надо вот весь проект
Скачать файл: ADC.rarСкачан раз: 292 |