“A” and “not-A” AVRs

Після короткої відповіді на питання про різницю між новими версіями мікроконтролерів tinyAVR/megaAVR з літерою ‘A’ та їх попередниками я вирішив детальніше розглянути різницю між ними з точки зору програміста. Не претендую на повноту, але при підготовці матеріалу переглянуто було не лише Migrating Notes, але і документацію на відповідні мікроконтролери.

Як вже було сказано, версії A працюють у всьому діапазоні напруги живлення та тактових частот, який перекривався попередніми звичайними та L/V-версіями. Крім того, в більшості випадків дещо знижено максимальні струми споживання та суттєво знижено типові. В усьому іншому нові мікроконтролери є тотожною заміною старих. За винятком окремо відзначених випадків не помінялися і сигнатури, по яким програматор їх розрізняє.
Але в деяких випадках різниця є і на рівні можливостей — додалися нові регістри периферії або біти в старих регістрах.
З того, що стосується живлення, у багатьох нових кристалів змінилися рівні POR. Тут про це лише сказано, а детальніше можна прочитати в дописові «A»-AVR: POR.

З переліком помилок в мікроконтролерах (errata) ситуація різна, десь нічого не помінялося, десь кількість помилок зменшилася, десь додалися нові. Конкретний склад errata для кожного мікроконтролера переписувати сюди не бачу сенсу, кожен може подивитися документацію на той контролер, з яким працює. Більшість помилок не критичні і при уважному написані програми з ними можна ніколи не зустрітися.

Хочу лише зазначити, що у ATmega8A з’явилася неприємна особливість, про яку з часів AT90s1200 вже встигли забути — при певних умовах може зтертися пам’ять сигнатури мікроконтролера, тобто його ідентифікатор та константа OSCCAL. Судячи з тексту errata слід гарантувати, що при програмуванні на мікроконтролер не буде подано нових команд до завершення команди стирання. Для ATmega8A номінальний час стирання 9 мс. Зараз в avreal для ATmega8A встановлено час затримки при стиранні 20 мс, що співпадає з заданим в файлі Partdescriptionfiles/ATmega8A.xml в AVR Studio і вдвічі більше номінального часу. При зниженій напрузі живлення може бути необхідно збільшити час очікування, для цього призначено ключі -1…-5

Отже, чим відрізняються

Відмінності ATmega8A та ATmega8, ATmega8L

Описано в AVR523.

  • Трохи збільшився рівень Uol для виходів портів.
  • Діапазон min-max внутрішнього джерела опорної напруги збільшився з 2,3-2,7 В до 2,3-2,8 В.
  • errata – жоден пункт не пропав, додалися нові.

Відмінності ATmega16A та ATmega16, ATmega16L

Описано в AVR522.

  • Діапазон min-max для reset pull-up збільшився з 30-60 кОм до 30-85 кОм.
  • Збереглася errata останніх версій ATmega16.

Відмінності ATmega32A та ATmega32, ATmega32L

Описано в AVR521.

  • Діапазон min-max для reset pull-up збільшено з 30…60 кОм до 30…85 кОм
  • Додалася errata і тепер вона відповідає errata ATmega16A (у ATmega32 помилок було менше, ніж у ATmega16).

Відмінності ATmega64A та ATmega64, ATmega64L

Описано в AVR524.

  • Трохи збільшився рівень Uol для виходів портів.
  • Додався один пункт в errata.

Відмінності ATmega128A та ATmega128, ATmega128L

Описано в AVR525.

  • Трохи збільшився рівень Uol для виходів портів.
  • Діапазон min-max для reset pull-up збільшився з 30-60 кОм до 30-85 кОм.
  • Додався один пункт в errata.

Відмінності ATmega48A, ATmega88A, ATmega168A та ATmega48, ATmega48V, ATmega88, ATmega88V, ATmega168, ATmega168V

Описано в AVR532.

  • Помінялися рівні POR.
  • Змінилися характеристики генератора для годинникового резонатора.
  • Виправлено роботу TWI в power-down.
  • Прибрано помилки попередніх версій, але додалася помилка аналогового мультиплексора (регістр ADMUX) при роботі з компаратором.
  • Додався сенсор температури.

Відмінності ATmega48PA, ATmega88PA, ATmega168PA та ATmega48P, ATmega48PV, ATmega88P, ATmega88PV, ATmega168P, ATmega168PV

Описано в AVR528.

  • errata — з’явилася помилка аналогового мультиплексора (регістр ADMUX) при роботі з компаратором.

Відмінності ATmega644A та ATmega644, ATmega644V

Описано в AVR536

  • Помінялися рівні POR.
  • ISP-сигнатура не помінялася, JTAG сигнатура помінялася.
  • У ATmega644 не було другого USART, у ATmega644А, як у всіх xx4*, він є
  • errata пропала

Відмінності ATmega164PA, ATmega324PA, ATmega644PA та ATmega164P, ATmega164PV, ATmega324P, ATmega324PV, ATmega644P, ATmega644PV

Описано в AVR527.

  • У ATmega324PA помінялася ISP-сигнатура, у всіх інших збереглася.
  • errata як була порожня, так і залишилася

Відмінності ATmega165PA, ATmega169PA та ATmega165P, ATmega165PV, ATmega169P, ATmega169PV

Описано в AVR529.

  • Помінялися рівні POR.
  • Додався Sleeping BOD – біти BODS/BODSE в MCUCR.
  • Біти PCIE/PCIF в EIMSK/EIFR посунулися на інші місця в межах регістра, необхідна перекомпіляція проекту якщо ці біти використовуються.

Відмінності ATtiny2313A та ATtiny2313, ATtiny2313V

Описано в AVR533.

  • Помінялися рівні POR.
  • По архітектурним змінам цей мікроконтроллер чемпіон серед всіх A-варіантів. Нові можливості:
    • Sleeping BOD – регістр BODCR.
    • Регістр керування живленням PRR.
    • Буферний регістр USI – USIBR.
    • Преривання по зміні стану виводу PCINT тепер працює на всіх виводах, додалися регістри PCMSK1, PCMSK2 та відповідні біти в GIMSK/GIFR.
    • Режим MASTER SPI у USART.
    • Біт RSIG в SPMCSR.
  • errata очистилася, нових помилок не додалося.

Відмінності ATtiny13A та ATtiny13, ATtiny13V

Описано в AVR520.

  • Трохи збільшився рівень Uol для виходів портів.
  • Помінялися рівні POR.
  • Додалися:
    • Sleeping BOD – регістр BODCR.
    • Регістр керування живленням PRR.

Відмінності ATtiny261A, ATtiny461A, ATtiny861A та ATtiny261, ATtiny261V, ATtiny461, ATtiny461V, ATtiny861, ATtiny861V

Описано в AVR531.

  • Помінялися рівні POR.
  • Додався Sleeping BOD – біти BODS, BODSE в MCUCR.
  • OSCCAL тепер має монотонну характеристику, легше підкалібровувати частоту під потрібну.

Відмінності ATtiny24A, ATtiny44A та ATtiny24, ATtiny24V, ATtiny44, ATtiny44V

Описано в AVR526.

  • Помінялися рівні POR.

© 2010-2012, Олександр Редчук aka ReAl

Leave a Reply

[flagcounter image]