Archive for the ‘AVReAl’ Category.

“B” and “not-B” AVRs

Від публікації огляду відмінностей між «A» і «не-A»-версіями мікроконтролерів AVR пройшло чимало часу і вже давно можна порівнювати «B»-версії. Таких мікроконтролерів ще небагато, але є на що подивитися. Errata на кристали я ще не вивчав, як там буде що важливе — доповню пізніше.

Раніше я вже коротко писав про ATmega48PB…168PB. ATmega328PB і ATmega324PB просунулися набагато далі, це вже практично нові мікроконтролери, сумісні по виводах з «not-B». Для всіх цих мікроконтролерів є спільний, з першого погляду непомітний, але важливий момент — DIP-корпусів більше нема. Тому тим, хто розраховує лише на них, далі можна не читати 😉

З точки зору програматора змінилися лише сигнатури (ідентифікатри) мікроконтролерів та додався один fuse в ATmega328PB і ATmega324PB. Він забороняє нову функцію (CFD, див. нижче) і з заводу запрограмований. Якщо його не треба міняти і якщо можна змусити програматор проігнорувати сигнатуру, то всі ці кристали можна прошивати як відповідні PA. Втім, в avreal ці мікроконтролери вже додано, а для всіх іншіх програматори це, думаю, зроблено давно 🙂

Можливо, цей список і не збільшуватиметься вже, бо анонсовано геть нові ATmega3208/3209/4808/4809 із суттєво збільшеним обсягом оперативної пам’яті (натомість зменшеною EEPROM) та розширеною периферією.

Отже, відмінності… » » »

AVReAl update — 1.29r1

Вийшла нова версія програматора avreal — v1.29r1 (Sun 2018-02-11).

  • Додано підтримку:
    • Attiny441, ATtiny841
    • ATmega48PB, ATmega88PB, ATmega168PB, ATmega328PB
    • ATmega324PB
  • Файл із серійним номером пристрою тепер може містити шістнадцяткове число з префіксом 0x.
  • Виправлено внесену в 1.29r0 помилку, через яку символьні масиви довідки по ключу -h стали задовгими й обрізалися під час виводу функцією vsnprintf(). Завдяки тому, що вони обрізалися, avreal не падав так гучно, як то робив avr-ld ;-).

AVReAl update — 1.29r0

Вийшла нова версія програматора avreal — v1.29r0 (Wed 2013-12-11).

  • Ключ -% розширеної діагностики замінено на ключ -i керування рівнем інформаційних повідомлень;
  • При перенаправленні stdout у файл критичні повідомлення дублюються на stderr (якщо той не перенаправлено);
  • Остаточна відмова від групування ключів (тепер не можна -wv, можна лише -w -v);
  • Додано синоніми mega325PA, mega3250PA.

OpenOCD та FTDI-MPSSE

Зрідка щось пробуючи на LPC1766, вже доволі тривалий час не зазирав у новини OpenOCD. Як зібрав колись 6-тої версії, так і працював. Ще раніше, коли робив собі плату на FT2232H, трохи промахнувся і керування драйверами зробив несумісним з жодним з підтримуваних OpenOCD 6.x адаптерів. Тому для роботи з кортексами діставав напівмакетку (плата з FT2232D та шинником, перерізана на сумісність з Amontec JTAGkey).

А оце підтягнув git-ом свіжий стан, а там вже 8.0. А з 7.0 вже для FTDI/MPSSE підтримується довільне призначення службових виводів (reset, керування драйверами). Навіть краще, ніж в avreal, бо можна задати довільне своє ім’я сигналу, прив’язати його до ніжки і керувати ним командами OpenOCD — інтерактивно або з командного рядка. Додав у makefile в частині формування командного рядка вмикання червоного світлодіода на початку програмування і вимикання в кінці. Все чудово запрацювало, через FT2232H програма зашивається у півтора-два рази швидше, ніж через FT2232D, веріфікується у три-чотири рази швидше. І таке враження, що і через FT2232D свіжа версія OpenOCD працює відчутно швидше, ніж 6.x, але вже ніде перевірити, а спеціально збирати ліньки.

І дуже вчасно я сьогодні (хм… вже вчора) за це взявся — через хвилин двадцять після того, як зберіг на флешку конфігураційний файл та приклад makefile, подзвонив колега і сказав, що на роботі полетів J-Link. А там у мене точно така ж плата з FT2232H лежить.

AVReAl update — 1.28r14

Вийшла нова версія програматора avreal — v1.28r14 (Mon 2013-08-05).

  • Виправлено помилку в сигнатурах ATmega128rfr2, ATmega256rfr2;
  • Додано ATmega32HVE, ATmega64HVE.

AVReAl update — 1.28r13

Вийшла нова версія програматора avreal — v1.28r13 (Sun 2013-06-02).

Помилка в синхронізації (MPSSE)

Виявлено помилку, через яку не проходить процедура пересинхронізації додатковим імпульсом SCK у наступних умовах:

  • програма у мікроконтролері виставляє на ніжці ніжку SCK високий рівень;
  • використовується MPSSE-адаптер (FT2232, FT4232H, FT232H).

При роботі через LPT-адаптер синхронізація проходить нормально, після стирання через нього знову можна запрограмувати через USB-адаптер.

Схоже, помилка давня, але в більшості випадків до неї не доходило, бо синхронізація встановлювалася після обов’язкового початкового циклу RESET-синхронізації.
Наче хтось колись на щось подібне жалівся, але я не міг відтворити у себе і не знаходив нічого підозрілого в коді avreal. На цей раз мені знадобилося «підняти» одну стару плату з AT90S8515 і я таки отримав оте «Can’t resync» на USB-адаптері. Спробував за допомогою маленької тестової програми відтворити ситуацію на ATmega168 — все нормально працює і через MPSSE, синхронізується першою RESET-спробою, до SCK-імпульсів справа не доходить. А от AT90S8515 не програмується.

Все необхідне я зробив через ByteBlaster, помилку ловитиму за хвіст найближчим часом.


Помилку виправлено у версії 1.28r13.

AVReAl update — 1.28r12

Вийшла нова версія програматора avreal — v1.28r12 (Fri 2013-01-04).

  • Додано ATtiny828, ATmega64RFR2, ATmega128RFR2, ATmega256RFR2
  • «Купу крапочок» замінено на щось більш схоже на індикатор процесу (progress bar)

Також зроблено дрібні зміни у внутрішній структурі, більш важливі для мене самого як ознака того, що я ще не закинув проект і збираюся робити трохи більше, ніж ліниво додавати в таблиці нові кристали 🙂

«A»-AVR: POR

В огляді змін в мікроконтролерах AVR при переході на нову технологію (стаття “A” and “not-A” AVRs) часто зустрічаються слова «Помінялися рівні POR».

Зміну рівнів Power-On Reset зумовлено переходом на «advanced POR circuit», що на рівні конструктора систем на мікроконтролерах означає:

  • Специфіковано не лише типове значення напруг POR, а й мінімальне та максимальне.
  • Специфіковано мінімальну швидкість наростання напруги живлення.
  • Типове значення рівня POR трохи збільшилося.

Раніше (для «не-А» мікроконтролерів) перші два пункти не було вказано взагалі і залишалося лише здогадуватися, до якої межі можна без ризику наближатися.

Останній пункт розглянемо докладніше.

Наприклад, при переході від ATtiny13 до ATtiny13A (AVR520, Table 2-4. Power-On Reset) типове значення рівня POR при наростанні напруги збільшилося від 1,2 В до 1,4 В. Обидва значення менші за специфіковану для версії ATtiny13V мінімальну напругу живлення 1,8 В, тому в проектах, зроблених без порушення специфікацій виробника, перехід на нові типи не викличе проблем. Можливо, вони навіть краще працюватимуть, бо зменшиться різниця між напругою, при якій POR «відпускає» схеми мікроконтролера та фіксує значення FUSES, та мінімальною напругою гарантованої роботи.

Але в проектах «для себе» в часто виправданому в таких випадках стилі «ці конкретні екземпляри запрацювали — і добре» можуть виникнути проблеми.

AVReAl update — 1.28r11

Вийшла нова версія програматора avreal — v1.28r11 (Sat 2012-06-23).

  • Додано AT90pwm161, ATtiny1634
  • Виправлено реакцію на ключ -a без аргументів — вихід з програми з повідомленням про помилку замість використання адаптера за замовчуванням FBPRG)
[flagcounter image]