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

Глава 2. Общее устройство, организация памяти, тактирование, сброс 37 А в других случаях значения могут быть сильно различаться — например, у «лю- бимого» ардуиновского ATmega328 (как и его аналогов с меньшим объемом памя- ти Mega88 и Mega168) доступна только одна встроенная частота 8 МГц, зато есть некоторые модели (весьма редкие), у которых встроенный генератор может рабо- тать на частоте 20 МГц и на «часовой» частоте 32,768 кГц. Обратите внимание, что у многих контроллеров при тактировании от встроенного генератора выводы XTAL1 и XTAL2 могут использоваться как дополнительные выводы обычных портов. У ATtiny2313, например, это два вывода в остальном от- сутствующего порта A (PA0 и PA1), у ATmega8 — дополнительные выводы порта B (PB6 и PB7) и т. д. Особенно выгодно это использовать у младших Tiny с малым количеством контактов корпуса. На практике следует ожидать, что у всех моделей, вне зависимости от частоты ге- нератора, тактовая частота «чистого» кристалла по умолчанию будет равна 1 МГц . Дело в том, что даже у тех контроллеров, у которых частота встроенного генератора не может быть установлена равной 1 МГц (ATtiny2313, ATmega328 и т. п.), имеется конфигурационная ячейка под названием CKDIV8 , которая по умол- чанию запрограммирована (установлена в нулевое значение), что означает деление частоты генератора на 8. Не забывайте ее переустановить перед использованием внешнего резонатора (отметим, что в русскоязычных пособиях Евстифеева [6,7] этот момент отражен нечетко, так что всегда смотрите документацию на конкрет- ный контроллер!). У некоторых моделей (ATtiny2313) имеется также внутренний делитель тактовой частоты (регистр CLKPR ), с помощью которого частоту тактиро- вания можно менять программно. По идее эта возможность работает при любом способе тактирования (так можно, например, регулировать потребление контролле- ра), но более актуальна она при тактировании от встроенного генератора, частоту которого саму по себе мы изменить не можем. Частоту встроенного генератора, которая и сама по себе имеет разброс от одного кристалла к другому и «плавает» от изменения внешних условий (температуры и напряжения питания), можно регулировать весьма в широких пределах. Но пользо- ваться возможностями такой калибровки нужно очень осмотрительно — докумен- тация не рекомендует менять частоту более, чем на 10% от номинальной, иначе мо- гут быть сложности, например, с записью во flash- и EEPROM-память. Для обыч- ных применений заводской калибровки вполне достаточно, и усложнять себе жизнь, пытаясь стабилизировать параметры заведомо нестабильной схемы, не име- ет смысла — проще подключить стабильный внешний кварц или, если очень надо, готовый прецизионный генератор. З АМЕТКИ НА ПОЛЯХ В одной из публикаций на сайте, посвященном конструированию всяческих автомо- бильных прибамбасов, мне встретились жалоба на отказы встроенного генератора Tiny2313 при температурах ниже примерно –20 ° C и указание на то, что при этом по- могает установка обычного внешнего кварца. В документации на контроллеры про это ничего не сказано, наоборот, приведен график изменения частоты RC-генератора от температуры вплоть до граничного рабочего значения минус 40 ° C (причем при сни- жении температуры частота у некоторых моделей повышается, у других — снижается, но эти изменения не очень существенные, на 2–3% от среднего значения). Потому

RkJQdWJsaXNoZXIy MTExODQxMg==