EEPROM блок электрически стираемой памяти AVR предназначен для хранения энергонезависимых данных, которые могут изменяться непосредственно на объекте. Это калибровочные коэффициенты, различные установки, конфигурационные параметры системы. EEPROM-память имеет меньшую емкость (от 64 байт до 4К байт), но имеет возможность побайтной перезаписи ячеек, которая может происходить как под управлением внешнего процессора, так и под управлением собственно AVR-микроконтроллера во время его работы по программе.
В энергонезависимой памяти AVR имеется несколько специализированных битов [7].
LOCK-биты (LB1, LB2) предназначены для защиты программной информации, содержащейся во FLASH-памяти. Возможные режимы защиты перечислены в таблице 4.1. Запрограммировав биты защиты, стереть их можно лишь во время очистки FLASH -памяти, которая уничтожает и всю программу.
Таблица 4.1
Режимы защиты программы
Состояние Lock-бит | |||
Режим | LB1 | LB2 | Тип защиты |
1 | 1 | 1 | Защита отсутствует |
2 | 0 | 1 | Запрет программирования Flash |
3 | 0 | 0 | Запрет как программирования, так и чтения Flash. |
FUSE-биты позволяют задавать некоторые конфигурационные особенности микроконтроллера (см. таблицу 4.2).
Микроконтроллеры AT90S1200 имеют FUSE-биты SPIEN и RCEN. Все остальные типы classicAVR конфигурируются при помощи FUSE-битов SPIEN и FSTRT. MegaAVR имеют четыре FUSE-бита: SPIEN, SUT0, SUT1 и EESAVE.
Три энергонезависимых Signature-байта служат для идентификации типа кристалла, программируются на фабрике и доступны только для чтения.
Таблица 4.2
Назначение FUSE-битов
Fuse-бит(значение поумолчанию) | Значение | Режим работы AVR |
0 | AVR тактируется внутренним RC-генератором. (работа AVR без каких-либо внешних элементов) | |
RCEN (1) | 1 | Тактирование при помощи внешнего кварцевого резонатора или генератора. |
0 | Разрешение последовательного программирования через SPI интерфейс | |
SPIEN (0) | 1 | Запрещение последовательного программирования через SPI интерфейс |
0 | Задержка старта AVR после сброса ~ 0.25мс | |
FSTRT (1) | 1 | Задержка старта AVR после сброса ~ 16 мс |
00 | Задержка старта AVR после сброса ~ 5 мс | |
01 | Задержка старта AVR после сброса ~ 0.5 мс | |
SUT 0/1 (11) | 10 | Задержка старта AVR после сброса ~ 4.0мс |
11 | Задержка старта AVR после сброса ~ 16 мс | |
0 | EEPROM не стирается во время цикла очистки энергонезависимой памяти | |
EESAVE (1) | 1 | EEPROM стирается во время цикла очистки энергонезависимой памяти |
Разнообразные способы программирования AVR-микроконтроллеров обеспечивают простой и удобный доступ к внутренней энергонезависимой памяти во всех возможных ситуациях программирования кристалла.
Для энергонезависимых FLASH и EEPROM блоков AVR предусмотрены параллельный и последовательный способы программирования, которые выполняются под управлением внешнего процессора, а для EEPROM-памяти также возможен способ программной перезаписи под управлением AVR. LOCK-биты могут программироваться как параллельно, так и последовательно. FUSE-биты у младших моделей AVR могут программироваться только последовательно, а у старших - и параллельно, и последовательно.
Параллельное программирование энергонезависимой памяти использует большое число выводов микроконтроллера и выполняется на специальных программаторах. Такое программирование удобно, когда при массовом производстве необходимо "прошивать" большое количество кристаллов.
Последовательное программирование может выполняться прямо в микропроцессорной системе (In System Programming) через последовательный SPI-интерфейс, который использует всего четыре вывода AVR-микроконтроллера. Эта новая возможность является очень важной, так как позволяет обновлять программное обеспечение в уже функционирующей микропроцессорной системе.
Подготовка программы для AVR-микроконтроллера выполняется на персональном компьютере и состоит из следующих этапов:
– создание текста программы;
– трансляция текста в машинные коды и исправление синтаксических ошибок;
– отладка программы, то есть устранение логических ошибок;
– окончательное программирование AVR-микроконтроллера.
Каждый из этапов требует использования специальных программных и аппаратных средств. Ниже перечислены наиболее доступные из них на сегодняшний день.
Базовые программные средства фирмы Атмел распространяются бесплатно, в то время как аппаратные средства имеют свою стоимость.
Следует отметить, что кроме бесплатных программных средств фирмы Атмел, позволяющих программировать только на языке ассемблера, фирмами IAR SYSTEMS, CMX CORPORATION, KANDA SYSTEMS Ltd. и другими разработаны средства поддержки программирования на языках высокого уровня С и BASIC, а также операционные системы реального времени. Эти более сложные и дорогостоящие продукты мы не обсуждаем, но информацию о них и демонстрационные версии можно получить в фирме ЭФО или в Корпорации "Точка Опоры".
Рассмотрим более подробно этапы подготовки программы для AVR Если Вы работаете в среде MS-DOS, то для выполнения первого и второго этапа Вам придется воспользоваться различными средствами. Для создания текста программы подойдет любой текстовый редактор DOS, который формирует на выходе ASCII-файлы, например, встроенный редактор Norton Commander, редактор Multi Edit и т.п. Для трансляции текста программы в коды фирмой Атмел предлагается DOS-версия программы-транслятора AVRASM.
Для работы в среде Windows 3.11/95/NT фирмой Атмел предлагается программа WAVRASM, которая позволяет выполнить создание текста программы и его трансляцию внутри одной оболочки и обеспечивает дополнительный сервис для быстрого поиска синтаксических ошибок в тексте программы.
Результатом Вашей работы на первом этапе является файл <имя_файла>.asm, который содержит текст программы (расширение имени файла обычно указывает на язык программирования) и является входным для программ-трансляторов, которые, в свою очередь, создают четыре новых файла: файл листинга (<имя_файла>.lst), объектный файл (<имя_файла>.obj), файл-прошивка FLASH-памяти (<имя_файла>.hex), файл-прошивка EEPROM-памяти (<имя_файла>.eep).
Файл листинга - это отчет транслятора о своей работе. В нем приводится транслируемая программа в виде исходного текста, каждой строке которого сопоставлены соответствующие двоичные коды. Кроме того, листинг содержит сообщения о выявленных ошибках.
Объектный файл используется в дальнейшем как входной для программы-отладчика AVRSTUDIO и имеет специальный формат. Файлы прошивки FLASH и EEPROM блоков памяти предназначены для работы с любыми последовательными и параллельными программаторами AVR и имеют стандартные форматы.
Следующим этапом подготовки программы является ее отладка, которая может выполняться двумя основными способами: на персональном компьютере при помощи программы-симулятора или в реальной микропроцессорной системе. Два эти способа взаимно дополняют друг друга.
Программа-симулятор AVRSTUDIO отображает на экране компьютера Вашу программу и состояние внутренних регистров AVR. Таким образом, становится возможным наблюдать изменения переменных, которые происходят внутри микроконтроллера при выполнении тех или иных команд программы. Отметим, что в реальной системе при помощи осциллографа невозможно просмотреть состояние внутренних регистров. Использование симуляторов эффективно при отладке подпрограмм, которые выполняют численную обработку внутренних данных.
В то же время, отладку подпрограмм, связанных с какими-либо внешними элементами, удобно выполнять непосредственно в рабочей системе. Например, если микроконтроллер генерирует ШИМ-сигналы, управляющие яркостью свечения светодиодов, то оценить игру красок Вы сможете только глядя на реальный макет.
Для отладки программы в рабочей системе, кроме программных средств, требуются также и аппаратные. Ниже приведены представлены различные варианты построения отладочной системы, отличающиеся своей стоимостью и возможностями.
Наиболее быстрый, не требующий пайки способ построения микропроцессорной системы на основе AVR - это приобретение комплекта AVR STARTER KIT фирмы Атмел, который содержит плату DEVELOPMENT BOARD, книгу "Development tool user's guide", дискеты с программным обеспечением, CD-ROM с полной документацией на все типы AVR и многочисленными примерами прикладных программ для AVR (содержимое дискет и CD-ROM диска можно также найти на данной web-странице). Плата DEVELOPMENT BOARD содержит панельки для подключения базовых типов AVR-микроконтроллеров в DIP-корпусах; источник питания; последовательный программатор, узел интерфейса RS-232 для связи с компьютером по асинхронному последовательному каналу; наборы из 8 светодиодов и из 8 кнопочных переключателей, которые можно подключать к выводам портов микроконтроллера; разъемы, через которые при помощи гибких кабелей можно наращивать микропроцессорную систему. Универсальность DEVELOPMENT BOARD удобна для обучения и для макетирования новых разработок.
Вместе с тем, для многих конкретных проектов может не подойти конструктивная реализация DEVELOPMENT BOARD или избыточным будет использование на этой плате источника питания, последовательного программатора и панелей под различные типы корпусов. В таком случае выполняют специализированную разработку, удовлетворяющую требованиям конкретной задачи.
Одним из важнейших достоинств AVR-микроконтроллеров является то, что все его аппаратные ресурсы "спрятаны" внутри, и поэтому схема включения AVR очень проста. Такая простота и миниатюрность позволяет во многих конкретных приложениях не выносить цифровую часть на отдельную плату, а помещать AVR непосредственно внутри аналогового блока. Для обучения технологии программирования AVR Вы можете собрать макет схемы за 15 минут.