Микроконтроллеры AVR
Методическое пособие - Компьютеры, программирование
Другие методички по предмету Компьютеры, программирование
?следовательному каналу осуществляется побайтно.
Программирование по последовательному каналу
В режиме программирования по последовательному каналу программирование памяти программ и данных осуществляется по последовательному интерфейсу SPI. Как правило, этот режим используется для программирования (перепрограммирования) микроконтроллера непосредственно в устройстве.
Схема включения микросхем в режиме программирования по последовательному каналу приведена на рис. 9.2. На этом же рисунке показано два варианта разводки колодки для подключения программатора, рекомендуемые компанией Atmel.
Рис. 9.2. Включение микроконтроллеров в режиме программирования по последовательному каналу
Как видно из рис. 9.2, для обмена данными между программатором и устройством используются три линии: SCK (тактовый сигнал), MOSI (вход данных) и MISO (выход данных).
Как и в рабочем режиме, при программировании по последовательному каналу микроконтроллеру требуется источник тактового сигнала. В качестве такового может использоваться любой из допустимых для микроконтроллера источников. При этом должно выполняться следующее условие: длительность импульсов как НИЗКОГО, так и ВЫСОКОГО уровня сигнала SCK должна быть больше 2 периодов тактового сигнала микроконтроллера.
Программирование осуществляется путем посылки 4-байтных команд на вывод MOSI микроконтроллера. Результат выполнения команд чтения снимается с вывода MISO микроконтроллера. Передача команд и выдача результатов их выполнения осуществляются от старшего бита к младшему. При этом “защелкивание” входных данных выполняется по нарастающему фронту сигнала SCK, а “защелкивание” выходных данных по спадающему.
Переключение в режим программирования
Для перевода микроконтроллера в режим программирования по последовательному каналу необходимо выполнить следующие действия:
- подать на микроконтроллер напряжение питания, при этом на выводах SCK и RESET должно присутствовать напряжение НИЗКОГО уровня. Выждать не менее 20 мс;
- послать на вывод MOSI команду “Разрешение программирования”;
- для контроля прохождения команды при посылке 3-го байта возвращается значение 2-го байта ($53).
- после завершения программирования на вывод RESET можно подать напряжение ВЫСОКОГО уровня для перевода микроконтроллера в рабочий режим либо выключить его.
В последнем случае необходимо выполнить следующую последовательность действий:
- подать на вывод XTAL1 напряжение НИЗКОГО уровня, если тактирование микроконтроллера осуществляется от внешней схемы;
- подать на вывод RESET напряжение ВЫСОКОГО уровня;
- отключить напряжение питания от микроконтроллера.
Управление процессом программирования FLASH-памяти
Программирование памяти программ микроконтроллеров семейства Mega осуществляется постранично. Сначала содержимое страницы побайтно заносится в буфер по командам “Загрузка страницы FLASH-памяти”. В каждой команде передаются младшие биты адреса изменяемой ячейки (положение ячейки внутри страницы) и записываемое значение. Содержимое каждой ячейки должно загружаться в следующей последовательности: сначала младший байт, потом старший.
Фактическое программирование страницы FLASH-памяти осуществляется после загрузки буфера страницы по команде “Запись страницы FLASH-памяти”.
Следует помнить, что дальнейшее программирование памяти можно будет выполнять только после завершения записи страницы. Определить момент окончания записи можно тремя способами. Первый и наиболее простой способ выдерживать между посылкой команд паузу. Второй способ заключается в контролировании содержимого любой из записываемых ячеек после посылки команды записи, а третий способ опрос флага готовности RDY c помощью соответствующей команды.
Управление процессом программирования EEPROM-памяти
Во всех старых моделях программирование EEPROM-памяти осуществляется обычным способом побайтно. А в новых моделях появился альтернативный способ записи EEPROM-памяти постраничный. Содержимое страницы побайтно заносится в буфер по командам “Загрузка страницы EEPROM-памяти”, а затем осуществляется фактическое программирование страницы EEPROM-памяти по команде “Запись страницы EEPROM-памяти”. Значения адресов, передаваемые в этих командах, определяются так же, как и при программировании FLASH-памяти. Для определения момента окончания записи можно использовать любой из описанных выше способов.
Параллельное программирование
В режиме параллельного программирования от программатора к микроконтроллеру передаются одновременно все биты кода команды или байта данных. Этот режим задействует большое число выводов микроконтроллера и требует использования дополнительного источника повышенного напряжения. Поэтому программирование в параллельном режиме осуществляется специализированными программаторами. Основное применение этого режима “прошивка” микроконтроллеров перед установкой их на плату в условиях массового производства.
Схема включения микросхем в режиме параллельного программирования приведена на рис. 9.3.
Рис. 9.3. Включение микроконтроллеров в режиме параллельного программирования
Таблица 9.7. Обозначение и функции выводов, используемых при программировании в параллельном режиме
СигналВыводВход/ВыходНазначениеRDY/BSYPD1ВыходСостоя?/p>