Раздел: Документация
0 ... 169 170 171 172 173 174 175 ... 195 Записать страницу памяти программ/ Записать страницу EEPROM Байт 1 Байт 1 Загрузить страницу FLASH-памяти (старший/младший байт)/ Загрузить страницу EEPROM (страничный доступ) Байт 4 FLASH
Старший бит загружается командой загрузки дополнительного байта адреса EEPROM
Память программ/ EEPROM Рис. 14.5. Использование команд страничного доступа 14.2.1.Переключение в режим программирования Для перевода микроконтроллера в режим программирования по последовательному каналу необходимо выполнить следующие действия: 1.Подать на микроконтроллер напряжение питания, при этом на выводах SCK и RESET должно присутствовать напряжение НИЗКОГО уровня. В некоторых случаях (если программатор не гарантирует установку сигнала SCK в 0 при подаче питания) после установки сигнала SCK в 0 необходимо подать на вывод RESET положительный импульс длительностью не менее двух периодов тактового сигнала микроконтроллера. В моделях ATmega64x/128x напряжение НИЗ-КОГО уровня можно подавать на вывод PEN вместо вывода RESET. Однако это возможно только в том случае, если программатор гарантирует удержание сигнала SCK в 0 при подаче питания. Кроме того, при использовании вывода PEN необходимо после программирования снять напряжение питания с микроконтроллера, чтобы он затем смог работать в нормальном режиме. 2.Выждать не менее 20 мс. 3.Послать на вывод MOSI команду «Разрешение программирования». Для контроля прохождения команды при посылке 3-го байта возвращается значение 2-го байта ($53). Если возвращаемое значение отлично от указанного, необходимо подать на вывод RESET положительный импульс и снова послать команду «Разрешение программирования». Причем независимо от возвращаемого значения необходимо передавать все 4 байта команды. Отсутствие возврата числа $53 после нескольких попыток указывает на отсутствие связи между программатором и микросхемой либо на неисправность микросхемы. После завершения программирования на вывод RESET можно подать напряжение ВЫСОКОГО уровня для перевода микроконтроллера в рабочий режим либо выключить его. В последнем случае необходимо выполнить следующую последовательность действий: 1.Подать на вывод XTAL1 напряжение НИЗКОГО уровня, если тактирование микроконтроллера осуществляется от внешней схемы. 2.Подать на вывод RESET напряжение ВЫСОКОГО уровня. 3.Отключить напряжение питания от микроконтроллера. 14.2.2.Управление процессом программирования FLASH-памяти Программирование памяти программ микроконтроллеров семейства Mega осуществляется постранично. Сначала содержимое страницы побайтно заносится в буфер по командам «Загрузка страницы FLASH-памяти». В каждой команде передаются младшие биты адреса изменяемой ячейки (положение ячейки внутри страницы) и записываемое значение. Содержимое каждой ячейки должно загружаться в следующей последовательности: сначала младший байт, потом старший. Фактическое программирование страницы FLASH-памяти осуществляется после загрузки буфера страницы по команде «Запись страницы FLASH-памяти». В команде передаются старшие биты адреса ячеек (номер страницы), как показано на Рис. 14.5. В моделях с объемом памяти программ более 64 Кслов (на сегодняшний день это ATmega2560x/2561x) перед программированием страницы необходимо командой «Загрузка дополнительного байта адреса» задать старший бит номера страницы. Поскольку содержимое этого байта сохраняется до следующей команды, то ее необходимо выполнять только дважды — перед программированием первой страницы и при переходе через границу 64 Кслов. Следует помнить, что дальнейшее программирование памяти можно будет выполнять только после завершения записи страницы. Определить момент окончания записи можно тремя способами. Первый и наиболее простой способ — выдерживать между посылкой команд паузу длительностью не менее /\vd flash (Табл. 14.11). Второй способ заключается в контролировании содержимого любой из записываемых ячеек после посылки команды записи: до завершения записи ячейки при ее чтении возвращается значение $FF, а после завершения — записанное значение. Ну, а третий способ — опрос флага готовности RDY/BSYc помощью соответствующей команды и возобновление процесса программирования после установки флага в 1. 14.2.3. Управление процессом программирования EEPROM-памяти Во всех старых моделях программирование EEPROM-памяти осуществляется обычным способом — побайтно. А в новых моделях появился альтернативный способ записи EEPROM-памяти — постраничный. Содержимое страницы побайтно заносится в буфер по командам «Загрузка страницы EEPROM-памяти», а затем осуществляется фактическое программирование страницы EEPROM-памяти по команде «Запись страницы EEPROM-памяти». Значения адресов, передаваемые в этих командах, определяются так же, как и при программировании FLASH-памяти (Рис. 14.5). Для определения момента окончания записи можно использовать любой из описанных выше способов. 14.3. Параллельное программирование В режиме параллельного программирования, как следует из его названия, от программатора к микроконтроллеру передаются одновременно все биты кода команды или байта данных. Этот режим задействует большое 0 ... 169 170 171 172 173 174 175 ... 195
|