Разделы

В сети

Пользователей: 120
Из них просматривают:
Аналоги: 88. Даташиты: 5. Инструкции: 3. Новости: 15. Остальное: 2. Производители: 1. Расчёты: 1. Форум: 5.
Участников: 2
Гостей: 118

Google , Яндекс , далее...
Рекорд 2375 человек онлайн установлен 26.12.2015.

Партнёры


Партнёры

Новые объявления

В настоящее время нет объявлений.

ATmega128. Параллельное программирование

Написал MACTEP 31.03.2010 3:20:00 (Просмотров: 7029)

Параллельное программирование



 

Ввод режима программирования

Для ввода параллельного режима программирования необходимо выполнить действия в следующей последовательности:

  1. Подать напряжение 4.5 - 5.5В между VCC и GND, задержка не менее 100 мкс.
  2. Подаем лог. 0 на вход сброса "RESET" и переключаем вход XTAL1 не менее ШЕСТИ раз.
  3. Устанавливаем на входах "Prog_enable" (см. табл. 122) код "0000" и ожидаем 100 нс.
  4. Подаем напряжение 11.5 - 12.5В на "RESET". Если в течение 100 нс после подачи +12В на RESET произойдет изменения состояния входов Prog_enable, то это вызовет сбой режима программирования.

Обратите внимание, если используется внешний кварцевый резонатор или внешняя RC-цепь, то нет возможности приложить импульсы к XTAL1. В этом случае придерживаются следующей последовательности:

  1. Установить код "0000" на входах Prog_enable.
  2. Подать напряжение 4.5 - 5.5В между VCC и GND одновременно с подачей напряжения 11.5 - 12.5В на RESET. <>Ожидаем 100 мкс.
  3. Перепрограммируем конфигурационные биты для выбора в качестве источника синхронизации внешнего генератора (CKSEL3:0 = 0b0000). Если запрограммированы биты защиты, то предварительно необходимо выполнить команду стирания кристалла (Chip Erase).
  4. Выходим из режима программирования выключением питания или путем подачи лог. 0 на RESET.
  5. Ввод режима программирования, описанного выше.
  6.  

Рекомендации по повышению эффективности программирования

Загружаемые команды и адрес запоминаются в микроконтроллере в процессе программирования. Для эффективности программирования необходимо учитывать следующее:

  • Если выполняется чтение или запись по нескольким адресам памяти, то команда может быть загружена однократно.
  • Если записываемое значение равно $FF, то его запись можно пропустить, т.к. после выполнения команды стирания кристалла все ячейки ЭСППЗУ (если конфигурационный бит EESAVE запрограммирован) и флэш-памяти заполнены этим кодом.
  • Старший байт адреса необходимо загружать только перед началом программирования или чтения новых 256 слов флэш-памяти и 256 байт ЭСППЗУ. Данное распространяется также на чтение сигнатурных байт.

Стирание кристалла

Выполнение команды стирания кристалла приводит к очистке содержимого флэш-памяти и ЭСППЗУ (1), а также бит защиты. Очистка бит защиты происходит только после полного стирания памяти программ. Конфигурационные биты при этом не изменяются. Стирание кристалла необходимо выполнять перед перепрограммированием флэш-памяти и/или ЭСППЗУ.

Прим.:

  1. Память ЭСППЗУ не изменяется, если конфигурационный бит EESAVE запрограммирован.

Ввод команды "Стирание кристалла":

  1. Установка на XA1, XA0 кода "10". Этим разрешается команда загрузки.
  2. Установка BS1 ="0".
  3. Установка данных "1000 0000". Это команда "Стирание кристалла".
  4. Формируем положительный фронт на XTAL1. Этим загружается команда.
  5. Формируем отрицательный фронт WR. Этим запускаем механизм стирания кристалла. RDY/BSY переходит в низкое состояние.
  6. Ожидаем, когда RDY/BSY перейдет в единичное состояние, а затем загружаем новую команду.

Программирование флэш-памяти

Флэш-память имеет постраничную организацию (см. табл. 124). Во время программирования флэш-памяти данные помещаются в страничный буфер. Это позволяет за один подход записать всю страницу. Ниже описана процедура программирования всей флэш-памяти:

  • Загрузка команды "Запись флэш-памяти "
    1. Установка XA1, XA0 = "10". Этим разрешается загрузка команды.
    2. Установка BS1 = "0".
    3. Установка ДАННЫХ = "0001 0000". Это команда записи флэш-памяти.
    4. Формируем положительный фронт на XTAL1. Этим загружается команда.
  • Загрузка младшего адресного байта
    1. Установка XA1, XA0 = "00". Это разрешает загрузку адреса.
    2. Установка BS1 = "0". Этим выбирается младший адрес.
    3. Установка ДАННЫХ = мл. байт адреса ($00 - $FF).
    4. Формируем положительный фронт на XTAL1. Этим загружается младший байт адреса.
  • Загрузка младшего байта адреса.
    1. Установка XA1, XA0="01". Это разрешает загрузку данных.
    2. Установка ДАННЫХ = мл. байт адреса ($00 - $FF).
    3. Формируем положительный фронт на XTAL1. Этим загружается байт данных.
  • Загрузка старшего байта данных
    1. Установка BS1 = "1". Этим выбирается старший байт данных.
    2. Установка XA1, XA0 = "01". Этим выбирается загрузка данных.
    3. Установка ДАННЫХ = ст. байт данных ($00 - $FF).
    4. Формируем положительный фронт на XTAL1. Этим загружается байт данных.
  • Загрузка данных.
    1. Установка BS1 = "1". Этим выбирается старший байт данных.
    2. Формируем положительный фронт на PAGEL. Этим защелкиваются байты данных (см. форму сигналов на рисунке 137).
  • Повторяем B-E до заполнения всего буфера или до завершения загрузки данных в пределах страницы. Если младшие разряды адреса адресуют слова в пределах страницы, то старшие разряды адреса адресуют страницы в пределах флэш-памяти. Это иллюстрируется на рисунке 136. Обратите внимание, что если требуется менее 8-разрядов для адресации слов в странице (размер страницы < 256), то старшие разряды младшего адресного байта адресуют к странице при выполнении страничной записи. G. Загрузка старшего адресного байта.
    1. Установка XA1, XA0 = "00". Этим разрешается загрузка адреса.
    2. Установка BS1 = "1". Этим выбирается старший байт адреса.
    3. Установка ДАННЫХ = ст. адресному байту ($00 - $FF).
    4. Формируем положительный фронт на XTAL1. Этим загружаем ст. адресный байт.
  • Программируем страницу
    1. Установка BS1 = "0".
    2. Формируем отрицательный фронт на WR. Этим инициируем программирование всей страницы данных. RDY/BSY переходит в низкое состояние.
    3. Ожидаем появление лог. 1 на RDY/BSY (см. осциллограммы сигналов на рисунке 137).
  • Повторяем B-H до завершения программирования всей флэш-памяти.
  • Завершения программирования страницы.
    1. Установка XA1, XA0 = "10". Этим разрешается загрузка команды.
    2. Установка ДАННЫХ = "0000 0000". Это команда "нет операции".
    3. Формируем положительный фронт на XTAL1. Этим загружаем команду и сбрасываем внутренние сигналы записи.

Адресация  флэш-памяти со страничной организацией
Рисунок 136. Адресация флэш-памяти со страничной организацией

Прим.:

  1. PCPAGE и PCWORD представлены в таблице 125.

Осциллограммы сигналов программирования флэш-памяти
Рисунок 137. Осциллограммы сигналов программирования флэш-памяти

Прим.: "XX" означает, что не имеет значения, какие данные будут присутствовать. Указанные на рисунке символы соответствуют рассмотренному выше алгоритму.

 

Программирование ЭСППЗУ

ЭСППЗУ имеет страничную организацию (см. табл. 125). Во время программирования ЭСППЗУ программируемые данные размещаются в страничном буфере. Такая организация позволяет записать сразу одну страницу. Алгоритм программирования памяти данных ЭСППЗУ следующий (см. "Программирование флэш-памяти " для изучения подробностей загрузки команды, адреса и данных):

  1. A: Загрузка команды "0001 0001".
  2. G: Загрузка старшего байта адреса ($00 - $FF).
  3. B: Загрузка младшего байта адреса ($00 - $FF).
  4. C: Загрузка данных ($00 - $FF).
  5. E: Запись данных (положительный фронт на PAGEL).
  6. K: Повторяем 3-5 до заполнения всего буфера.
  7. L: Программирование страницы ЭСППЗУ:
    1. Установка BS1 = "0".
    2. Формируем отрицательный импульс на WR. Этим инициируется программирование страницы ЭСППЗУ. RDY/BSY переходит в низкое состояние.
    3. Ожидаем появление лог. 1 на RDY/BSY перед программированием следующей страницы (см. осциллограммы на рисунок 138).

Осциллограммы сигналов программирования ЭСППЗУ

Рисунок 138. Осциллограммы сигналов программирования ЭСППЗУ

 

Чтение флэш-памяти

Алгоритм чтения флэш-памяти следующий (подробности по загрузке команд и адреса "Программирование флэш-памяти"):

  1. A: Загрузка команды "0000 0010".
  2. G: Загрузка старшего байта адреса ($00 - $FF).
  3. B: Загрузка младшего байта адреса ($00 - $FF).
  4. Установка OE = "0" и BS1 = "0". С линий данных может быть считан младший байт.
  5. Установка BS1 = "1". С линий данных может быть считан старший байт.
  6. Установка OE = "1".
  7.  

Чтение ЭСППЗУ

Алгоритм чтения ЭСППЗУ следующий (см. "Программирование флэш-памяти " для изучения подробностей загрузки команды и адреса):

  1. A: Загрузка команды "0000 0011".
  2. G: Загрузка старшего байта адреса ($00 - $FF).
  3. B: Загрузка младшего байта адреса ($00 - $FF).
  4. Установка OE = "0" и BS1 = "0". Байт данных ЭСППЗУ может быть считан с линий данных.
  5. Установка OE = "1".

 

Программирование младших конфигурационных бит

Алгоритм программирования младших конфигурационных бит следующий (подробности по загрузке команд и адреса см. в "Программирование флэш-памяти"):

  1. A: Загрузка команды "0100 0000".
  2. C: Загрузка младшего байта данных. Значение бита n = "0"/"1" соответствует программированию/стиранию конфигурационного бита.
  3. Установка BS1 = "0" и BS2 = "0".
  4. Формируем отрицательный фронт на WR и ожидаем появление лог.1 на RDY/BSY.

Программирование старших конфигурационных бит

Алгоритм программирования старших конфигурационных бит следующий (подробности по загрузке команд и адреса см. в "Программирование флэш-памяти"):

  1. A: Загрузка команды "0100 0000".
  2. C: Загрузка младшего байта данных. Значение бита n = "0"/"1" соответствует программированию/стиранию конфигурационного бита.
  3. Установка BS1 = "1" и BS2 = "0". Этим выбирается старший байт данных.
  4. Формируем отрицательный фронт на WR и ожидаем появление лог. 1 на RDY/BSY.
  5. Установка BS1 = "0". Этим выбирается мл. байт данных.

Программирование расширенных конфигурационных бит

Алгоритм программирования расширенных конфигурационных бит описано ниже(подробности по загрузке команд и адреса см. в "Программирование флэш-памяти"):

  1. A: Загрузка команды "0100 0000".
  2. C: Загрузка младшего байта данных. Значение бита n = "0"/"1" соответствует программированию/стиранию конфигурационного бита.
  3. Установка BS2 = "1" и BS1 = "0". Этим выбирается расширенный байт данных.
  4. Формируем отрицательный фронт на входе WR и ожидаем появление лог. 1 на RDY/BSY.
  5. Устанавливаем BS2 = "0". Этим выбирается младший байт данных.

Программирование конфигурационных бит
Рисунок 139. Программирование конфигурационных бит

 

Программирование бит защит

Алгоритм программирования бит защиты следующий (подробности по загрузке команд и адреса см. в "Программирование флэш-памяти"):

  1. A: Загрузка команды "0010 0000".
  2. C: Загрузка младшего байта данных. Бит n = "0" программирует бит защиты.
  3. Формируем отрицательный фронт на WR и ожидаем появление лог. 1 на RDY/BSY. Биты защиты стираются выполнением только командой стирания кристалла.

Чтение конфигурационных бит и бит защиты

Алгоритм чтения конфигурационных бит и бит защиты следующий (подробности по загрузке команд и адреса см. в "Программирование флэш-памяти"):

  1. A: Загрузка команды "0000 0100".
  2. Установка OE = "0", BS2 = "0" и BS1 = "0". Состояние младших конфигурационных бит может быть считано с линий данных ("0" означает запрограммированное состояние).
  3. Установка OE = "0", BS2 = "1" и BS1 = "1". Состояние старших конфигурационных бит может быть считано с линий данных ("0" означает запрограммированное состояние).
  4. Установка OE = "0", BS2 = "1" и BS1 = "0". Состояние расширенных конфигурационных бит может быть считано с линий данных ("0" означает запрограммированное состояние).
  5. Установка OE = "0", BS2 = "0" и BS1 = "1". Состояние бит защиты может быть считано с линий данных ("0" означает запрограммированное состояние).
  6. Установка OE = "1".

Схема  считывания конфигурационных бит и бит защиты под управлением сигналов  BS1, BS2
Рисунок 140. Схема считывания конфигурационных бит и бит защиты под управлением сигналов BS1, BS2

 

Чтение сигнатурных байт

Алгоритм чтения сигнатурных байт следующий (подробности по загрузке команд и адреса см. в "Программирование флэш-памяти"):

  1. A: Загрузка команды "0000 1000".
  2. B: Загрузка младшего адресного байта ($00 - $02).
  3. Установка OE = "0", BS1 = "0". Выбранный сигнатурный байт может быть считан с линий данных.
  4. Установка OE = "1".

 

Чтение калибровочного байта

Алгоритм чтения калибровочного байта следующий (подробности по загрузке команд и адреса см. в "Программирование флэш-памяти"):

  1. A: Загрузка команды "0000 1000".
  2. B: Загрузка младшего байта данных.
  3. Установка OE = "0", BS1 = "1". Калибровочный байт может быть считан с линий данных.
  4. Установка OE = "1".

Характеристики параллельного программирования

Временная  диаграмма параллельного программирования: общие требования к временной  диаграмме
Рисунок 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 нс

Прим.:

  1. tWLRH относится к командам записи флэш-памяти, ЭСППЗУ, конфигурационных бит и бит защиты.
  2. tWLRH_CE относится к команде стирания кристалла (Chip Erase).


 

<< Предыдущая страница Оглавление Следующая страница >>

Теги:

Комментарии принадлежат их авторам. Мы не несем ответственности за их содержание.

Разное

Интересно

Во время поиска небольших радиодеталей, упавших со стола, вероятность их обнаружения прямо пропорциональна размеру детали и обратно пропорциональна их значению для завершения работы

Похожие статьи