AVReAl Описание Адаптеры History FAQ English Russian

Адаптеры, с которыми может работать AVReAl

Процессоры серии AVR программируются по последовательному интерфейсу SPI при рабочем напряжении питания. Дополнительно к сигналам SPI (SCK,MOSI,MISO) используется сигнал /RESET для сброса контроллера. Также может использоваться вывод контроллера XTAL1 для внешней тактировки контроллера при отсутствии кварцевого резонатора и контроллере, включенном на работу от кварца либо внешнего генератора. Режим тактирования по линии XTAL1 от адаптера - в основном "аварийно-спасательный", для восстановления работоспособности при неправильно прошитых CKSEL. Для "обычной" работы ключ -o0 и эта линия не обязательны.
Обратите внимание, что для некоторых процессоров (например, ATmega103, ATmega64, ATmega128) в режиме программирования вместо выводов MOSI, MISO её аппаратного контроллера SPI используются соответственно выводы PDI/RXD и PDO/TXD.


USB

Для USB-адаптеров на базе FT2232C, FT2232L, FT2232D, FT2232H, FT4232H, FT232H в настоящее время поддерживается только обмен через аппаратный контроллер последовательных интерфейсов MPSSE данных микросхем, генерация сигнала XTAL при этом невозможна. Подробнее см. описание ключей -a, -p и способа конфигурирования выводов для микросхем с MPSSE.

На микросхеме FT2232 сделано довольно много адаптеров, в основном предназанченных для работы с ARM, но с тем же успехом через них можно программировать и AVR.
Amontec JTAG key, JTAGkey-tiny
Olimex ARM-USB-OCD, ARM-USB-TINY
Turtelizer 2
ICEbear JTAG adapter
и другие, линки на которые собраны на этой странице

Также можно воспользоваться разработкой MegaJohn

Подойдёт и простейший адаптер, сделанный хоть на макетке:

Minimal FT2232 to AVR adapter
Если перемычка XJ1 установлена, то программируеммая плата будет получать питание от USB. При снятой перемычке IO-буферы микросхемы FT2232 питаются от отлаживаемой платы, питание может быть в диапазоне 3-5В.


LPT

Для параллельного порта AVReAl использует программную реализацию SPI через разные виды адаптеров. Ниже приведено несколько стандартных вариантов, для которых есть отдельные ключи командной строки, почти любой вариант адаптера можно задать через конфигурационный файл для LPT.

FBPRG
Это первый вариант, с которого начиналась моя программа (до этого я пользовался программой fbprg.exe, которую написал Jerry Meng). Состоит всего из 5 проводков на LPT, однако...
Altera ByteBalsterTM
Этот адаптер выпускается фирмой Altera для программирования выпускаемых ею PLD.
Адаптер STK200/STK300
поставляется фирмой Atmel вместе с соответствующими отладочными платами.
XILINX parallel download cable

Я не рекомендую пользоваться самым примитивным вариантом "5 проводков" aka "FBPRG". Звоны в кабеле, разброс характеристик микросхем LPT могут присести к разнообразным глюкам, сильно зависящим от конкретного компъютера и фазы луны. Не поленитесь, спаяйте Altera ByteBlaster, пригодится в случае чего и альтеровскую программируемую логику прошивать. Или воспользуйтесь адаптером, совместимым с платами STK200 или STK300 фирмы ATMEL, там такой же шинный формирователь, только другая распайка. Использование шинного формирователя улучшает форму программирующих сигналов и позволяет не снимать колодку с платы при отладке, программа переводит выходы адаптера в Z-состояние после окончания программирования. Оправданием использовния "адаптера из проводков" может служить только необходимость раз-другой прошить кристалл при повторении чужой разработки. Но как раз в этом случае особо неприятно загнать кристалл в неприличную позу. Кроме того ("аппетит приходит во время еды") - обязательно захочется еще что-нибудь куда-нибудь зашить, но, поленившись спаять нормальный адаптер в первый раз, Вы будете еще долго ругаться и лениться, лениться и ругаться :-)


Переходник программирования "FBPRG"
представляет собой просто соединение линий параллельного порта и выводов микроконтроллера согласно таблице
вывод LPT Сигнал AVR вывод LPT Сигнал AVR
6 (D4) /RESET 8 (D6) SCK
7 (D5) MOSI 10 (ACK) MISO
5 (D3) XTAL1 18..25 (GND) GND

Программирование может осуществляться как в плате при питании схемы от её источника питания, так и при питании контроллера от параллельного порта (ключ -ap), для чего используются все незадействованные выходы данных LPT. Впрочем, этот режим далеко не всегда работает. Можно также программировать контроллер без кварцевого резонатора (ключ -o0), что может оказаться удобным как при использовании -ap, так и в случае, если необходимо запрограммировать контроллер на работу от внутреннего RC-генератора.


Схема переходника программирования "Altera ByteBlaster"

Данный переходник разработан фирмой Altera для программирования и конфигурирования микросхем ПЛИС через интерфейсы JTAG и Passive Serial. Я счел достаточно удобным не снимать его с удлиннителя LPT вообще, в результате чего avreal стал поддерживать байт-бластер.

Схему бластера я несколько модифицировал - добавил светодиоды для индикации наличия питания и режима программирования, а также вывел дополнительный сигнал на вывод 8 разъема X2 через свободный канал шинного формирователя. Эта линия используется при программной генерации сигнала XTAL1 микроконтроллера (ключ -o0).

Схема Altera Byte Blaster

Рекомендую в неиспользуемый 6-й контакт набитой на шлейф головки забить кусочек спички и не паять соответствующий штырь в плату - защита от неправильной подстыковки разъема еще никому не мешала.

Назначение контактов разъема X2 байт-бластера в режиме программирования AVR.

X2 pin AVR signal X2 pin AVR signal
1 SCK 2 GND
3 MISO 4 VCC
5 nRESET 6 ключ
7 не используется 8 XTAL1
9 MOSI 10 GND

При использовании Altera ByteBlaster-II используется такое же подключение, доработка для генерации XTAL не требуется, все необходимые цепи присутствуют в "фирменном" адаптере.


Схема переходника программирования "STK200/300"

Адаптер получил свое название от комплектующихся им отладочных плат фирмы Atmel для быстрого начала работы с микроконтроллерами At90s8515 и Atmega103 соответственно. На самом деле приведенная схема соответствует одновременно обеим адаптерам, в ней присутствуют перемычки для определения наличия как адаптера STK200 (выводы 2-12 разъема X1), так и STK300 (выводы 3-11) Как правило этот адаптер используют те, у кого есть в наличии одна из плат фирмы Atmel либо кто уже пользовался программой AVR ISP. При необходимости программной генерации тактового сигнала XTAL1 (ключ -o0) используется линия LED адаптера STK, исходно предназначенная для включения светодиода на отладочной плате.

Схема STK200/300

Разводка колодки X2 на приведенной схеме соответствует принятой фирмой Atmel для производимых ею плат, однако никто не мешает использовать и разводку, соответствующую Altera Byte Blaster.


Как уже указывалось, буферизованные адаптеры запитываются от платы с программируемым процессором. Т.е. питание подаётся на программируемую плату, а с неё на адаптеры поступает через шлейф и соответствующие контакты разъёмов X2. Не следует подпаивать проводки к точкам VCC и GND а потом разворачивать диод. Прошу прощения у тех, кому это было и так ясно, но если не самый частый, то уж самый надоевший в моей почте вопрос крутится вокруг этого места.

Оба описанных выше "буферизованных" адаптера собраны на основе шинного формирователя 74HC244 (аналог 1564АП5). Возможно также использование 555АП5 (74LS244) и 1533АП5 (74ALS244) либо, при соответствующем изменении схемы, любые другие неинвертирующие формирователи с тремя состояниями выходов. Применение буфера с третьим (высокоимпедансным) состоянием позволяет по окончании программирования снять сигнал разрешения выходов и, "отключив" адаптер от схемы, не влиять на её работу (за исключением паразитных емкостей между проводами шлейфа от адаптера до платы устройства).

Для этих адаптеров рекомендуется изготовить удлиннитель порта LPT длиной 1.5-1.8м со всеми линиями (земель не жалеть :-), он может пригодится и для других целей, а сам адаптер выполнить на небольшой плате и вывести переходник от него до платы с микроконтроллером длиной 20-25 см.


XILINX parallel download cable

Назначение контактов разъема JTAG header в режиме программирования AVR через SPI

JTAG pin AVR signal JTAG pin AVR signal
VCC (pin 1) VCC GND (pin 2) GND
TCK (pin 4) SCK TDO (pin 6) MISO
TDI (pin 7) MOSI TMS (pin 9) nRESET