2019-01-20

vak: (Default)
К архитектуре Atmel AVR я давно неравнодушен. Тёплая ламповая восьмибитность покорила меня ещё двадцать лет назад. Мы начали применять AT90 и ATmega в Крониксе в конце 90-х, перейдя на них с серии Microchip PIC17. Именно для AVR я тогда сделал первую версию операционной системы реального времени uOS. Позже добавлял ARM, MIPS и другие, но первое впечатление осталось именно от AVR.



Для AVR я делал отладчик GDB, стартовый загрузчик через COM-порт, дорабатывал утилиты прошивки, паял USB-программаторы. Ну и собственно кучу софта написал: до сих пор большинство коммуникационного оборудования, выпускаемого Крониксом, имеет ATmega в качестве сервисного процессора. К примеру, удалённый мониторинг сетевых портов по протоколу SNMP микроконтроллер ATmega128 вполне тянет.

Вот моя коллекция отладочных плат для микроконтроллеров ATmega, ATtiny и AT90S в разных корпусах.

(1) Плата ATmega 128 с набором разнообразной периферии. Цена €34 евро на сайте Olimex. Плата поставляется с тестовой прошивкой, которая по нажатиям кнопок управляет светодиодом и реле, пищит динамиком, пишет сообщение на дисплее LCD и отправляет строку в порт RS-232. Исходные тексты этой прошивки с использованием операционной системы uOS можно посмотреть здесь: test_olimex.c



(2) Плата для восьминогих чипов ATtiny13A и аналогичных. Куплена за $7 на Aliexpress. Будьте внимательны с питанием: подавать можно не больше 5V, иначе чип накроется.



(3) Плата для 28-ногих чипов ATmega328P, ATmega8 и аналогичных. Стоит
два с лишним доллара на Aliexpress.



(4) Плата для сороканогих чипов AT90S и других (с питанием от ножки 40). Цена около $3 на Aliexpress. Не перепутайте: есть похожие платы для чипов с питанием от ножки 10 (ATmega32, ATmega163L и подобных). Это не то же самое. Смотрите принципиальную схему этой платы.



(5) Плата для более современных чипов в корпусе DIP-40, типа ATmega32, ATmega16 и подобных (с питанием от ножки 10). Имеется за $3 на Ebay.



Все эти платы имеют 10-контактный разъем ICSP для подключения программатора, а плата Olimex - ещё и разъём JTAG для отладчика. Но про них я расскажу в следующем посте.
vak: (Default)
Десять лет не брал я в руки шашек ATmega, но тут Алекс KI6EEO попросил его просветить, и я решил заценить нынешнее разнообразие доступных программаторов для микроконтроллеров AVR. В предыдущем посте смотрите обзор отладочных плат AVR.

USBasp




Самый простой и доступный программатор для микроконтроллеров AVR. Разработан Thomas Fischl на основе atmega8. При желании вы сами можете спаять его по схеме на сайте разработчика. Там же есть все исходные коды и драйвер для Windows. Но проще купить готовый программатор на Ebay за $5. Программатор поставляется с 10-контактным шлейфом.

Утилита avrdude умеет работать с этим программатором, если указать тип "usbasp". Вот пример распознавания чипа ATtiny13:

$ avrdude -c usbasp -p ATtiny13

avrdude: warning: cannot set sck period. please check for usbasp firmware update.
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e9007 (probably t13)

avrdude: safemode: Fuses OK (E:FF, H:FF, L:6A)

avrdude done. Thank you.
Утилита предлагает обновить версию прошивки самого программатора USBasp, но это необязательно, и без этого всё отлично работает.

На программаторе есть джампер для выбора напряжения питания 5V / 3.3V, подаваемого на программируемую плату. Лучше всего этот джампер снять и не подавать никакого напряжения, во избежание конфликта.

USBtiny



Этот программатор был разработан другим любителем Dick Streefland, и позже активно продвигался фирмой AdaFruit. Продаётся на Aliexpress по цене около $3. Может поставляться как с 10-контактным шлейфом, так и с 6-контактным. На картинке показан 6-контактный шлейф. Имеется джампер для подачи 5V на программируемую плату, который лучше отключить.

Утилита avrdude понимает этот программатор как тип "usbtiny". Вот тот же пример с платой ATtiny13:

$ avrdude -c usbtiny -p ATtiny13

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.01s

avrdude: Device signature = 0x1e9007 (probably t13)

avrdude: safemode: Fuses OK (E:FF, H:FF, L:6A)

avrdude done. Thank you.

AVRISP mkII




Это копия фирменного программатора Atmel AVRISP mkII, снятого с производства. Купить можно на Aliexpress за $16. Имеет 10-контактный шлейф, и отдельно переходник на 6-контактный разъём. Фирменный софт Atmel Studio 7 распознаёт этот программатор как родной mkII и обновляет firmware до последней версии 1.18. В этом преимущество программатора AVRISP: по мере появления новых моделей чипов AVR вы будете автоматически получать нужные обновления для программатора. Лично я для серьёзных разработок выбирал бы этот девайс.

Для avrdude надо указывать тип "avrisp2". Повторяем пример с платой ATtiny13:

$ avrdude -c avrisp2 -p ATtiny13

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e9007 (probably t13)

avrdude: safemode: Fuses OK (E:FF, H:FF, L:6A)

avrdude done. Thank you.

AVR JTAGICE


Тут не совсем программатор, а скорее отладчик. Подключается он не к порту программирования ICSP, а к порту JTAG. Не все платы оборудованы портом JTAG. Прошить память микроконтроллера этим устройством тоже можно, но основная его суть в возможности пошаговой отладки микроконтроллера посредством интерактивного отладчика. обычно это нечасто нужно, но в тяжёлых случаях не обойтись.

Продаётся JTAG ICE на Aliexpress за $7. Поставляется со стандартным 10-контактным шлейфом.

С этим девайсом есть одна проблема, которую я пока не решил. Он приходит без прошивки, точнее прошит только bootloader. Требуется обновить прошивку, то есть загрузить туда firmware от родного Atmel JTAG ICE. Есть инструкция, по которой нужно на компьютер с устаревшим Windows установить устаревшую версию AVR Studio 4, и после некоторых магических действий вся получится. Попробую когда-нибудь потом. Но в целом не могу рекомендовать этот отладчик для начинающих.