8(495)909-90-01
8(964)644-46-00
pro@sio.su
Главная
Системы видеонаблюдения
Охранная сигнализация
Пожарная сигнализация
Система пожаротушения
Система контроля удаленного доступа
Оповещение и эвакуация
Контроль периметра
Система домофонии
Парковочные системы
Проектирование слаботочных сетей
Аварийный
контроль
Раздел: Документация

0 ... 169 170 171 172 173 174 175 ... 195

Записать страницу памяти программ/ Записать страницу EEPROM

Байт 1

Байт 1

Загрузить страницу FLASH-памяти (старший/младший байт)/ Загрузить страницу EEPROM (страничный доступ)

Байт 4

FLASH

Размер памяти, байт

16К

32К

64К

128К

256К

Размер страницы, слов

32

32

64

64

128

128

128

Количество страниц

64

128

128

256

256

512

1024

Смещение на странице

[4:01

[4:0]

[5:01

[5:01

[6:01

[6:01

[6:0]

Номер страницы

[10:5]

[11:5]

[12:6]

[13:6]

[14:7]

[15:7]

[16:7]*

Старший бит загружается командой загрузки дополнительного байта адреса

EEPROM

Размер памяти, байт

256

512

Размер страницы, байт

4

4

4

8

8

Количество страниц

64

128

256

256

512

Смещение на странице

[1:0]

[1:0]

[1:0]

[2:0]

[2:0]

Номер страницы

[7:2]

[8:2]

[9:2]

[10:3]

[11:3]

Страница 0

ницы

Страница 1

мер стра

Страница 2

о

X

Страница ЛМ

Память программ/ 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