Archive for the ‘FAQ’ Category.

“B” and “not-B” AVRs

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

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

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

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

Відмінності ATmega48PB/88PB/168PB від ATmega48PA/88PA/168PA

Документація на ATmega48PB/88PB/168PB і опис відмінностей.

  • Прибрано надлишкову пару VCC/GND, ці виводи тепер знаходсться в PORTE
  • Виводи ADC6, ADC7, які досі не були портами, також тепер в PORTE, разом із попереднім чотири додаткових IO.
  • Вихід вбудованого компаратора можна подати на нжку PE0, для керування додано новий регістр ACSRB
  • USART може працювати в sleep, по старт-біту вмикається генератор. Мікроконтролер може прокидатися і по старт-біту, і вже аж по закінченню приймання байту, біти керування у новому регістрі UCSR0D.
  • CKSEL — пропав full swing XTAL (CKSEL 011x), у кого стояло таке — поміняти налаштування fuses для програматора (CKSEL 100x–111x). Інші fuses не змінилися.
  • Додано 9-байтовий унікальний ідентифікатор кристалу, який можна прочитати командою LPM після встановлення біта SIGRD в SPMCSR або навіть через «верхні» через порти IO з адресами F0-F8 (у дурному порядку).
  • Електричні характеристики
    • Заводське калібрування RC-генератора тепер не ±10%, а лише ±2% (±5% у повному діапазоні напруг і температур), крок через OSCCAL не змінився, ±1%
    • Дещо впало падіння напруги на виході при максимальному навантаженні
    • Став трохи швидшим компаратор
    • Зі струмами споживання каша — десь типові трохи збільшилися а максимальні зменшилися, десь типові збільшилися. То треба уважно дивитися, кого що цікавить. Струм Power Save Mode виріс!

Відмінності ATmega328PB від ATmega328P

Документація на ATmega328PB і опис відмінностей.
Зміни більші, навіть в описові відмінностей підкреслено «ATmega328PB is not a drop-in replacement for ATmega328 variants, but a new device».

Окрім всього перерахованого вище для ATmega48PB…ATmega168PB маємо ще:

  • Додалося по одному USART, I2C і SPI. Втім, ніжок не вистачає і USART1 сидить на тих же, що й SPI0. Оскільки комутатора периферії по портах нема, то одночасно використати не вийде.
  • Додалися два 16-бітних таймери TC3 і TC4, разом стало 10 PWM. Виходи output compare B додаткових таймерів на одній ніжці (PD2) і якщо увімкнені обидва, то збираються по AND або по OR залежно від стану бітика PORTD2.
  • З’явився апаратний touch-контролер, «Low CPU utilization through interrupt on acquisition-complete» і все таке, але в DS робота і регістри не описані, згадано лише які лінії сканування на які виводи мікроконтролера виведено і про фірмову бібліотеку QTouch.
  • Clock Failure Detection для OSC32K і XTAL з перемиканням на IntRC 1 MHz і можливістю переривання по події. fuse «disable CFD» з заводу прошите, тобто за умовчанням функцію вимкнено.

Відмінності ATmega324PB від ATmega324PA

Документація на ATmega328PB і опис відмінностей.

Все те ж саме, що для ATmega328PB (разом з увійшовшими туди змінами для ATmega48PB…ATmega168PB). Єдине що USART-ів й до тогок було два, то після додавання ще одного їх стало три. Та ще надлишковими визнано дві пари VCC/GND, разом із ними у PORTE пішли ще два виводи XTAL та ніжка AREF, тобто додатковий PORTE має аж сім IO. У багатьох випадках це дасть можливість обійтися 44-виводним корпусом.

Виглядає так, що ATmega328PB і ATMega324PB утворюють нову «лінійку», позаяк вони схожіші між собою, ніж кожен із них та відповідна P/PA-версія чи ATMega328PB та відповідні 8/16-кілобайтні PB-версії.

«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, та мінімальною напругою гарантованої роботи.

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

FT2232C, FT2232L, FT2232D

Час від часу зустрічаю запитання по відмінностях між цими мікросхемами. В описах чи відкритих проектах в інтернеті згадується FT2232C, а в продажу зараз є FT2232D. Виникають сумніви у сумісності програм та адаптерів.
Як це часто буває, всі ці сумніви розвіюються при перегляді сторінки опису FT2232D. Але чомусь багатьом легше не подивитися на сайті виробника, а спитати на форумі чи набрати рядок «різниця FT2232C та FT2232D» в пошуковику. Ну що ж, ось він, цей рядок для нього, хай йому буде легше :-)

Документації на старіші версії мікросхем на сайті вже немає, але безпосередньо на сторінці сказано:

The FT2232D is the 3rd generation of FTDI’s popular USB UART/FIFO IC. The FT2232D is an updated version of the FT2232C and its lead free version, the FT2232L. Please note that the FT2232D is not an new generation of device.

The FT2232D is lead free and pin compatible with the original FT2232C and FT2232L devices. All the original device features are supported with some additional features available including a CPU-style FIFO mode and an extended operating temperature range.

І що ж все це означає? » » »

avreal та LPT в Windows

З точки зору AVReAl поняття «Windows» розпадається на дві родини операційних систем.

Системи родини Windows 9X, наприклад, Windows 98, не вимагають встановлення драйвера доступу до LPT. При роботі в такій системі avreal працює з портами напряму.

Як досі поширена Windows XP, так і Windows 7 належать до другої родини — Windows NT. Для них потрібен драйвер DLPortIO, встановлення якого описано раніше окремо для 32-бітних та 64-бітних систем.

Для всіх версій Windows в командному рядку необхідно вказувати номер LPT або базову адресу порта, наприклад, -p1, -p378. При цьому номер порта є лише скороченням стандартної адреси, як це сказано в описові ключа -p. Вважається, що LPT1/2/3 мають адреси 378/278/3BC.

Якщо LPT-порт знаходиться на нестандартних адресах, наприклад, використовується плата розширення PCI-LPT (PCI-Express LPT, PCMCIA-LPT), базову адресу можна дізнатися у властивостях порта в диспетчері пристроїв.

»»» Як дізнатися адресу LPT у Windows XP, Windows 7

avreal та LPT в Linux

На відміну від Windows лінійки NT, для роботи avreal з LPT-адаптерами в Linux/x86 (32- та 64-бітних) немає потреби в спеціальному драйвері на зразок DLPortIO.sys. На відміну від Windows 98, в Linux будь-яка програма не може просто так працювати з портами вводу-вводу, для цього необхідно налаштувати дозвіл на таку роботу.

Є два варіанти роботи — безпосередній доступ до портів вводу-виводу та робота з пристроєм паралельного порта parport. Безпосередній доступ до портів дає дещо вищу швидкість програмування, але вимагає використання привілеїв адміністратора системи під час запуску avreal, що не завжди зручно чи можливо.

Continue reading ‘avreal та LPT в Linux’ »

“A” and “not-A” AVRs

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

Continue reading ‘“A” and “not-A” AVRs’ »

Чим відрізняється ATtiny2313A від ATtiny2313?

Ще одна група запитань, що доволі часто зустрічаються в логах, це запитання про відмінності нових «А-версій» мікроконтроллерів AVR від їх попередників. Шукають «в чому різниця між atmega48p та atmega48pa», «різниця програмування atmega8a та atmega8», або взагалі «перехід з atmega16 на atmega16A».

Вираз «програмування мікроконтроллера» може мати різні значення і лише іноді запитання поставлено хай з використанням сленгу, але однозначно — «прошивка atmega32 та atmega32A».

Continue reading ‘Чим відрізняється ATtiny2313A від ATtiny2313?’ »

avreal synchronisation lost

Все, про що ви хотіли дізнатися,
але боялися спитати.

Судячи з логів сайту, доволі часто шукають фразу «synchronisation lost», але чомусь досі ніхто не задав запитання про неї у коментарях до сторінки avreal.

Повідомлення «synchronisation lost» означає порушення обміну інформацією з програмованим мікроконтроллером. Обмін по SPI між адаптером програмування та вбудованою в мікроконтроллер апаратурою програмування відбувається так само, як і між двома мікроконтроллерами.

spi-loop

Continue reading ‘avreal synchronisation lost’ »

[flagcounter image]