Ревич, Ю.В. Программирование микроконтроллеров AVR: от Arduino к ассемблеру

48 Часть 1. Общие принципы устройства и функционирования Atтel АVR Кроме того, 1 6-разрядные счетчики имеют возможность осуществлять «захват» (capture) внешних одиночных импульсов на специальном выводе . При этом может вызываться прерывание, а содержимое счетчика помещается в некий регистр . Сам счетчик при этом может обнуляться и начинать счет заново или просто продолжать счет. Такой режим удобен для измерения периода внешнего сигнала или для под­ счета неких нерегулярных событий (вроде прохождения частиц в счетчике Гейге­ ра) . Немаловажно, что источником таких событий может быть также встроенный аналоговый компаратор. Как минимум, 1 6-разрядные счетчики-таймеры в семействе Mega допускают работу в различных режимах PWM, т. е. в качестве 8-, 9-, 1 О- или 1 6-битовых широтно­ импульсных модуляторов (ШИМ) . Если допускающих такие режимы таймеров не­ сколько, то они будут работать независимо друг от друга, что позволяет осуществ­ лять многоканальную ШИМ. В технической документации этим режимам в силу их сложности, многовариантности и громоздкости посвящено много страниц. В отно­ шении удобства реализации ШИМ платформа Arduino с ее единственной функцией analogWrite ( ) , конечно, кроет ассемблер по всем статьям - если не считать того, что в реальности от упомянутых режимов можно получить гораздо больше, чем позволяет эта функция . ШИМ, в связи с легкостью ее реализации в интегрирован­ ных счетчиках контроллеров, а также с появлением в последние десятилетия деше­ вых, надежных и простых ключей на МОП-транзисторах, - чрезвычайно модная тема в современной схемотехнике, и мы ей отведем надлежащее время в дальней­ шем изложении . Кроме таймеров-счетчиков, во всех без исключения АVR-контроллерах есть сто­ рожевой (Watchdog) таймер. Он предназначен в основном для вывода МК из режи­ ма энергосбережения через определенный интервал времени, но может служить и для просто аварийного перезапуска МК, - так, если работа программы зависит от прихода внешних сигналов, то при их потере (например, из-за обрыва на линии) МК может «повиснуть», а Wathcdog-тaймep выведет его из этого состояния . Под­ робнее о сторожевом таймере рассказано в главе 14. Аналого-цифровой п · реобразователь Многоканальный АЦП входит в большинство современных моделей МК АVR: практически во все Mega и в некоторые Tiny. Число каналов, обычно привязанных к выводам порта А или С, зависит от числа выводов корпуса и в разных моделях может варьировать от 4 каналов в младших моделях семейства Tiny до 6 каналов в ATmega8 в DIР-корпусе и 8 каналов в 40-выводном корпусе ATmega85 3 5 . Есть и модели специального назначения с экстремально большим количеством каналов АЦП- например, 28 каналов в АTtiny828 . Многоканальность означает, что на входе единственного модуля АЦП установлен аналоговый демультиплексор, кото­ рый может подключать этот вход к различным выводам МК для осуществления измерений нескольких независимых аналоговых величин с разнесением во време­ ни. Входы демультиплексора могут работать по отдельности (в несимметричном режиме для измерения напряжения относительно «землю>) или (в некоторых моде-

RkJQdWJsaXNoZXIy MTExODQxMg==