|
Тини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