ATmega128. Параллельное программирование
Параллельное программирование
Ввод режима программирования
Для ввода параллельного режима программирования необходимо выполнить действия в следующей последовательности:
Обратите внимание, если используется внешний кварцевый резонатор или внешняя RC-цепь, то нет возможности приложить импульсы к XTAL1. В этом случае придерживаются следующей последовательности:
Рекомендации по повышению эффективности программирования
Загружаемые команды и адрес запоминаются в микроконтроллере в процессе программирования. Для эффективности программирования необходимо учитывать следующее:
- Если выполняется чтение или запись по нескольким адресам памяти, то команда может быть загружена однократно.
- Если записываемое значение равно $FF, то его запись можно пропустить, т.к. после выполнения команды стирания кристалла все ячейки ЭСППЗУ (если конфигурационный бит EESAVE запрограммирован) и флэш-памяти заполнены этим кодом.
- Старший байт адреса необходимо загружать только перед началом программирования или чтения новых 256 слов флэш-памяти и 256 байт ЭСППЗУ. Данное распространяется также на чтение сигнатурных байт.
Стирание кристалла
Выполнение команды стирания кристалла приводит к очистке содержимого флэш-памяти и ЭСППЗУ (1), а также бит защиты. Очистка бит защиты происходит только после полного стирания памяти программ. Конфигурационные биты при этом не изменяются. Стирание кристалла необходимо выполнять перед перепрограммированием флэш-памяти и/или ЭСППЗУ.
Прим.:
Ввод команды "Стирание кристалла":
Программирование флэш-памяти
Флэш-память имеет постраничную организацию (см. табл. 124). Во время программирования флэш-памяти данные помещаются в страничный буфер. Это позволяет за один подход записать всю страницу. Ниже описана процедура программирования всей флэш-памяти:
- Загрузка команды "Запись флэш-памяти "
- Установка XA1, XA0 = "10". Этим разрешается загрузка команды.
- Установка BS1 = "0".
- Установка ДАННЫХ = "0001 0000". Это команда записи флэш-памяти.
- Формируем положительный фронт на XTAL1. Этим загружается команда.
- Загрузка младшего адресного байта
- Установка XA1, XA0 = "00". Это разрешает загрузку адреса.
- Установка BS1 = "0". Этим выбирается младший адрес.
- Установка ДАННЫХ = мл. байт адреса ($00 - $FF).
- Формируем положительный фронт на XTAL1. Этим загружается младший байт адреса.
- Загрузка младшего байта адреса.
- Установка XA1, XA0="01". Это разрешает загрузку данных.
- Установка ДАННЫХ = мл. байт адреса ($00 - $FF).
- Формируем положительный фронт на XTAL1. Этим загружается байт данных.
- Загрузка старшего байта данных
- Установка BS1 = "1". Этим выбирается старший байт данных.
- Установка XA1, XA0 = "01". Этим выбирается загрузка данных.
- Установка ДАННЫХ = ст. байт данных ($00 - $FF).
- Формируем положительный фронт на XTAL1. Этим загружается байт данных.
- Загрузка данных.
- Установка BS1 = "1". Этим выбирается старший байт данных.
- Формируем положительный фронт на PAGEL. Этим защелкиваются байты данных (см. форму сигналов на рисунке 137).
- Повторяем B-E до заполнения всего буфера или до завершения загрузки данных в пределах страницы. Если младшие разряды адреса адресуют слова в пределах страницы, то старшие разряды адреса адресуют страницы в пределах флэш-памяти. Это иллюстрируется на рисунке 136. Обратите внимание, что если требуется менее 8-разрядов для адресации слов в странице (размер страницы < 256), то старшие разряды младшего адресного байта адресуют к странице при выполнении страничной записи. G. Загрузка старшего адресного байта.
- Установка XA1, XA0 = "00". Этим разрешается загрузка адреса.
- Установка BS1 = "1". Этим выбирается старший байт адреса.
- Установка ДАННЫХ = ст. адресному байту ($00 - $FF).
- Формируем положительный фронт на XTAL1. Этим загружаем ст. адресный байт.
- Программируем страницу
- Установка BS1 = "0".
- Формируем отрицательный фронт на WR. Этим инициируем программирование всей страницы данных. RDY/BSY переходит в низкое состояние.
- Ожидаем появление лог. 1 на RDY/BSY (см. осциллограммы сигналов на рисунке 137).
- Повторяем B-H до завершения программирования всей флэш-памяти.
- Завершения программирования страницы.
- Установка XA1, XA0 = "10". Этим разрешается загрузка команды.
- Установка ДАННЫХ = "0000 0000". Это команда "нет операции".
- Формируем положительный фронт на XTAL1. Этим загружаем команду и сбрасываем внутренние сигналы записи.
Рисунок 136. Адресация флэш-памяти со страничной организацией
Прим.:
Рисунок 137. Осциллограммы сигналов программирования флэш-памяти
Прим.: "XX" означает, что не имеет значения, какие данные будут присутствовать. Указанные на рисунке символы соответствуют рассмотренному выше алгоритму.
Программирование ЭСППЗУ
ЭСППЗУ имеет страничную организацию (см. табл. 125). Во время программирования ЭСППЗУ программируемые данные размещаются в страничном буфере. Такая организация позволяет записать сразу одну страницу. Алгоритм программирования памяти данных ЭСППЗУ следующий (см. "Программирование флэш-памяти " для изучения подробностей загрузки команды, адреса и данных):
Рисунок 138. Осциллограммы сигналов программирования ЭСППЗУ
Чтение флэш-памяти
Алгоритм чтения флэш-памяти следующий (подробности по загрузке команд и адреса "Программирование флэш-памяти"):
Чтение ЭСППЗУ
Алгоритм чтения ЭСППЗУ следующий (см. "Программирование флэш-памяти " для изучения подробностей загрузки команды и адреса):
Программирование младших конфигурационных бит
Алгоритм программирования младших конфигурационных бит следующий (подробности по загрузке команд и адреса см. в "Программирование флэш-памяти"):
Программирование старших конфигурационных бит
Алгоритм программирования старших конфигурационных бит следующий (подробности по загрузке команд и адреса см. в "Программирование флэш-памяти"):
Программирование расширенных конфигурационных бит
Алгоритм программирования расширенных конфигурационных бит описано ниже(подробности по загрузке команд и адреса см. в "Программирование флэш-памяти"):
Рисунок 139. Программирование конфигурационных бит
Программирование бит защит
Алгоритм программирования бит защиты следующий (подробности по загрузке команд и адреса см. в "Программирование флэш-памяти"):
Чтение конфигурационных бит и бит защиты
Алгоритм чтения конфигурационных бит и бит защиты следующий (подробности по загрузке команд и адреса см. в "Программирование флэш-памяти"):
Рисунок 140. Схема считывания конфигурационных бит и бит защиты под управлением сигналов BS1, BS2
Чтение сигнатурных байт
Алгоритм чтения сигнатурных байт следующий (подробности по загрузке команд и адреса см. в "Программирование флэш-памяти"):
Чтение калибровочного байта
Алгоритм чтения калибровочного байта следующий (подробности по загрузке команд и адреса см. в "Программирование флэш-памяти"):
Характеристики параллельного программирования
Рисунок 141. Временная диаграмма параллельного программирования: общие требования к временной диаграмме
Рисунок 142. Временная диаграмма параллельного программирования: последовательность загрузки
Прим.: требования к временной диаграмме, показанные на рисунке 141 (в т.ч. tDVXH, tXHXL и tXLDX), также применимы и к операции загрузки.
Рисунок 143. Временная диаграмма параллельного программирования: последовательность чтения (в пределах одной страницы)
Прим.: требования к временной диаграмме, показанные на рисунке 141 (в т.ч. tDVXH, tXHXL и tXLDX), также применимы и к операции загрузки.
Таблица 127. Характеристики параллельного программирования при VCC = 5В ± 10%
Обозначение Параметр мин. ном. макс. Ед.изм. VPP Напряжение программирования 11,5 12,5 В IPP Ток программирования 250 мкА tDVXH Задержка до появления лог. 1 на XTAL1 для действительности данных и управления 67 нс tXLXH Длительность положительного фронта на XTAL1 200 нс tXHXL Длительность единичного импульса на XTAL1 150 нс tXLDX Удержание данных и управления после установки лог. 0 на XTAL1 67 нс tXLWL Время между появлением лог. 0 на XTAL1и WR 0 нс tXLPH Время между появлением лог. 0 на XTAL1 и лог. 1 на PAGEL 0 нс tPLXH Время между появлением лог. 0 на PAGEL и лог. 1 на XTAL1 150 нс tBVPH Действительность BS1 до появления лог. 1 на PAGEL 67 нс tPHPL Длительность единичного импульса на PAGEL 150 нс tPLBX Удержание BS1 после появления лог. 0 на PAGEL 67 нс tWLBX Удержание BS2/1 после подачи лог. 0 на WR 67 нс tPLWL Время между появлением лог. 0 на PAGEL и лог. 0 на WR 67 нс tBVWL Действительность BS1 до появления лог. 0 на WR 67 нс tWLWH Длительность низкого уровня импульса WR 150 нс tWLRL Время между появлением лог. 0 на WR и RDY/BSY 0 1 мкс tWLRH Время между появление лог. 0 на WR и лог. 1 на RDY/BSY(1) 3,7 4,5 мс tWLRH_CE Время между появлением лог.0 на WR и лог. 1 на RDY/BSY для стирания кристалла (Chip Erase)(2) 7,5 9,0 мс tXLOL Время между появлением лог.0 на и лог. 0 на OE 0 нс tBVDV Время между действительностью BS1 и данными 0 250 нс tOLDV Задержка на появление действительных данных после установки лог. 0 на ОЕ 250 нс tOHDZ Задержка на переход в высокоимпедансное состояние линий данных после установки лог. 1 на OE 250 нсПрим.:
Рекомендуемый контент
Радиолюбителю