Ревич, Ю.В. Программирование микроконтроллеров AVR: от Arduino к ассемблеру
Глава 1 1 . Аналоговый компаратор и АЦП 299 СОМР О : sbi PortB , 0 ; включаем LED reti ; выход из процедуры компаратора Как вы убедились на примере этой программы, не всегда простота кода подразуме вает простоту схемотехнического решения . В программе даже не задействовано ни одного РОН, кроме необходимого временного регистра temp для начальных устано вок! Зато нам пришлось тщательно продумывать каждый узел схемы, прежде чем перейти к собственно написанию программы, которая в результате имеет объем всего 46 байтов полезного кода (но занимает в памяти 80 из-за инструкции . org INT_VECTORS_S I ZE ) . Мало того, мы можем упростить программу предельно, если перепишем ее в Arduino-cтилe безо всяких прерываний (листинг 1 1 . 3) . Это тот случай, когда принципы только мешают, - ведь событие исчерпания ресурса батарейки про изойдет хорошо, если раз в год, и если его обнаружение отложится на несколько миллисекунд от того, что в это время обрабатывается какое-то длинное прерыва ние, мир определенно не рухнет. ; Программ а слежения за напряжением резервной батарейки . include "mBdef . inc " . de f temp = r l б ldi temp , ObO O O O O O O l ; PortB . О - Output out DDRВ , temp ldi temp , ( l<<ACBG ) ; подключение внутреннего ИОН out ACSR, temp Gcykle : Setb 1 : sbis ACSR, ACO ; если бит АСО =1 то сброс LED r jmp Setb_l ; иначе на установку LED cbi PortB , 0 ; сбрасываем LED rjmp Gcykle sbi PortB , 0 ; включаем LED rjmp Gcykle Правда, на этом наши мучения еще не заканчиваются : систему надо проверить и откалибровать. Для этого подключите временно вместо батареи регулируемый ис точник или просто движок потенциомера сопротивлением 1 кОм, подсоединенного к внешнему источнику 5 В. Покрутите напряжение, имитирующее батарею, в пре делах 2-4 вольт - светодиод должен гаснуть и загораться . Точно поймайте момент переключения при убывании напряжения и измерьте его величину (лучше это сде лать несколько раз и вычислить среднее) . Рассчитайте точное значение резистора RЗ , замените его (возможно, придется его составить из нескольких резисторов, т. к.
Made with FlippingBook
RkJQdWJsaXNoZXIy MTExODQxMg==