роботы робототехника микроконтроллеры


 Страниц (1): [1]   

> Описание: Не работает программа
alex91 Post Id



Маршал


Сообщений всего: 126
Дата рег-ции: Сент. 2010  



Нашел в Интернете простой код для управления 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
 
 Top
Dimsan Post Id


Рядовой


Сообщений всего: 11
Дата рег-ции: Июль 2009  



Код простой, но с ошибками
ADCSR = 0b10000000;; // устанавливаем разряд adsc в регистре ADCSR чтоб начать новое преобразование
1) 7-й бит (ADEN) - разрешение АЦП (включение АЦП). Он устанавливается в самом начале программы.
6-й бит (ADSC) - запуск преобразования. Именно его нужно выставлять в 1 после каждого преобразования.
2) ADCSR = 0b10000000 - Изменяются все биты (вместо одного). АЦП придётся заново конфигурировать.
Правильно написать:
ADCSR = ADCSR | 0b01000000;
И 3) В меге8 можно выставить режим непрерывного преобразования. Для этого, на этапе конфигурирования нужно записать 1 в 5-й бит в регистре ADCSR.
 
 Top
alex91 Post Id



Маршал


Сообщений всего: 126
Дата рег-ции: Сент. 2010  



Dimsan по вашем советам подправил прошивку и заработало спасибо
Вот кому нужно проект в AvrStudio
Светодиоды на порте PD3,PD4.Резистор на порте PC0 и идет к питанию
Скачать файл: ADCtest.rar
Скачан раз: 362

(Отредактировано автором: 29 Апреля, 2011 - 22:45:56)

 
 Top
Страниц (1): [1]
« Программирование микроконтроллеров »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 





Powered by Exclusive Bulletin Board
ExBB FM 1.0 RC1 Smiles by Fool from Foolstown
  Яндекс.Метрика   Рейтинг@Mail.ru