roboforum.ru

Технический форум по робототехнике.
Текущее время: 03 июн 2025, 04:03

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: АЦП на атМега16
СообщениеДобавлено: 13 сен 2006, 13:55 
Не в сети
Аватара пользователя

Зарегистрирован: 25 авг 2006, 10:28
Сообщения: 23
Откуда: Slavutich
Доброго времени суток всем.
Люди посмотрите пожалуйста. Я написал следующий код, который должен выполнять двойной опрос АЦП с интервалом 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:
Гляньте свежим взглядом...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 13 сен 2006, 15:18 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
ошибку где ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 13 сен 2006, 15:31 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 13 сен 2006, 16:12 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
вы приложите архив с проектом в VMLAB


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 13 сен 2006, 16:14 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
а как вы определяете окончание АЦП ?

посмотрите пример АЦП в компиляторе.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 13 сен 2006, 17:54 
Не в сети
Аватара пользователя

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


Вложения:
Комментарий к файлу: Собственно прожект.
ADC_mega16.zip [40.96 КиБ]
Скачиваний: 85
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 14 сен 2006, 12:59 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Лучше ждать флага окончания АЦП чтоб точно знать что оно окончилось.

Посмотрите примеры в CVAVR и VMLAB


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 4 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO