Ремонт принтеров, сканнеров, факсов и остальной офисной техники


назад Оглавление вперед




[48]

Программирование EEPROM

Алгоритм программирования EEPROM памяти данных приведен ниже (подробности загрузки команд, адресов и данных см. в разделе Программирование Flash памяти.

1.Загрузить команду 0001 0001.

2.Загрузить младший адрес EEPROM ($00 - $FF).

3.Загрузить старший адрес EEPROM (для ATmega603: $07, для ATmega103: $0F).

4.Загрузить младший байт данных EEPROM ($00 - $FF).

5.Подать на вывод WR отрицательный импульс и ожидать перехода вывода RDY/BSY на высокий уровень.

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

Чтение Flash памяти

Алгоритм чтения Flash памяти данных приведен ниже (подробности загрузки команд, адресов и данных см. в разделе Программирование Flash памяти.

1.Загрузить команду 0000 0010.

2.Загрузить младший адрес ($00 - $FF).

3.Загрузить старший адрес (для ATmega603: $7F, для ATmega103: $FF).

4.Установить OE в состояние 0 и BS1 в состояние 0. По выводам PB(7 - 0) можно считать младший байт данных

5.Установить BS в состояние 1. По выводам PB(7 - 0) можно считать старший байт данных.

6.Установить OE в состояние 1

Команда загружается только перед чтением первого байта.

Чтение памяти EEPROM

Алгоритм чтения EEPROM памяти данных приведен ниже (подробности загрузки команд, адресов и данных см. в разделе Программирование Flash памяти.

1.Загрузить команду 0000 0011.

2.Загрузить младший адрес EEPROM ($00 - $FF).

3.Загрузить старший адрес EEPROM (для ATmega603: $07, для ATmega103: $0F).

4.Установить OE в состояние 0 и BS1 в состояние 0. По выводам PB(7 - 0) можно считать байт данных EEPROM.

5.Установить OE в состояние 1.

Команда загружается только перед чтением первого байта.

Программирование битов-предохранителей

Алгоритм программирования битов-предохранителей приведен ниже (подробности загрузки команд, адресов и данных см. в разделе Программирование Flash памяти.

1.Загрузить команду 0100 0000.

2.Загрузить данные

Бит 5 = 0 программирует SPIEN бит-предохранитель. Бит 5 = 1 стирает SPIEN бит-предохранитель.

Бит 3 = 0 программирует EESAVE бит-предохранитель. Бит 3 = 1 стирает EESAVE

бит-предохранитель.

Бит 2 = всегда в состоянии 1.

Бит 1 = 0 программирует SUT1 бит-предохранитель. Бит 1 = 1 стирает SUT1 бит-


предохранитель.

Бит 0 = 0 программирует SUT0 бит-предохранитель. Бит 0 = 1 стирает SUT0 бит-предохранитель.

3. Подать на вывод WR отрицательный импульс и ожидать перехода вывода RDY/BSY на высокий уровень

Программирование битов блокирования

Алгоритм программирования битов блокирования приведен ниже (подробности загрузки команд, адресов и данных см. в разделе Программирование Flash памяти.

1.Загрузить команду 0010 0000.

2.Загрузить данные.

Бит 2 = 0 программирует бит блокирования 2 Бит 1 = 0 программирует бит блокирования 1

3.Подать на вывод WR отрицательный импульс и ожидать перехода вывода RDY/BSY на высокий уровень

Биты блокирования могут быть очищены только при выполнении операции очистки кристалла

Чтение битов-предохранителей и битов блокирования

Алгоритм чтения битов-предохранителей и битов блокирования приведен ниже (подробности загрузки команд, адресов и данных см. в разделе Программирование Flash памяти.

1.Загрузить команду 0000 0100.

2.Установить OE в состояние 0 и BS1 в состояние 0 или 1. По выводам PB(7 - 0) можно считать состояния битов-предохранителей и битов блокирования.

При BS1 = 0

Бит 5: бит-предохранитель SPIEN (0 - запрограммирован, 1 - очищен) Бит 3: бит-предохранитель SPIEN (0 - запрограммирован, 1 - очищен) Бит 1: бит-предохранитель SUT1 (0 - запрограммирован, 1 - очищен) Бит 0: бит-предохранитель SUT0 (0 - запрограммирован, 1 - очищен). При BS1 = 0

Бит 2: бит блокирования LB1 (0 - запрограммирован, 1 - очищен) Бит 1: бит блокирования LB0 (0 - запрограммирован, 1 - очищен)

3.Установить OE в состояние 1.

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

Алгоритм чтения байтов сигнатуры приведен ниже (подробности загрузки команд, адресов и данных см. в разделе Программирование Flash памяти.

1.Загрузить команду 0000 1000.

2.Загрузить байт адреса ($00 - $02).

3.Установить OE в состояние 0 и BS1 в состояние 0. По выводам PB(7 - 0) можно считать байт сигнатуры.

4.Установить OE в состояние 1.

Команда загружается только перед чтением первого байта.


Программирование Flash и EEPROM памяти по последовательному каналу (Serial Downloading)

И Flash память программ и EEPROM память данных могут быть запрограммированы по последовательной шине SPI. При этом вывод RESET должен быть подключен к уровню GND. Последовательный интерфейс организуется посредством выводов SCK, RXD/PDI (вход) и TXD/PDO (выход). После установки на выводе RESET низкого уровня, прежде чем начать операции программирования/стирания, необходимо выполнить команду «Разрешить программирование». При программировании EEPROM в процессе самотактируемой операции программирования выполняется автоматическое стирание (только в режиме последовательного программирования) и, следовательно, на требуется выполнения команды очистки кристалла. Операция очистки кристалла устанавливает содержимое всех ячеек памяти и в памяти программ и в EEPROM памяти в состояние $FF.

Матрицы памяти программ и EEPROM памяти расположены в отдельных адресных пространствах:

ATmega603: с $0000 по $7FFF для памяти программ и с $0000 по $07FF для EEPROM памяти.

ATmega103: с $0000 по $FFFF для памяти программ и с $0000 по $0FFF для EEPROM памяти.

Внешний системный тактовый сигнал подается на вывод XTAL1. Кварцевый кристалл подсоединяется между выводами XTAL1 и XTAL2. Минимальная длительность периодов высокого и низкого уровня на входе последовательного тактового сигнала (SCK) должна быть:

Низкий уровень - не менее 2 тактовых циклов XTAL1. Высокий уровень - не менее 2 тактовых циклов XTAL1.

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

Для программирования и проверки микроконтроллера ATmega103/L в последовательном режиме рекомендуется следующий алгоритм (формат 4-байтовых команд см. в таблице 39):

1.Выполнить последовательность включения питания:

Подать на выводы VCC и GND напряжение питания, причем выводы RESET и SCK во время подачи питания должны быть на уровне 0. Если к выводам XTAL1 и XTAL2 не подсоединен кварцевый кристалл, то тактовый сигнал подается на вывод XTAL1. В ряде систем программирующий не может гарантировать нахождение вывода SCK на низком уровне в течение всего периода подачи питания. В этом случае на вывод RESET должен быть подан положительный импульс длительностью не менее двух циклов XTAL1 после того как на SCK будет установлен уровень 0.

2.Сделать выдержку не менее 20 мс и разрешить программирование в последовательном режиме посылкой на вывод PE0 (PDI/RXD).последовательной команды «Разрешить программирование».

3.При выдаче третьего байта команды «Разрешить программирование»., значение, установленное как вторым байтом ($ 53), будет возвращено в течение передачи третьего байта. Если значение $53 не будет возвращено необходимо подать на вывод SCK положительный импульс и вновь послать команду «Разрешить программирование». Если возврат значения $53 не будет получен в течение 32 попыток, то связь устанавливалась с неработающим устройством.

4.Если была выполнена очистка кристалла (выполняется если необходимо



[стр.Начало] [стр.1] [стр.2] [стр.3] [стр.4] [стр.5] [стр.6] [стр.7] [стр.8] [стр.9] [стр.10] [стр.11] [стр.12] [стр.13] [стр.14] [стр.15] [стр.16] [стр.17] [стр.18] [стр.19] [стр.20] [стр.21] [стр.22] [стр.23] [стр.24] [стр.25] [стр.26] [стр.27] [стр.28] [стр.29] [стр.30] [стр.31] [стр.32] [стр.33] [стр.34] [стр.35] [стр.36] [стр.37] [стр.38] [стр.39] [стр.40] [стр.41] [стр.42] [стр.43] [стр.44] [стр.45] [стр.46] [стр.47] [стр.48] [стр.49] [стр.50] [стр.51]