roboforum.ru

Технический форум по робототехнике.

АЦП на атМега16

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

АЦП на атМега16

Сообщение Alximik » 13 сен 2006, 13:55

Доброго времени суток всем.
Люди посмотрите пожалуйста. Я написал следующий код, который должен выполнять двойной опрос АЦП с интервалом 5-10 секунд, и вывод данных на ЖК дисплей.

#include <mega16.h>
#include <delay.h>
#include <stdio.h>
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#include <lcd.h>
#include <math.h>
char lcd_buffer1[31];
char lcd_buffer2[31];
unsigned int res1;
unsigned int res2;
void main(void){
lcd_init(16);
lcd_gotoxy(0,0);
lcd_putsf("Gas sensor");
lcd_gotoxy(0,1);
lcd_putsf("Presentation");
delay_ms(10);
lcd_clear();
ADMUX=0b11001101;
ADCSRA=0b11011111;
res1=ADCW;
sprintf(lcd_buffer1,"ADC1=",res1);
lcd_gotoxy(0,0);
lcd_puts(lcd_buffer1);
delay_ms(10000);
ADCSRA=0b11011111 ;
res2=ADCW;
sprintf(lcd_buffer2,"ADC2=",res2);
lcd_gotoxy(0,1);
lcd_puts(lcd_buffer2);
while (1){
}
}

Но он почему-то вызывает ошибку. При выполнении АЦП преобразования в регистре SREG появляется следующее значение
00XXXXXX и программа прерывается. :roll:
Гляньте свежим взглядом...
Аватара пользователя
Alximik
 
Сообщения: 23
Зарегистрирован: 25 авг 2006, 10:28
Откуда: Slavutich

Сообщение avr123.nm.ru » 13 сен 2006, 15:18

ошибку где ?
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Сообщение Alximik » 13 сен 2006, 15:31

Ошибку выбрасывает при симуляции в ВМ Лабе...пишет что-то вроде
Неопределенное состояние регистра SREG
Происходит это как при первом обращении к ADCSRA так и при втором. Если возможно гляньте на код, может я где-то нахомутал
:roll:
Аватара пользователя
Alximik
 
Сообщения: 23
Зарегистрирован: 25 авг 2006, 10:28
Откуда: Slavutich

Сообщение avr123.nm.ru » 13 сен 2006, 16:12

вы приложите архив с проектом в VMLAB
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Сообщение avr123.nm.ru » 13 сен 2006, 16:14

а как вы определяете окончание АЦП ?

посмотрите пример АЦП в компиляторе.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Сообщение Alximik » 13 сен 2006, 17:54

Возможно буду не прав...
Но разве после выполнения строки "ADCSRA=0b11011111;"
АЦпреобразование не прекращается???
И еще чего хотел спросить.
Задержка в 230-250 мс. от запуска программы до начала вывода символов на ЖК - это нормально или то же какая-то ошибка в коде?
Вложения
ADC_mega16.zip
Собственно прожект.
(40.96 КиБ) Скачиваний: 85
Аватара пользователя
Alximik
 
Сообщения: 23
Зарегистрирован: 25 авг 2006, 10:28
Откуда: Slavutich

Сообщение avr123.nm.ru » 14 сен 2006, 12:59

Лучше ждать флага окончания АЦП чтоб точно знать что оно окончилось.

Посмотрите примеры в CVAVR и VMLAB
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8


Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: Bing [Bot] и гости: 22