Материал: 8-разрядные микроконтроллеры Atmel

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

ÊÒÖ-ÌÊ

Эти три байта расположены в отдельном адресном пространс тве.

Для микроконтроллера ATmega603 это:

1.$00: $1E (показывает что прибор изготовлен фирмой Atmel)

2.$01: $06 (показывает что прибор оснащен 64 Кбайтами Flash памяти)

3.$02: $01 (если по адресу $01 находится содержимое $06, то это микроко нтроллер ATmega603)

Для микроконтроллера Atmega103 это:

1.$00: $1E (показывает что прибор изготовлен фирмой Atmel)

2.$01: $01 (показывает что прибор оснащен 128Кбайтами Flash памяти)

3.$02: $01 (если по адресу $01 находится содержимое $01, то это микроко нтроллер Atmega103)

Программирование Flash и EEPROM памяти

Микроконтроллеры ATmega603/103 оснащены внутрисистемно программируемой Flash памятью, емкостью 64/128 Кбайт, и 2/4 Кбайтами EEPROM памяти данных. При поставке микроконтроллеров и встроенн ая Flash память программ и EEPROM память данных находятся в очищеном состоянии (т.е. соде ржимое в состоянии $FF) и они готовы к программированию. Приборы поддерживают р ежим высоковольтного (12 В) параллельного программирования и режим низковольног о последовательного программирования. Напряжение программирования 12 В исполь зуется только если программирование разрешено, в ином случае ток по этому вы воду не потребляется. Режим последовательного программирования является обыч ным способом загрузки программ и данных в микроконтроллеры, находящиеся непоср едственно в системе пользователя.

Матрица памяти программ микроконтроллеров ATmega603/103 организо вана из 256/512 страниц по 256 байт каждая. При программировании Flash памя ти данные программы фиксируются в буфере страницы, что позволяет пр ограммировать сразу целую страницу данных программы в любом из режимов програ ммирования.

Матрица EEPROM памяти данных микроконтроллеров программируе тся побайтово (байт - за - байтом) во всех режимах программировани я. В последовательном режиме программирования встроенная функция самотактиро вания EEPROM выполняет автоматическую предварительную очистку каждого програм мируемого байта.

Режим параллельного программирования

В данном разделе описывается программирование и проверк а Flash памяти программ, EEPROM памяти данных, битов блокирования программир ования памяти и битов-предохранителей в режиме параллельного программи рования. Используемые при этом импульсы должны быть длительностью не менее 500 нс, если это специально не оговорено.

Обозначения сигналов

В данном разделе ряд выводов микроконтроллеров ATmega603/103 указы вается обозначениями сигналов, отражающими их функциональное н азначение в процессе параллельного программирования, а не по обозначениям выв одов. Выводы не указанные в таблице имеют обычные обозначения.

149

ATMEL

 

 

ÊÒÖ-ÌÊ

 

 

 

 

Таблица 35. Соответствие обозначений выводов обозначениям сигналов

Обозначение

Обозна-

 

 

сигнала

 

чение

I/O

Описание

в режиме

 

вывода

 

 

программи-

 

 

 

 

рования

 

 

 

 

RDY /

 

 

PD1

O

0: Прибор занят программированием, 1: Прибор готов

BSY

ê

 

 

 

 

 

 

новой команде

 

 

 

 

 

 

 

 

 

 

 

 

OE

 

 

PD2

I

Разрешение выхода (Активен низким уровнем)

 

 

 

PD3

I

Импульс записи (Активен низким уровнем)

 

W R

 

BS1

PD4

I

Выбор байта (бит 0)

 

XA0

PD5

I

Режим XTAL (бит 0)

 

XA1

PD6

I

Режим XTAL (бит 1)

 

 

 

 

 

 

 

 

 

 

 

BS2

PD7

I

Выбор байта (бит 2 -всегда на низком уровне)

 

 

 

 

 

 

 

 

 

 

 

PAGEL

PA0

I

Загрузка страницы программирования памяти

 

 

 

 

 

 

 

 

 

 

Биты XA1/XA0 определяют действие, запускаемое по положительно му импульсу на XTAL1. Установки битов представлены в следующей таблице:

Таблица 36. Кодирование битов XA1 и XA0

XA1

XA0

Характер действия при поступлении импульса на XTAL1

0

0

Загрузка Flash или EEPROM адреса (старший или младший байт адреса Flash

 

 

памяти определяет бит BS1)

0

1

Загрузка данных (старший или младший байт адреса Flash памяти определяет бит

 

 

BS1)

 

 

 

1

0

Загрузка команды

 

 

 

1

1

Нет действия, ожидание

 

 

 

При поступлении импульсов WR или OE загруженная команда опре деляет действие на входе или выходе. Команда является байтом, в ко тором каждый бит определяет функцию, как это отражено в таблице:

 

Таблица 37. Кодирование битов байта команды

N áèòà

 

Выполняемая операция при установленном бите

 

 

 

7

 

Очистка кристалла

 

 

 

6

 

Запись бита-предохранителя. Размещаются в байте данных по следующим битам:

 

 

D5: SPIEN бит-предохранитель, D3: EESAVE бит-предохранитель, D1: SUT1 бит-

 

 

предохранитель, D0: SUT0 бит-предохранитель (Примечание: запис ь 0 для

 

 

программирования, запись 1 для стирания)

 

 

 

5

 

Запись бита блокирования. Размещаются в байте данных по следующим битам::D2:

 

 

LB2, D1: LB1 (Примечание: запись 0 для программирования)

 

 

 

4

 

Запись Flash или EEPROM памяти (определяется битом 0)

 

 

 

3

 

Чтение сигнатуры

2

 

Чтение битов блокирования и битов-предохранителей. Размещаются в байте данных

 

 

по следующим битам:D5: SPIEN бит-предохранитель, D3: EESAVE бит-предохра нитель,

 

 

D2: LB2, D1: SUT1/LB1, D0: SUT0 (Примечание: состояние 0 программируется)

 

 

 

1

 

Чтение из Flash или EEPROM памяти (определяется битом 0)

 

 

 

0

 

0 : Обращение к Flash, 1 : Обращение к EEPROM

 

 

 

150

ÊÒÖ-ÌÊ

Установка режима программирования

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

1.Подать напряжение 4,5 - 5,5 В между выводами VCC и GND.

2.Установить на выводах RESET и BS низкий уроâåíü è ожидать не менее 100 нс.

3.Подать напряжение 11,5 - 12,5 В на вывод RESET. Состояние вывода BS1 в течение 100 нс после подачи напряжения +12 В меняться не должно , иначе режим программирования установлен не будет.

Очистка кристалла

Операция очистки кристалла очищает Flash и EEPROM память и биты блокирования. Биты блокирования не сбрасываются до тех по р, пока память программ не будет полностью очищена. Состояние битов-предохраните лей при очистке кристалла остаются неизменным. Очистка кристалла должна выполнять ся перед программированием Flash памяти.

Загрузка команды очистки кристалла (Chi p Erase)

1.Установить биты XA1 и XA0 в состояние 1 и 0. Эта установка разрешает загрузку команды.

2.Установить бит BS1 в состояние 0.

3.Установить биты PB(7 - 0) в состояние 1000 0000. Это команда очистки кристалла.

4.Подать на вывод XTAL1 положительный импульс. Этим импульсом загружается команда и запускается процедура очистки матриц Flash и EEPROM памя ти. После подачи импульса на XTAL1 на WR подается отрицательный импульс, чтобы обеспечить в конце цикла стирания памяти стирание бита блокировки, и ожидать по крайней мере 10 мс. Процедура очистки кристалла не приводит к какой либо активности вывода RDY/BSY.

Программирование Flash памяти

Flash память микроконтроллеров ATmega603/103 организован из 256/512 страниц по 256 байт каждая. При программировании Flash памяти да нные программы фиксируются в буфере страницы, что позволяет единовремен но программировать целую страницу. Ниже приведена процедура, описывающая программ ирование всего объема Flash памяти.

A:Загрузка команды программирования Flash памяти (Program Flash)

1.Установить биты XA1 и XA0 в состояние 1 и 0, соответственно. Эта у становка разрешает загрузку команды.

2.Установить бит BS1 в состояние 0.

3.Установить биты PB(7 - 0) в состояние 0001 0000. Это команда программирования Flash памяти.

4.Подать на вывод XTAL1 положительный импульс. Этим импульсом загружается команда.

B:Загрузка младшего байта адреса

1.Установить биты XA1 и XA0 в состояние 0 и 0. Эта установка разрешает загрузку адреса

2.Установить бит BS1 в состояние 0.

3.Установить в битах PB(7 - 0) младший байт адреса ($00 - $FF).

4.Подать на вывод XTAL1 положительный импульс. Этим импульсом загружается младший байт адреса.

151

ATMEL

ÊÒÖ-ÌÊ

C:Загрузка байта данных

1.Установить биты XA1 и XA0 в состояние 0 и 1, соответственно. Эта установка разрешает загрузку данных.

2.Установить в битах PB(7 - 0) младший байт данных ($00 - $FF).

3.Подать на вывод XTAL1 положительный импульс. Этим импульсом загружается байт данных.

D:Фиксация младшего байта данных

1.Установить бит BS1 в состояние 0. Эта установка выбирает младший байт данных.

2.Подать на вывод PAGEL положительный импульс. Этим импульсом загружается байт данных.

E:Загрузка байта данных

1.Установить биты XA1 и XA0 в состояние 0 и 1, соответственно. Эта установка разрешает загрузку данных.

2.Установить в битах PB(7 - 0) старший байт данных ($00 - $FF).

3.Подать на вывод XTAL1 положительный импульс. Этим импульсом загружается байт данных.

F:Фиксация старшего байта данных

1.Установить бит BS1 в состояние 1. Эта установка выбирает старший байт данных.

2.Подать на вывод PAGEL положительный импульс. Этим импульсом загружается байт данных.

G:Пункты с B по F повторяются 128 раз до полного заполнения буфе ра страницы.

H:Загрузка старшего байта адреса

1.Установить биты XA1 и XA0 в состояние 0 и 0, соответственно. Эта установка разрешает загрузку адреса.

2.Установить бит BS1 в состояние 1. Эта установка выбирает старший байт адреса.

3.Установить в битах PB(7 - 0) старший байт адреса (для Atmega603: $7F, для Atmega103: $FF).

4.Подать на вывод XTAL1 положительный импульс. Этим импульсом загружается старший байт адреса.

I:Программирование страницы

1.Подать на вывод WR отрицательный импульс. Этим иìïóльсом запускается программирование страницы данных. Вывод переходит RDY/BSY на н изкий уровень.

2.Ожидать перехода вывода RDY/BSY на высокий уровень.

J:Завершение программирования страницы.

1.Установить биты XA1 и XA0 в состояние 1 и 0. Эта установка разрешает загрузку команды.

2.Установить биты PB(7 - 0) в состояние 0000 0000. Это команда «Нет операции».

3.Подать на вывод XTAL1 положительный импульс. Этим импульсом загружается команда и сбрасываются все внутренние сигналы записи.

K:Пункты с A по J повторяются 256/512 раз, или до тех пор, пока все дан ные не будуò запрограммированы.

152

ÊÒÖ-ÌÊ

Программирование 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 стирает SPIE N бит-предохранитель.

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

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

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

153

Источник: https://studfile.net/preview/16521258/