Программирование Flash памяти
Flash память микроконтроллеров ATmega603/103 организован из 256/512 страниц по 256 байт каждая. При программировании Flash памяти данные программы фиксируются в буфере страницы, что позволяет единовременно программировать целую страницу. Ниже приведена процедура, описывающая программирование всего объема Flash памяти.
A: Загрузка команды программирования Flash памяти (Program Flash)
- Установить биты XA1 и XA0 в состояние 1 и 0, соответственно. Эта установка
разрешает загрузку команды.
- Установить бит BS1 в состояние 0.
- Установить биты PB(7 - 0) в состояние 0001 0000. Это команда программирования Flash памяти.
- Подать на вывод XTAL1 положительный импульс. Этим импульсом загружается
команда.
B: Загрузка младшего байта адреса
- Установить биты XA1 и XA0 в состояние 0 и 0. Эта установка разрешает
загрузку адреса
- Установить бит BS1 в состояние 0.
- Установить в битах PB(7 - 0) младший байт адреса ($00 - $FF).
- Подать на вывод XTAL1 положительный импульс. Этим импульсом загружается
младший байт адреса.
C: Загрузка байта данных
- Установить биты XA1 и XA0 в состояние 0 и 1, соответственно. Эта установка
разрешает загрузку данных.
- Установить в битах PB(7 - 0) младший байт данных ($00 - $FF).
- Подать на вывод XTAL1 положительный импульс. Этим импульсом загружается
байт данных.
D: Фиксация младшего байта данных
- Установить бит BS1 в состояние 0. Эта установка выбирает младший байт
данных.
- Подать на вывод PAGEL положительный импульс. Этим импульсом загружается
байт данных.
E: Загрузка байта данных
- Установить биты XA1 и XA0 в состояние 0 и 1, соответственно. Эта установка
разрешает загрузку данных.
- Установить в битах PB(7 - 0) старший байт данных ($00 - $FF).
- Подать на вывод XTAL1 положительный импульс. Этим импульсом загружается
байт данных.
F: Фиксация старшего байта данных
- Установить бит BS1 в состояние 1. Эта установка выбирает старший байт
данных.
- Подать на вывод PAGEL положительный импульс. Этим импульсом загружается
байт данных.
G: Пункты с B по F повторяются 128 раз до полного заполнения буфера страницы.
H: Загрузка старшего байта адреса
- Установить биты XA1 и XA0 в состояние 0 и 0, соответственно. Эта установка
разрешает загрузку адреса.
- Установить бит BS1 в состояние 1. Эта установка выбирает старший байт
адреса.
- Установить в битах PB(7 - 0) старший байт адреса (для Atmega603: $7F, для
Atmega103: $FF).
- Подать на вывод XTAL1 положительный импульс. Этим импульсом загружается
старший байт адреса.
I: Программирование страницы
- Подать на вывод WR отрицательный импульс. Этим импульсом запускается
программирование страницы данных. Вывод переходит RDY/BSY на низкий уровень.
- Ожидать перехода вывода RDY/BSY на высокий уровень.
J: Завершение программирования страницы.
- Установить биты XA1 и XA0 в состояние 1 и 0. Эта установка разрешает
загрузку команды.
- Установить биты PB(7 - 0) в состояние 0000 0000. Это команда «Нет операции».
- Подать на вывод XTAL1 положительный импульс. Этим импульсом загружается
команда и сбрасываются все внутренние сигналы записи.
K: Пункты с A по J повторяются 256/512 раз, или до тех пор, пока все данные не будут запрограммированы.