ATmega128, atmega128L 8-разрядный avr-микроконтроллер с внутрисистемно программируемой флэш-памятью емкостью 128 кбайт

Вид материалаДокументы
Программирование памяти
Таблица 116. Байт с битами защиты
Таблица 117. Режимы защиты
Конфигурационные биты
Таблица 118. Расширенный конфигурационный байт
Таблица 119. Старший конфигурационный байт
Таблица 120. Младший конфигурационный байт
Защита конфигурационных бит
Сигнатурные байты
Параметры параллельного программирования, расположение выводов и команды
Наименование сигналов
Таблица 122. Состояния выводов, которые используются для входа в режим программирования
Таблица 123. Назначение кодов XA1 и XA0
Таблица 124. Коды команд
Таблица 125. Количество слов в странице и количество страниц во флэш-памяти
Таблица 126. Количество слов в странице и количество страниц в ЭСППЗУ
Подобный материал:
1   ...   38   39   40   41   42   43   44   45   46

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


Биты защиты памяти программ и данных

ATmega128 содержит 6 битов защиты, которые можно оставить в незапрограммированном состоянии ("1") или же запрограммировать ("0") для активизации дополнительных функций, представленных в таблице 117. Стирание бит защиты (установка "1") может быть выполнена только командой стирание кристалла (Chip Erase).

Таблица 116. Байт с битами защиты

Биты защиты

Разряд

Описание

Исходное значение

 

7

-

1 (незапрограммированный)

 

6

-

1 (незапрограммированный)

BLB12

5

Бит защиты загрузочного сектора

1 (незапрограммированный)

BLB11

4

Бит защиты загрузочного сектора

1 (незапрограммированный)

BLB02

3

Бит защиты загрузочного сектора

1 (незапрограммированный)

BLB01

2

Бит защиты загрузочного сектора

1 (незапрограммированный)

LB2

1

Бит защиты

1 (незапрограммированный)

LB1

0

Бит защиты

1 (незапрограммированный)

Прим.: "1" означает незапрограммированное состояние, а "0" - запрограммированное.

Таблица 117. Режимы защиты

Биты защиты памяти

Тип защиты

Режим LB

LB2

LB1

 

1

1

1

Нет защиты памяти.

2

1

0

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

3

0

0

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

Режим BLB0

BLB02

BLB01

 

1

1

1

Нет ограничений действия инструкций SPM или (E)LPM при адресации сектора прикладной программы.

2

1

0

SPM не записывает данные в сектор прикладной программы.

3

0

0

SPM не записывает данные в сектор прикладной программы, а выполнение инструкции (E)LPM в загрузочном секторе не позволяет считать данные из сектора прикладной программы. Если векторы прерываний размещены в загрузочном секторе, то при выполнении команд в секторе прикладной программы прерывания отключаются.

4

0

1

Выполнение (E)LPM в загрузочном секторе не позволяет считать данные из сектора прикладной программы. Если векторы прерываний размещены в загрузочном секторе, то при выполнении команд в секторе прикладной программы прерывания отключаются.

Режим BLB1

BLB12

BLB11

 

1

1

1

Нет ограничений действия инструкций SPM или (E)LPM при адресации загрузочного сектора.

2

1

0

SPM не записывает данные в загрузочный сектор.

3

0

0

SPM не записывает данные в загрузочный сектор, а выполнение инструкции (E)LPM в секторе прикладной программы не позволяет считать данные из загрузочного сектора. Если векторы прерываний размещены в секторе прикладной программы, то при выполнении команд в загрузочном секторе прерывания отключаются.

4

0

1

Выполнение (E)LPM в секторе прикладной программы не позволяет считать данные из загрузочного сектора. Если векторы прерываний размещены в секторе прикладной программы, то при выполнении команд в загрузочном секторе прерывания отключаются.

Прим.:

  1. Конфигурационные биты необходимо программировать перед программированием бит защиты.
  2. "1" означает незапрограммированное состояние, а "0" - запрограммированное.

Конфигурационные биты

ATmega128 имеет три конфигурационных байта. Таблицы 118 - 120 кратко описывают функционирование и расположение всех конфигурационных бит. Обратите внимание, что если конфигурационный бит запрограммирован, то при его считывании возвращается лог. 0.

Таблица 118. Расширенный конфигурационный байт

Наименование бита

Разряд

Описание

Исходное значение

-

7

-

1

-

6

-

1

-

5

-

1

-

4

-

1

-

3

-

1

-

2

-

1

M103C(1)

1

Режим совместимости с ATmega103

0 (запрограммированное)

WDTON(2)

0

Активизация сторожевого таймера

1 (незапрограммированное)

Прим.:

  1. См. "Совместимость ATmega103 и ATmega128".
  2. См. "Регистр управления сторожевым таймером - WDTCR".

Таблица 119. Старший конфигурационный байт

Наименование бита

Разряд

Описание

Исходное значение

OCDEN(4)

7

Включение встроенного блока отладки

1 (незапрограммированное, функция встроенной отладки отключена)

JTAGEN(5)

6

Включение JTAG-интерфейса

0 (запрограммированное, JTAG включен)

SPIEN(1)

5

Разрешение последовательной загрузки программы и данных

0 (запрограммированное, программирование через SPI разрешено)

CKOPT(2)

4

Настройка генератора

1 (незапрограммированное)

EESAVE

3

Запрет стирания ЭСППЗУ командой стирание кристалла

1 (незапрограммированное, стирание кристалла вызывает стирание ЭСППЗУ)

BOOTSZ1

2

Выбор размера загрузочного сектора (см. табл. 113)

0 (запрограммированное) (3)

BOOTSZ0

1

Выбор размера загрузочного сектора (см. табл. 113)

0 (запрограммированное)(3)

BOOTRST

0

Выбор вектора сброса

1 (незапрограммированное)

Прим.:

  1. Конфигурационный бит SPIEN недоступен в режиме последовательного программирования через SPI.
  2. Функционирование конфигурационного бита CKOPT зависит от установок бит CKSEL. См. "Источники синхронизации".
  3. Исходное значение бит BOOTSZ1..0 соответствует выбору максимальному размеру загрузочного сектора. См. таблицу 113.
  4. Не забудьте отключить бит OCDEN перед поставкой готового изделия заказчику, независимо от того какие установки имеют биты защиты и конфигурационный бит JTAGEN. Если бит OCDEN будет запрограммирован, то некоторые части системы синхронизации микроконтроллера останутся в работе при переводе микроконтроллера в экономичные режимы командой sleep. В этом случае микроконтроллер будет потреблять повышенную мощность.
  5. Если интерфейс JTAG оставлен неподключенным, то конфигурационный бит JTAGEN должен быть по возможности отключен. Это позволит избежать статический ток через вывод TDO JTAG-интерфейса.

Таблица 120. Младший конфигурационный байт

Наименование бит

Разряд

Описание

Исходное значение

BODLEVEL

7

Порог срабатывания супервизора питания

1 (незапрограммированное)

BODEN

6

Разрешение супервизора питания

1 (незапрограммированное, супервизор отключен)

SUT1

5

Выбор времени запуска

1 (незапрограммированное)(1)

SUT0

4

Выбор времени запуска

0 (запрограммированное)(1)

CKSEL3

3

Выбор тактового источника

0 (запрограммированное)(2)

CKSEL2

2

Выбор тактового источника

0 (запрограммированное)(2)

CKSEL1

1

Выбор тактового источника

0 (запрограммированное)(2)

CKSEL0

0

Выбор тактового источника

1 (незапрограммированное)(2)

Прим.:

  1. Исходные установки SUT1..0 соответствуют выбору максимальному времени старта. Подробности представлены в таблице 14.
  2. Исходные установки CKSEL3..0 соответствуют выбору внутреннего RC-генератора частотой 1 МГц. Подробности представлены в таблице 6.

На состояние конфигурационных бит не оказывает влияния команда стирания кристалла "Chip Erase". Обратите внимание, что доступ к конфигурационным битам заблокирован, если запрограммирован бит защиты LB1. Поэтому, конфигурационные биты необходимо программировать перед программированием бит защиты.

Защита конфигурационных бит

Доступ к конфигурационным битам блокируется, если микроконтроллер перешел в режим программирования и изменение их значений не даст никакого эффекта до тех пор, пока микроконтроллер не выйдет из режима программирования. Данное не распространяется на бит EESAVE и он может быть запрограммирован в любой момент. Доступ к конфигурационным битам также блокируется при подаче питания в нормальном режиме работы (не программировании).

Сигнатурные байты

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

Для ATmega128 сигнатурными байтами являются:

  1. $000: $1E (идентифицирует производителя: Atmel)
  2. $001: $97 (идентифицирует размер флэш-памяти: 128 кбайт)
  3. $002: $02 (идентифицирует тип микроконтроллера: ATmega128, если байт $001 равен $97)

Калибровочный байт

Внутри ATmega128 хранятся четыре различных калибровочных значений для внутреннего RC-генератора. Данные значения хранятся по адресам 0x000, 0x0001, 0x0002 и 0x0003 и соответствуют частотам генератора 1, 2, 4 и 8 МГц. В процессе сброса в регистр OSCCAL автоматически записывается значение калибровочного байта для частоты 1 МГц. Если используется другая частота, то соответствующее значение должно быть вручную записано в регистр OSCCAL (см. "Регистр калибровки генератора - OSCCAL").

Параметры параллельного программирования, расположение выводов и команды

В данном разделе описывается как у ATmega128 запрограммировать и проверить флэш-память, ЭСППЗУ, биты защиты и конфигурационные биты. Полагается, что длительность импульсов не менее 250 нс, если не имеется других указаний.

Наименование сигналов

На рисунке 135 и в таблице 121 показывается расположение и назначение выводов ATmega128, которые используются для параллельного программирования. Выводы XA1/XA0 определяют выполняемое действие при положительном фронте на выводе XTAL1 (см. табл. 123).

Подачей импульсов на WR или OE в зависимости от загруженной команды определяется выполняемое действие. Описание команд представлено в таблице 124.


Рисунок 135. Параллельное программирование


Таблица 121. Расположение и назначение выводов программирования

Наименование сигнала в режиме программирования

Наименование вывода

Направление

Функция

RDY/BSY

PD1

Выход

0 - микроконтроллер занят программированием;1 - микроконтроллер готов к загрузке новой команды

OE

PD2

Вход

Разрешение вывода (активный низкий)

WR

PD3

Вход

Строб записи (активный низкий)

BS1

PD4

Вход

Выбор байта 1 ("0" выбирает младший байт, "1" выбирает старший байт)

XA0

PD5

Вход

Код функции XTAL, разряд 0

XA1

PD6

Вход

Код функции XTAL, разряд 1

PAGEL

PD7

Вход

Загрузка страницы данных в память программ и ЭСППЗУ

BS2

PA0

Вход

Выбор байта 2 ("0" выбирает младший байт, "1" выбирает 2-ой старший байт)

DATA

PB7-0

Вход/выход

Двунаправленная шина данных (выводит данные, когда OE=0 )

Таблица 122. Состояния выводов, которые используются для входа в режим программирования

Вывод

Обозначение

Значение

PAGEL

Prog_enable[3]

0

XA1

Prog_enable[2]

0

XA0

Prog_enable[1]

0

BS1

Prog_enable[0]

0

Таблица 123. Назначение кодов XA1 и XA0

XA1

XA0

Выполняемая функция во время импульса на XTAL1

0

0

Загрузка адреса флэш-памяти или ЭСППЗУ (какой байт адреса, старший или младший определяется BS1)

0

1

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

1

0

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

1

1

Нет никаких действий (холостой ход)

Таблица 124. Коды команд

Код команды

Функция

1000 0000

Стирание кристалла (Chip Erase)

0100 0000

Запись конфигурационных бит

0010 0000

Запись бит защиты

0001 0000

Запись флэш-памяти

0001 0001

Запись ЭСППЗУ

0000 1000

Чтение сигнатурных байт и калибровочного байта

0000 0100

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

0000 0010

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

0000 0011

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

Таблица 125. Количество слов в странице и количество страниц во флэш-памяти

Размер флэш-памяти

Размер страницы

PCWORD

Кол. страниц

PCPAGE

PCMSB

64 кслов (128 кбайт)

128 слов

PC[6:0]

512

PC[15:7]

15

Таблица 126. Количество слов в странице и количество страниц в ЭСППЗУ

Размер ЭСППЗУ

Размер страницы

PCWORD

Кол. страниц

PCPAGE

EEAMSB

4 кбайт

8 байт

EEA[2:0]

512

EEA[11:3]

8