“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
- ATmega16A від ATmega16, ATmega16L
- ATmega32A від ATmega32, ATmega32L
- ATmega64A від ATmega64, ATmega64L
- ATmega128A від ATmega128, ATmega128L
- ATmega48A, ATmega88A, ATmega168A
від ATmega48, ATmega48V, ATmega88, ATmega88V, ATmega168, ATmega168V - ATmega48PA, ATmega88PA, ATmega168PA
від ATmega48P, ATmega48PV, ATmega88P, ATmega88PV, ATmega168P, ATmega168PV - ATmega644A від ATmega644, ATmega644V
- ATmega164PA, ATmega324PA, ATmega644PA
від ATmega164P, ATmega164PV, ATmega324P, ATmega324PV, ATmega644P, ATmega644PV - ATmega165PA, ATmega169PA від ATmega165P, ATmega165PV, ATmega169P, ATmega169PV
- ATtiny2313A від ATtiny2313, ATtiny2313V
- ATtiny13A від ATtiny13, ATtiny13V
- ATtiny261A, ATtiny461A, ATtiny861A
від ATtiny261, ATtiny261V, ATtiny461, ATtiny461V, ATtiny861, ATtiny861V - ATtiny24A, ATtiny44A
від ATtiny24, ATtiny24V, ATtiny44, ATtiny44V
Відмінності 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