Ревич, Ю.В. Программирование микроконтроллеров AVR: от Arduino к ассемблеру
254 Часть 111. Практическое программирование микроконтроллеров АVR out PortB, temp reti ; выход SetЗ : ; если не О , 1 или 2 , значит 3 sbr temp , 8 ; устанавливаем разряд РВЗ out PortB , temp ret i ; выход - конец прерывания Обратите внимание, что устанавливать непосредственно нужный бит в Portв командой sЬi здесь нельзя - нам надо обнулить все остальные, потому приходится использовать маску, приложенную к обычному регистру temp через команду sbr (см . разд. «Команды сдвига и операции с битами» главы 7). Как видите, получается не так уж и громоздко - сама операция подсчета времени в часах (см. листинг 9 . 5) была сложнее . Но если вы вдруг захотите перенести это решение в Arduino, его все равно следует разместить в прерывании - нельзя по зволить, чтобы еще что-то серьезное вклинивалось в эту процедуру, достаточно длинная пауза на почти любом этапе может привести к видимым на глаз сбоям в индикации. ПОДРОБНОСТИ У вас непременно возникнет вопрос: нельзя ли подобным образом подключить ЖК дисплей? Большинство ЖК-дисплеев на прилавках имеют встроенный контроллер, ко торый обычно много потребляет и тем самым в значительной степени сводит на нет главное преимущество ЖК-дисплеев - малое потребление. ЖК-дисплеи , лишенные контроллера , потребляют исключительно мало - микроамперы или даже доли микро ампер, и на их основе можно делать круглосуточно включенные приборы с батарей ным питанием. Но управляются они сложнее, чем LЕО-индикаторы, и напрямую орга низовать динамическую индикацию в них нельзя , т. к. общим выводом всех сегментов служит единая подложка . Описание проблемы , а также один из вариантов управления ЖК-индикатором без встроенного контроллера представлены, например, в статье (21 ] . Другой вариант мы рассмотрим в главе 1 3 - экономичный ЖК-дисплей с семисег ментными цифрами, управляющийся по 1 2 С-интерфейсу. Таймеры в режиме ШИМ Областей применения таймеров в режиме широтно-импульсной модуляции (по английски - PWM, Pulse-Wide Modulation) множество, и, соответственно, в МК АVR таких режимов тоже более чем достаточно, и различаются они способами обеспечения ШИМ, разрядностью и другими нюансами (есть режимы, где число разрядов задано жестко, а есть такие, когда разрядность определяет содержимое регистра «захвата»). Перебирать все на этот счет подробности мы, естественно, не станем - в описаниях контроллеров, а также в литературе различные варианты ШИМ достаточно подробно представлены (рекомендую, например, [2], где режимы ШИМ описаны довольно-таки внятно, хотя пример там приведен не слишком удач ный). По сути, ШИМ представляет собой один из вариантов аналого-цифрового или циф роаналогового преобразования . В аналоговом варианте преобразование синусои дального сигнала в ШИМ-последовательность и обратно в синусоиду схематически
Made with FlippingBook
RkJQdWJsaXNoZXIy MTExODQxMg==