Главная страница
Навигация по странице:

  • Организация памяти программ и данных

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

  • Переключение в режим программирования

  • Управление процессом программирования FLASH-памяти

  • Управление процессом программирования EEPROM-памяти

  • Параллельное программирование

  • Переключение в режим параллельного программирования

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

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

  • Микропроцессоры AVR. Реферат Микроконтроллеры avr студента 3го курса Курапова Анатолия Введение


    Скачать 0.65 Mb.
    НазваниеРеферат Микроконтроллеры avr студента 3го курса Курапова Анатолия Введение
    Дата20.10.2022
    Размер0.65 Mb.
    Формат файлаdoc
    Имя файлаМикропроцессоры AVR.doc
    ТипРеферат
    #745123
    страница7 из 8
    1   2   3   4   5   6   7   8

    Идентификатор
    Все микроконтроллеры фирмы Atmel имеют три 8-битные ячейки, содержимое которых позволяет идентифицировать устройство. В первой ячейке содержится код производителя $00, во второй — код объема FLASH-памяти $01, а в третьей — код устройства $02. Как и конфигурационные ячейки, ячейки идентификатора расположены в отдельном адресном пространстве, доступ к которому возможен только в режиме программирования. Однако в отличие от конфигурационных ячеек ячейки идентификатора, по понятным причинам, доступны только для чтения.

    Значение кода устройства у разных моделей может совпадать. Поэтому устройство следует идентифицировать только по совокупности значений ячеек $01 и $02, так как именно эта пара чисел является уникальной для каждого микроконтроллера.
    Калибровочные ячейки
    В калибровочные ячейки при изготовлении микроконтроллера заносятся калибровочные константы, предназначенные для подстройки на номинальную частоту внутреннего RС-генератора. Количество этих ячеек зависит от того, на скольких частотах может работать внутренний RC-генератор. В моделях ATmega8515x/8535x и ATmega8x/16x/32x/64x/128x имеется четыре 8-битных ячейки, а в остальных моделях — одна ячейка. Располагаются они в старших байтах адресного пространства ячеек идентификатора.

    Загрузка калибровочной константы в регистр OSCCAL осуществляется аппаратно при нахождении микроконтроллера в состоянии сброса. Однако в моделях ATmega8515x/8535x и ATmega8x/16x/32x/64x/128x генератор автоматически калибруется только на частоту 1 МГц. Поэтому при использовании другой частоты RС-генератора его калибровку необходимо осуществлять вручную. Для этого программатор во время программирования должен прочитать содержимое калибровочной ячейки и занести его по какому-либо адресу FLASH-памяти программ. А программа должна после старта считать это значение из памяти программ и занести его в регистр OSCCAL.
    Организация памяти программ и данных
    В микроконтроллерах семейства Mega используется страничная организация памяти программ. При программировании весь объем FLASH-памяти разбивается на 16-битные страницы, размер которых, а также их количество зависят от объема памяти программ микроконтроллера.

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

    Аналогичным образом организована и EEPROM-память. Размер 8-битных страниц EEPROM-памяти.

    Однако следует отметить, что во многих моделях страничная организация EEPROM-памяти используется только при программировании в параллельном режиме, а программирование по последовательному каналу осуществляется побайтно.
    Программирование по последовательному каналу
    В режиме программирования по последовательному каналу программирование памяти программ и данных осуществляется по последовательному интерфейсу SPI. Как правило, этот режим используется для программирования (перепрограммирования) микроконтроллера непосредственно в устройстве.

    Схема включения микросхем в режиме программирования по последовательному каналу приведена на рис. 9.2. На этом же рисунке показано два варианта разводки колодки для подключения программатора, рекомендуемые компанией Atmel.


    Рис. 9.2. Включение микроконтроллеров в режиме программирования по последовательному каналу
    Как видно из рис. 9.2, для обмена данными между программатором и устройством используются три линии: SCK (тактовый сигнал), MOSI (вход данных) и MISO (выход данных).

    Как и в рабочем режиме, при программировании по последовательному каналу микроконтроллеру требуется источник тактового сигнала. В качестве такового может использоваться любой из допустимых для микроконтроллера источников. При этом должно выполняться следующее условие: длительность импульсов как НИЗКОГО, так и ВЫСОКОГО уровня сигнала SCK должна быть больше 2 периодов тактового сигнала микроконтроллера.

    Программирование осуществляется путем посылки 4-байтных команд на вывод MOSI микроконтроллера. Результат выполнения команд чтения снимается с вывода MISO микроконтроллера. Передача команд и выдача результатов их выполнения осуществляются от старшего бита к младшему. При этом “защелкивание” входных данных выполняется по нарастающему фронту сигнала SCK, а “защелкивание” выходных данных – по спадающему.
    Переключение в режим программирования
    Для перевода микроконтроллера в режим программирования по последовательному каналу необходимо выполнить следующие действия:

    подать на микроконтроллер напряжение питания, при этом на выводах SCK и RESET должно присутствовать напряжение НИЗКОГО уровня. Выждать не менее 20 мс;

    послать на вывод MOSI команду “Разрешение программирования”;

    для контроля прохождения команды при посылке 3-го байта возвращается значение 2-го байта ($53).

    после завершения программирования на вывод RESET можно подать напряжение ВЫСОКОГО уровня для перевода микроконтроллера в рабочий режим либо выключить его.

    В последнем случае необходимо выполнить следующую последовательность действий:

    подать на вывод XTAL1 напряжение НИЗКОГО уровня, если тактирование микроконтроллера осуществляется от внешней схемы;

    подать на вывод RESET напряжение ВЫСОКОГО уровня;

    отключить напряжение питания от микроконтроллера.
    Управление процессом программирования FLASH-памяти
    Программирование памяти программ микроконтроллеров семейства Mega осуществляется постранично. Сначала содержимое страницы побайтно заносится в буфер по командам “Загрузка страницы FLASH-памяти”. В каждой команде передаются младшие биты адреса изменяемой ячейки (положение ячейки внутри страницы) и записываемое значение. Содержимое каждой ячейки должно загружаться в следующей последовательности: сначала младший байт, потом старший.

    Фактическое программирование страницы FLASH-памяти осуществляется после загрузки буфера страницы по команде “Запись страницы FLASH-памяти”.

    Следует помнить, что дальнейшее программирование памяти можно будет выполнять только после завершения записи страницы. Определить момент окончания записи можно тремя способами. Первый и наиболее простой способ — выдерживать между посылкой команд паузу. Второй способ заключается в контролировании содержимого любой из записываемых ячеек после посылки команды записи, а третий способ — опрос флага готовности RDY c помощью соответствующей команды.
    Управление процессом программирования EEPROM-памяти
    Во всех старых моделях программирование EEPROM-памяти осуществляется обычным способом – побайтно. А в новых моделях появился альтернативный способ записи EEPROM-памяти – постраничный. Содержимое страницы побайтно заносится в буфер по командам “Загрузка страницы EEPROM-памяти”, а затем осуществляется фактическое программирование страницы EEPROM-памяти по команде “Запись страницы EEPROM-памяти”. Значения адресов, передаваемые в этих командах, определяются так же, как и при программировании FLASH-памяти. Для определения момента окончания записи можно использовать любой из описанных выше способов.
    Параллельное программирование
    В режиме параллельного программирования от программатора к микроконтроллеру передаются одновременно все биты кода команды или байта данных. Этот режим задействует большое число выводов микроконтроллера и требует использования дополнительного источника повышенного напряжения. Поэтому программирование в параллельном режиме осуществляется специализированными программаторами. Основное применение этого режима — “прошивка” микроконтроллеров перед установкой их на плату в условиях массового производства.

    Схема включения микросхем в режиме параллельного программирования приведена на рис. 9.3.


    Рис. 9.3. Включение микроконтроллеров в режиме параллельного программирования
    Таблица 9.7. Обозначение и функции выводов, используемых при программировании в параллельном режиме

    Сигнал

    Вывод

    Вход/Выход

    Назначение

    RDY/BSY

    PD1

    Выход

    Состояние устройства:

    0 – занято (выполняется предыдущая команда);

    1 – готово к приему следующей команды.

    ОЕ

    PD2

    Вход

    Управление режимом работы шины данных РВ7...РВ0:

    0 — выход, 1 — вход

    WR

    PD3

    Вход

    Сигнал записи (активный уровень — лог. 0)

    BS1

    PD4

    Вход

    Выбор байта (см. Табл. 14.14)

    ХАО

    PD5

    Вход

    Определяют действие, выполняемое по положительному импульсу на выводе XTAL1

    ХА1

    PD6

    Вход

    PAGEL

    PD7

    Вход

    Сигнал загрузки страницы памяти

    BS2

    РАО

    Вход

    Выбор байта (см. Табл. 14.14)

    DATA

    РВ7...РВ0

    Вход/Выход

    Двунаправленная шина данных


    В общих чертах процесс программирования в этом режиме состоит из многократного выполнения следующих операций:

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

    загрузка адреса;

    загрузка данных;

    выполнение команды.

    Последовательность подачи сигналов на выводы микроконтроллера при выполнении различных базовых операций приведена в табл. 9.8.
    Таблица 14.7. Базовые операции программирования в параллельном режиме



    Название операции

    Действия

    1

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

    1.Установить выводы ХА1, ХАО в состояние 10.

    2.Подать на вывод BS1 напряжение лог. 0.

    3.Выставить на шину DATA код команды.

    4.Подать на вывод XTAL1 положительный импульс.

    2

    Загрузка адреса

    1.Установить выводы ХА1, ХАО в состояние 00 (загрузка адреса).

    2.Установить выводы BS2:BS1 в состояние 00 (загрузка младшего

    байта), 01 (загрузка старшего байта) или 10 (загрузка дополнительного

    байта).

    3.Выставить на шину DATA байт адреса.

    4.Подать на вывод XTAL1 положительный импульс.

    3

    Загрузка данных

    1.Установить выводы ХА1, ХАО в состояние 01 (загрузка данных).

    2.Подать на вывод BS1 напряжение лог.0 (загрузка младшего байта) или лог.1 (загрузка старшего байта).

    3.Выставить на шину DATA содержимое байта данных.

    4.Подать на вывод XTAL1 положительный импульс.

    4

    Запись данных в буфер страницы

    1.Подать на вывод BS1 напряжение лог. 1.

    2.Подать на вывод PAGEL положительный импульс.

    5

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

    1.Установить выводы BS2:BS1 в состояние 00 (запись младшего байта),

    01 (запись старшего байта) или 10 (запись дополнительного байта).

    2.Подать на вывод WR отрицательный импульс; при этом на выводе

    RDY/BSY появляется сигнал НИЗКОГО уровня.

    3.Ждать появления на выводе RDY/BSY сигнала ВЫСОКОГО уровня.



    Запись страницы

    1.Установить выводы BS2:BS1 в состояние 00.

    2.Подать на вывод WR отрицательный импульс; при этом на выводе

    RDY/BSY появляется сигнал НИЗКОГО уровня.

    3.Ждать появления на выводе RDY/BSY сигнала ВЫСОКОГО уровня.


    Переключение в режим параллельного программирования
    Первой операцией при программировании микроконтроллера является его перевод в режим программирования. Для перевода микроконтроллера в режим программирования необходимо выполнить следующие действия:

    подать на микроконтроллер напряжение питания;

    подать на вывод RESET напряжение НИЗКОГО уровня и сформировать не менее трех импульсов на выводе XTAL1;

    подать на выводы PAGEL, XA1, ХА0, BS1 напряжение НИЗКОГО уровня на время не менее 100 нс;

    подать напряжение 11.5... 12.5 В на вывод RESET и удерживать напряжение НИЗКОГО уровня на выводах PAGEL, XA1, ХА0, BS1 в течение, как минимум, 10 мкс. Любая активность на указанных выводах в течение этого времени приведет к тому, что микроконтроллер не перейдет в режим программирования выждать не менее 300 мкс перед посылкой следующей команды.
    Стирание кристалла
    Команда “Стирание кристалла” должна выполняться перед каждым перепрограммированием микроконтроллера. Данная команда полностью уничтожает содержимое FLASH- памяти и EEPROM-памяти, а затем сбрасывает ячейки защиты (записывает в них 1). Однако на состояние конфигурационных ячеек данная команда не влияет. Кроме того, в ряде моделей микроконтроллеров семейства Mega можно предотвратить стирание EEPROM-памяти путем программирования конфигурационной ячейки EESAVE.

    Для выполнения команды “Стирание кристалла” необходимо выполнить следующие действия:

    загрузить команду “Стирание кристалла”;

    подать на вывод WR сигнал НИЗКОГО уровня;

    ждать появления на выводе RDY/BSY сигнала ВЫСОКОГО уровня.
    Программирование FLASH-памяти
    Запись FLASH-памяти производится в следующей последовательности:

    загрузить команду “Запись FLASH-памяти”;

    загрузить младший байт адреса (положение ячейки внутри страницы);

    загрузить младший байт данных;

    загрузить старший байт данных;

    запомнить данные в буфере;

    повторить пп. 2...5 до полного заполнения буфера страницы;

    загрузить старший байт адреса (номер страницы);

    записать страницу.

    повторить все пункты для записи остальных страниц памяти программ;

    завершить программирование, загрузив команду “Нет операции”.

    Необходимо отметить, что если для адресации ячейки памяти внутри страницы требуется меньше 8 битов (при размере страницы менее 256 слов), то оставшиеся старшие биты младшего байта адреса используются для адресации страницы при выполнении команды “Запись страницы”.

    Для чтения FLASH-памяти необходимо выполнить следующие действия:

    загрузить команду “Чтение FLASH-памяти”;

    загрузить старший байт адреса;

    загрузить младший байт адреса;

    установить ОЕ и BS1 в 0, после этого с шины данных DATA можно будет считать значение младшего байта содержимого ячейки памяти;

    установить BS1 в 1, после этого с шины данных DATA можно будет считать значение старшего байта содержимого ячейки памяти;

    установить ОЕ в 1.
    Программирование EEPROM-памяти
    Запись EEPROM-памяти производится в следующей последовательности:

    загрузить команду “Запись EEPROM-памяти”;

    загрузить старший байт адреса;

    загрузить младший байт адреса;

    загрузить байт данных;

    запомнить данные в буфере;

    повторить пп. 3...5 до полного заполнения буфера;

    записать страницу.

    Для чтения содержимого EEPROM-памяти необходимо выполнить следующие действия:

    загрузить команду “Чтение EEPROM-памяти”;

    загрузить старший байт адреса;

    загрузить младший байт адреса;

    установить ОЕ и BS1 в 0, после этого с шины данных DATA можно будет считать содержимое ячейки памяти;

    установить ОЕ в 1.
    1   2   3   4   5   6   7   8


    написать администратору сайта