AVR085
Рекомендации по замене AT90S8515 на ATmega8515
Отличительные особенности:
- Ошибки AT90S8515 устранены у ATmega8515
- Изменения в именах
- Доработаны таймеры-счетчики и предделители
- Доработан интерфейс внешней памяти
- Доработана система управления потребляемой мощностью
- Улучшены интерфейсы SPI и УАПП
- Изменена временная диаграмма работы ЭСППЗУ
- Интерфейс программирования
- Установки конфигурационных бит
- Генераторы и выбор задержек при старте
- Изменения в сторожевом таймере
- Прочие отличия
- Данные отличия не доступны в режиме совместимости с AT90S8515
Введение
Данное руководство предназначено для пользователей AT90S8515, желающих перевести свои существующие разработки на микроконтроллер ATmega8515. ATmega8515 имеет два рабочих режима, выбираемых с помощью конфигурационного бита. Бит 8515C включает или отключает режим совместимости с микроконтроллером AT90S8515. По умолчанию бит S8515C не запрограммирован и режим совместимости у ATmega8515 не активен. В режиме совместимости ATmega8515 отличается только неконфликтующими с AT90S8515 расширениями. Кроме того, отличаются их электрические характеристики, например, рабочая частота ATmega8515 выше за счет улучшения технологии производства. Для уточнения электрических характеристик смотрите документацию на микроконтроллер. Если бит S8515C не запрограммирован все новые функции поддерживаются, но переносимый код потребует некоторой доработки.
Некоторые ошибки AT90S8515 устранены в ATmega8515
Следующие разделы из документации по ошибкам AT90S8515 не учитывайте при использовании ATmega8515. См. «AT90S8515 Errata Sheet» для более детального изучения сути ошибок.
Примечание: Некоторые из этих ошибок устранены в последней версии AT90S8515, что в некоторой степени сдерживает необходимость преобразования разработок на основе AT90S8515. |
Действие команд LDS/STS при доступе к внешнему ОЗУ
LDS и STS не нарушают содержимое любого регистра в ATmega8515.
Действие команды STS при доступе к ЭСППЗУ
В ATmega8515 команда STS может использоваться для начала записи в ЭСППЗУ (EEWE в EECR) без нежелательного поведения при выполнении этой инструкции.
Настройка регистра COM1B никогда не приводит к отключению выхода OC1B
В ATmega8515 таймер-счетчик 1 отключен от выхода OC1B, если COM1B1:0 = 0b00 в режиме без ШИМ (non-PWM) и когда COM1B1:0 = 0b00 или 0b01 в ШИМ-режимах. В нормальном режиме это означает, что данный вывод функционирует как порт ввода-вывода общего назначения. В режиме совместимости с AT90S8515 выход OC1B находится в низком состоянии (не в третьем высокоимпедансном состоянии) при отключении таймера-счетчика 1.
УАПП теряет синхронизацию, если линия RXD находится в низком состоянии во время отключенного состояния приемника УАПП
УАПП (устройство асинхронной приемо-передачи) заменен на УСАПП (устройство синхронно-асинхронной приемо-передачи), который не имеет данной проблемы. Стартовый фронт считается действительным только если в регистре управления УСАПП разрешена работа приемника.
Условие сброса выполняется без синхронизации
ATmega8515 имеет новый интерфейс сброса, в котором любой внешний импульс сброса длительностью превышающей минимальное время tRST вызывает внутренний сброс, даже если это условие исчезнет до начала нормальной работы тактового генератора.
Не программируются биты защиты (Lock Bits) при высоком уровне VCC
Нет никаких ограничений по напряжению питания или тактовой частоте, если они соответствуют тем, что приведены в документации на ATmega8515.
SPI-может отправить неправильный байт
В ATmega8515 новый байт может быть записан в регистр данных SPI тем же тактовым фронтом, на котором финишировала предыдущая передача. Нет необходимости ждать завершения предыдущей передачи перед записью следующего байта в регистр данных SPI при работе в режиме мастера.
Сброс во время записи в ЭСППЗУ
Если во время записи в ЭСППЗУ у ATmega8515 возникает сброс или выключение питания, то данные в записываемой ячейке могут быть повреждены, но ATmega8515 не повреждает содержимое остальных ячеек.
Флаг прерывания SPI может быть неопределенным после сброса
ATmega8515 сбрасывает флаг прерывания интерфейса SPI в ноль.
Последовательное программирование при напряжении ниже 3.0В
Нет никаких ограничений по напряжению питания или тактовой частоте, если они соответствуют тем, что приведены в документации на ATmega8515.
Прерывание инструкции пропуска
При вызове прерываний ATmega8515 всегда запоминается правильный адрес возврата, даже при прерывании инструкции пропуска, которая обходит двухсловную инструкцию.
Изменения в именах
У следующих управляющих бит изменены имена, но сохранены те же функции и расположение, что и у AT90S8515:
Таблица 1 – Изменения в именах бит
Имя бита в AT90S8515 |
Имя бита в ATmega8515 |
Регистр ввода-вывода (AT90S8515) |
|
Комментарии |
PWM10n |
WGM1n0 |
TCCR1A |
PWM11 |
WGM11 |
TCCR1A |
|
CTC1 |
WGM12 |
TCCR1B |
|
WDTOE |
WDCE |
WDTCR |
См. “Изменения сторожевого таймера” |
CHR9 |
UCSZ2 |
UCR |
|
OR |
DOR |
USR |
|
SM |
SM1 |
MCUCR |
См. “Улучшения систем управления потребляемой мощностью” |
У следующих регистров ввода-вывода изменены наименования, но они выполняют то же функции и расположены по тем же адресам, что и у AT90S8515:
Таблица 2 – Изменения в наименованиях регистров
Наименование регистра у |
AT90S8515 |
ATmega8515 |
GIMSK |
GICR |
MCUSR |
MCUCSR |
UBRR |
UBRRL |
USR |
UCSRA |
UCR |
UCSRB |
Улучшения таймеров-счетчиков и предделителей
Детальная информация об улучшениях и новых функциях приведена в документации на микроконтроллер. Отличия состоят в следующем:
- Предделитель у ATmega8515 может быть сброшен.
- Переменный верхний предел счета в ШИМ-режиме.
- Для таймера-счетчика 1 к режиму ШИМ с фазовой коррекцией добавлен режим ШИМ с фазо-частотной коррекцией.
- Быстродействующий ШИМ-режим.
- Таймер 0 дополнен функциями широтно-импульсной модуляции и сравнения с аппаратным выходом.
Отличия между ATmega8515 и AT90S8515
Большинство улучшений и изменений, описанных ниже, относятся ко всем таймерам-счетчикам, поэтому, описываются в общем виде. При этом, символ “x” заменяет выходной канал (A или B для таймера-счетчика, не указывается для таймера счетчика 0), а “n” заменяет номер таймера счетчика (n = 0 или 1).
TCNT1 очищается в режиме ШИМ
У AT90S8515 поддерживается три различных разрешающих способностей широтно-импульсной модуляции (ШИМ) – 8, 9 или 10 разрядов. Не смотря на то, что сравниваются только 8, 9 или 10 разрядов, остается возможность записать в регистр TCNT1 значение с большим разрешением. Таким образом, таймер-счетчик завершит счет на 0xFFFF прежде чем уменьшенная разрешающая способность вступит в силу (в т.ч., если выбрано 8-разрядное разрешение и регистр TCNT1 содержит 0x0100, то верхняя граница счета (0x00FF) не будет действовать пока счетчик не досчитает до 0xFFFF, реверсируется и начнет счет к 0x0000 заново). В ATmega8515 это было устранено путем автоматического сбрасывания в ноль неиспользуемых разрядов, тем самым избегая непреднамеренного счета до 0xFFFF. У ATmega8515 регистр TCNT1 никогда не превышает выбранного разрешения.
ATmega8515
Старшие значащие разряды в регистре TCNT1 будут очищены первым положительным фронтом тактовым импульсом от предделителя.
- 8-разр. ШИМ: TCNT1H7:0 = 0
- 9-разр. ШИМ: TCNT1H7:1 = 0
- 10-разр. ШИМ: TCNT1H7:2 = 0
AT90S8515
TCNT1H не очищается
OCR1xH очищается в режиме ШИМ
Очистка регистра OCR1xH в режиме ШИМ слегка отличается от очистки TCNT1. AT90S8515 очищает 6 старших значащих разрядов, если выбран режим ШИМ с 8, 9 или 10-разрядной разрешающей способностью. Т.е., если записать в OCR1x код 0xFFFF в режиме ШИМ, а затем обратно считать, то результат будет равен 0x03FF независимо от разрешающей способности ШИМ. У ATmega8515 число очищаемых разрядов определяется разрешающей способностью.
ATmega8515
Старшие значащие разряды у OCR1AH и OCR1BH очищаются при достижении счетчиком вершины счета.
- 8-разр. ШИМ: OCR1xH7:0 = 0
- 9- разр. ШИМ: OCR1xH7:1 = 0
- 10- разр. ШИМ: OCR1xH7:2 = 0
AT90S8515
Шесть старших значащих разрядов OCR1AH и OCR1BH очищаются независимо от разрешающей способности.
Очистка таймера-счетчика 1 по результату сравнения с активным предделителем
Отношение между «сбросом по результату сравнения» и внутренним счетом таймера-счетчика 1 были изменены. Функция «сброс по результату сравнения» у AT90S8515 очищает таймер-счетчик 1 после первого совпадения значений счетчика и заданного порога, а ATmega8515 очищает таймер-счетчик 1 после последнего совпадения этих значений. См. рисунок 1 и 2 для детального изучения сброса, установки флага и изменения вывода.
Примечание: OCR1x = 0x02 с разрешенным предделением на 8.
|
Рисунок 1 – Установка выхода компаратора флаг/вывод для AT90S8515(1)
Примечание: Символ “?” индицирует об установке вывода/флага компаратора
|
Рисунок 2 – Установка выхода компаратора флаг/вывод для ATmega8515 (1)
Примечание: Символ “?” индицирует об установке вывода/флага компаратора
|
Установка выходного вывода/флага компаратора с активным предделителем
Отношение между выходом компаратора и внутренним счетом таймера-счетчика 1 были изменены. Выход компаратора у AT90S8515 устанавливает выходной вывод/флаг компаратора после первого совпадения значений счетчика и заданного порога, а ATmega8515 устанавливает выходной вывод/флаг компаратора после последнего совпадения этих значений. См. рисунок 3 и 4 для детального изучения логики формирования выходного флага компаратора.
Примечание: OCR1x = 0x02 с разрешенным предделением на 8.
|
Рисунок 3 – Установка выходного флага/вывода компаратора у AT90S8515 (1)
Примечание: Символ “?” индицирует об установке вывода/флага компаратора
|
Рисунок 4 – Установка выходного флага/вывода компаратора у ATmega8515 (1)
Примечание: Символ “?” индицирует об установке вывода/флага компаратора
|
Запись в OCR1x в режиме ШИМ, возврат к нормальному режиму перед обновлением OCR1x на вершине, чтение OCR1x
Как описано в документации регистры OCR1x обновляются при записи вершины счеты. Таким образом, при записи OCR1x в режиме ШИМ его значение запоминается во временном буфере. Когда таймер-счетчик достигает вершины содержимое временного буфера записывается в действительный регистр компаратора. Если режим ШИМ прерван после записи во временный буфер, но раньше перезаписи в действительный регистр компаратора, то действия ATmega8515 и AT90S8515 будут различными.
ATmega8515
Если регистр OCR1x считывается до выполнения модификации, то фактически сравниваемое значение, которое будет считываться не из временного буфера OCR1x.
AT90S8515
Если регистр OCR1x опрашивается до выполнения модификации, то запрашиваемое значение будет считываться из временного буфера OCR1x. Например, опрашивается значение, которое только что было записано в буфер OCR1x, но т.к. таймер-счетчик никогда не достигнет вершины счета, то данные не перезапишутся в регистр OCR1x. Таким образом, значение, которое реально используется для сравнения, и значение, которое считано после опроса, при таких условиях не обязательно будут равны.
Запоминание предыдущего уровня на выводе OCnx
У AT90S8515 имеются две установки COMnx1:0, которые не обновляют состояние вывода OCnx в режиме ШИМ (0b00 и 0b01), а также одна установка COMnx1:0 в режиме без ШИМ (0b00). Следует понимать, что таймер-счетчик переходит из состояния, при котором обновляется вывод OCnx в состояние, в котором это не происходит, а затем возвращается в состояние модификации вывода OCnx. При этом должны учтены следующие отличия:
ATmega8515
Уровень на выводе OCnx перед выключением режима сравнения запоминается. Повторное разрешение данного режима вызовет возврат к тому состоянию вывода, которое он имел при выключении режима сравнения. Все выходные выводы компаратора инициализируется к лог.0 при сбросе.
AT90S8515
Для таймера-счетчика 1 в режиме без ШИМ вывод OCnx примет низкий уровень после разрешения подключения выхода компаратора, независимо от результата сравнения до этого момента. В режиме ШИМ состояние выхода будет обновляться, поэтому, при возврате в режим сравнения состояние вывода OCnx может быть любым.
Улучшения интерфейса внешней памяти
Мультиплексированный порт адреса/данных у ATmega8515 выводит данные до установки нового адреса. См. документацию на. ATmega8515 для уточнения особенностей измененной временной диаграммы.
Улучшение системы управления питанием
ATmega8515 поддерживает большее число режимов сна по сравнению с AT90S8515. Это означает, что бит SM в AT90S8515 расширен до 3 бит в ATmega8515. SM = “0” в AT90S8515 соответствует SM2:0 = 0b000 в ATmega8515, а SM = “1” у AT90S8515 соответствует SM2:0 = 0b010 в ATmega8515. Однако, позиция бита SM в AT90S8515 равна позиции бита SM1 в ATmega8515. Это означает, что ATmega8515 поддерживает совместимость вниз с AT90S8515 без какой-либо переделки программного кода, отвечающего за управление энергопотреблением. Однако, учтите, что цикл доступа для записи в ЭСППЗУ должен быть завершен перед переводом микроконтроллера в экономичный режим сна. Кроме того, системный генератор продолжит работать, потребляя дополнительный ток. См. документацию для детального изучения режимов сна микроконтроллера ATmega8515.
Улучшения SPI и УАПП
И SPI и УСАПП поддерживают режим удвоения скорости, который позволяет организовать связь на более высокой скорости.
УАПП в AT90S8515 заменен на УСАПП в ATmega8515. УСАПП ATmega8515 совместим с УАПП AT90S8515 за одним исключением: двухуровневый регистр приемника действует как буфер FIFO (первый пришел- первый вышел). FIFO отключен, если запрограммирован конфигурационный бит S8515C. При запрограммированном бите S8515C необходимо учитывать следующее:
- UDR (регистр данных) должен однократно опрашиваться при каждом получении данных.
- Флаги ошибки (FE и DOR), а также 9-ый бит данных (RXB8) находятся вместе с данными в приемном буфере. Поэтому, статусные биты должны быть всегда опрашиваться перед чтением регистра UDR. Иначе, данных об ошибках будут потеряны.
Другое небольшое различие это начальное значение бита RXB8, которое равно “1” в УАПП AT90S8515 и “0” в УСАПП ATmega8515.
Изменения во временной диаграмме записи в ЭСППЗУ
В AT90S8515 время записи в ЭСППЗУ определяется напряжением питания обычно составляет 2.5 мс при VCC = 5В и 4 мс при VCC = 2.7В. У ATmega8515 время записи в ЭСППЗУ составляет 8448 циклов калиброванного RC-генератора (т.е. не зависит от источника тактирования и частоты системной синхронизации). Частота RC-генератора калибрована на стадии производства и составляет 1.0МГц, при этом она не зависит от уровня VCC. Т.о., типичное время записи в этом случае составляет 8.4мс.
Примечание: Изменение значения в регистре OSCCAL влияет на частоту калиброванного RC-генератора, а, следовательно, и на время записи в ЭСППЗУ.
|
Интерфейс программирования
Некоторым изменениям был также подвергнут интерфейс программирования, в т.ч. страничное программирование заменило побайтное программирование памяти программ AT90S8515. См. документацию на ATmega8515 для более подробного ознакомления.
Алгоритм параллельного программирования также изменен. Главное существенное изменение это введение сигнала PAGEL на выводе PD7 и BS2 на PA0. Это необходимо для поддержки страничного программирования флэш-памяти, ЭСППЗУ и дополнительных конфигурационных бит ATmega8515. Обратите внимание, что алгоритм программирования дополнительных конфигурационных бит и бит защиты также изменен. Временная диаграмма параллельного программирования также изменена. См. документацию на ATmega8515 для изучения деталей.
STK500 поддерживает оба режима программирования (параллельного и последовательного) ATmega8515.
Установки конфигурационных бит
ATmega8515 содержит большее количество конфигурационных бит, чем AT90S8515. Таблица 3 показывает совместимые настройки конфигурационных бит AT90S8515. Некоторые из них описаны далее в следующих разделах.
Таблица 3- Сравнение конфигурационных бит AT90S8515 и ATmega8515 (1)
Конфигурационный бит |
Исходная установка у AT90S8515 |
Исходная установка у ATmega8515 |
Установка для AT90S8515 аналогичная ATmega8515 |
S8515C |
– |
1 |
0 |
WDTON |
– |
1 |
1 |
SPIEN |
0 |
0 |
0 |
CKOPT |
– |
1 |
0(2) |
EESAVE |
– |
1 |
1 |
BOOTSZ1 |
– |
0 |
0 (не доступен) (3) |
BOOTSZ0 |
– |
0 |
0 (не доступен) (3) |
BOOTRST |
– |
1 |
1 |
BODLEVEL |
– |
1 |
1 |
BODEN |
– |
1 |
1 |
SUT1 |
– |
1 |
См. прим. (4) |
SUT0 |
– |
0 |
См. прим. (4) |
CKSEL3 |
– |
0 |
См. прим. (4) |
CKSEL2 |
– |
0 |
См. прим. (4) |
CKSEL1 |
– |
0 |
См. прим. (4) |
CKSEL0 |
– |
1 |
См. прим. (4) |
Примечание:
1. Прочерк указывает на отсутствие такого конфигурационного бита у AT90S8515.
2. См. след. раздел «Генераторы и настройка задержки при старте»
3. SPM и самопрограммирование не доступны в AT90S8515. Исходная заводская установка BOOTSZ1:0 правильна с точки зрения перехода на ATmega8515 с AT90S8515.
4. Конфигурационные биты SUT в ATmega8515 заменяют бит FSTRT в AT90S8515. Установки SUT и CKSEL должны быть согласованы при переходе к ATmega8515.
|
Генераторы и настройка задержки при старте
ATmega8515 обладает бо’льшими возможностями в плане выбора генератора и времени задержки при старте по сравнению с AT90S8515. При выходе из экономичного режима ATmega8515 использует тактовую частоту ЦПУ для определения продолжительности задержки для пробуждения, а AT90S8515 определяет длительность этой задержки с помощью генератора сторожевого таймера.
Следуйте за рекомендациями раздела “Системная синхронизация и ее настройка (System Clock and Clock Options) в документации на ATmega8515 для нахождения соответствующих значений длительности задержки при старте. Особое внимание обратите на изменение конфигурационных бит в режиме внутрисистемного программирования. Внутрисистемное программирование зависит от системной синхронизации. Если запрограммировать неправильную установку генератора, то будет невозможно возобновить внутрисистемное программирование из-за отсутствия системной синхронизации (в этом случае необходимо использовать параллельное программирование). Кварцевый генератор AT90S8515 может использоваться как источник синхронизации с выхода XTAL2, для чего имеет встроенный буферный элемент. В ATmega8515 это возможно только, если конфигурационный бит CKOPT запрограммирован. В этом режиме на выходе можно наблюдать сигнал , колеблющийся между уровнями напряжения питания, но при этом потребляемая мощность будет несколько выше. Следовательно, программировать данный бит нужно только при необходимости организации описанного выхода или в условиях повышенного уровня шумов.
Изменения в сторожевом таймере
Сторожевой таймер в ATmega8515 улучшен по сравнению с AT90S8515. В AT90S8515 сторожевой таймер может быть включен или выключен, а у ATmega8515 поддерживается два уровня защиты, которые можно выбрать с помощью конфигурационного бита WDTON. Дальнейшая информация по этому вопросу приведена в документации ATmega8515.
Если запрограммировать бит S8515C и оставить незапрограммированным бит WDTON, то сторожевой таймер будет работать точно как в AT90S8515. Частота сторожевого таймера в ATmega8515 близка к 1МГц при всех напряжениях питания. Типичная частота сторожевого таймера в AT90S8515 близка к 1МГц при 5В, но период переполнения увеличивается по мере снижения VCC. Это означает, что при переходе на ATmega8515 период переполнения таймера (количество циклов генератора сторожевого таймера) должно быть откорректировано. Для получения дальнейшей информации обращайтесь к документации на ATmega8515.
Прочие доработки
ATmega8515 имеет отличное от AT90S8515 значение сигнатурного байта. Следует понимать, что при переходе на ATmega8515 вы будет использовать новый сигнатурный байт. Обратите внимание, что алгоритм ISP-программирования изменяется при переходе от AT90S8515 к ATmega8515. ATmega8515 использует постраничное программирование, а AT90S8515 выполняет побайтное программирование флэш-памяти. См. документацию для подробного изучения.
Функции недоступные в режиме совместимости с AT90S8515
Конфигурационный бит S8515C делает ATmega8515 совместимым с AT90S8515. Однако, если конфигурационный бит S8515C запрограммирован, то некоторые новые функции ATmega8515 становятся недоступными. Ниже перечислены функции, которые не поддерживаются в режиме совместимости с ATmega8515:
- Работа буфера FIFO в УСАПП
- Временная последовательность изменения предделителя сторожевого таймера устанавливается программно.
- Порт E (в режиме совместимости поддерживаются только специальные функции).
Необходимо учесть, что если любая из этих функций необходима или желательна и бит конфигурации S8515C не запрограммирован, то между ATmega8515 и AT90S8515 будут иметь место некоторые отличия, которых не существует, если этот бит запрограммирован:
- Порт E не инициализируется во время сброса на установку на выводах PE1 и PE2 лог. 0, а находится в третьем (высокоимпедансном) состоянии, также как и все остальные порты.
- Должна быть соблюдена временная последовательность при программной настройке предделителя сторожевого таймера.
- УАПП будет иметь избыточный буфер приема, который позволяет принять более одного байта данных перед тем, как флаг переполнения установится (DOR).
БО Парус
|