Ревич, Ю.В. Программирование микроконтроллеров AVR: от Arduino к ассемблеру
Глава 1 1 . Аналоговый компаратор и АЦП 313 пересчитать режим таймера и задать другие коэффициенты частоты АЦП в соот ветствии с табл. 1 1 . 1 . В соответствии с процедурами динамической индикации ТimerO у нас работает с частотой 244 герца. Чтобы обеспечить частоту измерений около 20 Гц, надо их проводить примерно каждое 1 2-е прерывание переполнения . Создадим сначала проверочную программу (листинг 1 1 . 5), которая будет выдавать результат через UART на компьютер (перед тем, как подключать адаптер UART, прочтите соответ ствующий раздел в главе 15) . ; Тестовая программа АЦП с усреднением ; кварц 4 МГц . device AТmega8 535 . include "m8 53 5def . inc " ; ==== переменные ==== . def AregH = rl ; результат измерения , старший байт . def AregL = r2 ; результат измерения , младший байт . def temp = rl 6 ; рабочий регистр . def countCyk = rl В ; счетчик прерываний - до 12 . def count 6 4 = r1 9 ; счетчик преобразований - до 64 ; ==== прерывания rjmp RESET . org OVFOaddr rjmp TIMO OVF ; переполнение таймераО . org INT_VECTORS_S I ZE ; Конец таблицы прерываний - начало кода out com: ; посылка байта из temp с ожид . готовности ret sbi s UCSRA, UDRE ; ждем ГОТОВНОСТИ буфера передатчика r jmp out com out UDR, temp TIMO OVF : inc countCyk cpi countCyk , 1 1 breq readADC ; 12-е прерывание , читаем reti ; иначе выход readADC : clr countCyk inc count 64 cpi count 64 , 64 ; если пpoIILЛo 6 4 чтения, то сразу на обработку breq endADC in tеmр, АDСL ; получаем младший ADC add AregL , temp ; сумми руем
Made with FlippingBook
RkJQdWJsaXNoZXIy MTExODQxMg==