Ревич, Ю.В. Программирование микроконтроллеров AVR: от Arduino к ассемблеру
Глава 1 1 . Аналоговый компаратор и АЦП Тогда прерывание таймера будет значительно короче (листинг 1 1 . 8) . TIMO_OVF : ; 2 4 4 герца inc countCyk cpi countCyk , 2 4 4 breq readADC ; каждую секунду читаем reti ; иначе выход readADC : reti clr countCyk ldi ZL , Low ( SRAМ_START ) ;млаЩШ1Й байт адреса RАМ ld temp , Z+ ; загрузка из памяти - старший rcall out com ; посылаем во внешний мир старший ld temp , Z ;младший rcall out com ; посылаем во внешний мир млаЩШ1Й 3 1 7 Здесь оно посылает данные через UART раз в секунду просто для упрощения кода. В реальных задачах, конечно, можно это делать и реже, и чаще - вплоть до часто ты 1 50 герц. Можно даже еще ускорить, если это зачем-то потребуется, просто уменьшив количество значений для осреднения . Прерывание АПЦ мешать таймеру не будет, т. к. длится несколько микросекунд в сравнении с четвертью миллисекун ды между прерываниями таймера, и в худшем случае прерывание таймера просто отложится на эти микросекунды. А вот долгая процедура вывода через UART, длящаяся около 2 мс, конечно, заста вит контроллер терять прерывания АЦП. Передачу значений через UART можно, как уже говорилось, облегчить, если воспользоваться прерыванием, но в этом месте могут стоять другие длительные процедуры : перевод в физические величины (см. далее) и затем в распакованные ВСD-значения для индикации, запись во внеш нюю память или EEPROM и т. д. В любом случае - ну, потеряем десяток-другой прерываний, и что, если их частота для нас все равно избыточна? Главное, что при этом измерения не собьются, т. к. в потерянных прерываниях ничего не происхо дит, даже АЦП на выполнение лишний раз не запускается . Можно даже включить непрерывный режим преобразований, как в предыдущем разделе, но это уже при том условии, что за �400 тактов основной частоты (� 1 00 мкс - столько занимает преобразование при коэффициенте 1 : 32, поскольку 1 3 · 32 = 4 1 6) вы успеете обра ботать очередные результаты, т. е. не станете внутри прерывания АЦП выполнять те длительные процедуры, о которых мы говорили ранее. Изложенные схемы использования АЦП можно сколько угодно модифицировать и усложнять. Например, подключение датчика атмосферного давления МРХ4 1 1 5АР, который выдает, согласно спецификации, 4,69 вольта при предельном для него зна чении давления 1 1 5 кПа (874 мм рт. ст.) следует производить при напряжении пи тания 5 вольт в качестве опорного. Примерно такую же величину (около 4 вольт) выдает на выходе аналоговый датчик влажности HIH-4000 при максимальном зна-
Made with FlippingBook
RkJQdWJsaXNoZXIy MTExODQxMg==