Любую модель AVR на этапе программирования можно опознать по содержимому трех 8-разрядных ячеек идентификаторов. Первый байт представляет собой код производителя и, естественно, одинаковый для вех микроконтроллеров. Его значение 0x1E. Во втором байте находится код объема FLASH-памяти программ. Он может иметь одно из ряда значений 0x90…0x98. Наименьшему числу соответствует объем FLASH 1 кб, наибольшему – объем 256 кб. Последняя из ячеек идентификаторов содержит код модели в диапазоне 0x01…0x0C.
Второй и третий байты у различных моделей могут быть одинаковыми, но их комбинация в пределах семейства уникальна. Микроконтроллеры ATmega8 содержат идентификаторы 0x1E, 0x93, 0x07.
Все без исключения AVR-микроконтроллеры могут использовать в качестве источника тактовой частоты внутренний RC-генератор (за выбор источника отвечают конфигурационные ячейки CKSEL3:CKSEL0). Причем в большинстве моделей этот генератор способен работать на нескольких частотах. Так, у ATmega8 это 1,2,4 и 8 МГц. Однако действующая технология изготовления кристаллов дает значительный разброс по этому параметру.
Для управления частотой RC-генератора, используется РВВ OSCCAL. Изменение содержимого OSCCAL от 0 до 0xFF позволяет перестраивать генератор в пределах -100…+200% от номинальной частоты. Точные же значения, при которых погрешность хода не превышает 1% при температуре 25 C (или 3% во всем рабочем диапазоне температур), определены на заводе изготовителе и записаны в калибровочные ячейки микроконтроллера. Естественно, что количество калибровочных ячеек равно числу возможных частот RC-генератора.
В моделях, где доступна только одна частота, константа из калибровочной ячейки загружается при старте в регистр OSCCAL аппаратно. Тем самым производится автоматическая настройка RC-генератора. То же самое относится и ко всем остальным микроконтроллерам, но только по отношению к наименьшей из ряда опорных частот. Например, у ATmega8 при старте в OSCCAL копируется лишь содержимое ячейки с калибровочной константой на частоту 1 МГц. Во всех остальных случаях на этапе программирования необходимо считать значение соответствующей калибровочной ячейки и поместить его по известному адресу в энергонезависимую память FLASH или EEPROM, а прикладная программа в ходе инициализации должна считать это число и скопировать его в регистр настройки генератора.
Перейти к следующей части: Арифметико-логическое устройство
Комментарии (0) | Я собрал (0) | Подписаться
Для добавления Вашей сборки необходима регистрация