Таблица 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 в секторе прикладной программы не позволяет считать данные из загрузочного сектора. Если векторы прерываний размещены в секторе прикладной программы, то при выполнении команд в загрузочном секторе прерывания отключаются. |
Прим.:
Конфигурационные биты
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 (незапрограммированное) |
Прим.:
См. "Совместимость ATmega103 и ATmega128". См. "Регистр управления сторожевым таймером - 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 (незапрограммированное) |
Прим.:
Таблица 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) |
Прим.:
На состояние конфигурационных бит не оказывает влияния команда стирания кристалла "Chip Erase". Обратите внимание, что доступ к конфигурационным битам заблокирован, если запрограммирован бит защиты LB1. Поэтому, конфигурационные биты необходимо программировать перед программированием бит защиты.
Защита конфигурационных бит
Доступ к конфигурационным битам блокируется, если микроконтроллер перешел в режим программирования и изменение их значений не даст никакого эффекта до тех пор, пока микроконтроллер не выйдет из режима программирования. Данное не распространяется на бит EESAVE и он может быть запрограммирован в любой момент. Доступ к конфигурационным битам также блокируется при подаче питания в нормальном режиме работы (не программировании).
Сигнатурные байты
Все микроконтроллеры Atmel имеют трехбайтный сигнатурный код, который позволяет идентифицировать устройство. Код можно считать как в параллельном, так и в последовательном режимах программирования, в т. ч. когда микроконтроллер защищен. У каждого байта сигнатурного кода имеется свой собственный адрес и назначение.
Для ATmega128 сигнатурными байтами являются:
$000: $1E (идентифицирует производителя: Atmel) $001: $97 (идентифицирует размер флэш-памяти: 128 кбайт) $002: $02 (идентифицирует тип микроконтроллера: ATmega128, если байт $001 равен $97)Калибровочный байт
Внутри ATmega128 хранятся четыре различных калибровочных значений для внутреннего RC-генератора. Данные значения хранятся по адресам 0x000, 0x0001, 0x0002 и 0x0003 и соответствуют частотам генератора 1, 2, 4 и 8 МГц. В процессе сброса в регистр OSCCAL автоматически записывается значение калибровочного байта для частоты 1 МГц. Если используется другая частота, то соответствующее значение должно быть вручную записано в регистр OSCCAL (см. "Регистр калибровки генератора - OSCCAL").
Параметры параллельного программирования, расположение выводов и команды
В данном разделе описывается как у ATmega128 запрограммировать и проверить флэш-память, ЭСППЗУ, биты защиты и конфигурационные биты. Полагается, что длительность импульсов не менее 250 нс, если не имеется других указаний.
|
Из за большого объема этот материал размещен на нескольких страницах:
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 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |


