Тини15, вопросы по использованию АЦП (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Misha190E 07 марта 2005 г. 19:54

Тини15 измеряет два сигнала от датчиков и передает это дело в комп через RS232, код выглядит так:

ADCSR=0x94;
....
do { вечный цикл
// измеряем датчик давления
ADMUX=0x23; // 00100011 VCC+ADC3
ADCSR|=BIT(ADSC); // start ADC
do ; while( ! (ADCSR&BIT(ADIF)) );
asm("nop"); // нуна подождать один такт по доке
iMAP = ADCH;
// измеряем датчик2
ADMUX=0x22; // 00100010 VCC+ADC2
ADCSR|=BIT(ADSC); // start ADC
do ; while( ! (ADCSR&BIT(ADIF)) );
asm("nop");
iSig = ADCH;
....
отправляем данные
....
НЕОПРЕДЕЛЕНАЯ задержка (5-60 мс)
} while (1);

Есть проблемы с измерением первого датчика (такое ощущение что АЦП ошибается при оцифровке), так вот я нигде не нашел НУЖНО ЛИ вводить ЗАДЕРЖКУ после переключения канала АЦП (т.е. установки регистра ADMUX) ???? если нуна, то какую?
в каких-то примерах в инете делают задержку, где-то нет, вот и не пойму, стоит ли грешить на это дело или нет?

И еще вопрос - допустим я хочу измерять один канал с некой частотой, допустим 2 кГц. Я должен запустить АЦП на постоянную работу, но вот непойму в какой момент читать результат - в любой или надо ждать ADIF? а надо ли его сбрасывать после чтения результата или как????

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru