| AVReAl | Описание | Адаптеры | History | FAQ | English | Russian |
Процессоры серии AVR программируются по последовательному интерфейсу SPI при
рабочем напряжении питания. Дополнительно к сигналам SPI (SCK,MOSI,MISO)
используется сигнал /RESET для сброса контроллера. Также может
использоваться вывод контроллера XTAL1 для внешней тактировки контроллера при отсутствии
кварцевого резонатора и контроллере, включенном на работу от кварца либо внешнего генератора.
Режим тактирования по линии XTAL1 от адаптера - в основном "аварийно-спасательный", для восстановления
работоспособности при неправильно прошитых CKSEL. Для "обычной" работы ключ -o0 и эта линия
не обязательны.
Обратите внимание, что для некоторых процессоров
(например, ATmega103, ATmega64, ATmega128) в режиме
программирования вместо выводов MOSI, MISO её аппаратного контроллера SPI
используются соответственно выводы PDI/RXD и PDO/TXD.
AVReAl использует программную реализацию SPI через линии параллельного порта компьютера и поддерживает три типа адаптеров.
Я не рекомендую пользоваться самым примитивным вариантом "5 проводков" aka "FBPRG". Звоны в кабеле, разброс характеристик микросхем LPT могут присести к разнообразным глюкам, сильно зависящим от конкретного компъютера и фазы луны. Не поленитесь, спаяйте Altera ByteBlaster, пригодится в случае чего и альтеровскую программируемую логику прошивать. Или воспользуйтесь адаптером, совместимым с платами STK200 или STK300 фирмы ATMEL, там такой же шинный формирователь, только другая распайка. Использование шинного формирователя улучшает форму программирующих сигналов и позволяет не снимать колодку с платы при отладке, программа переводит выходы адаптера в Z-состояние после окончания программирования. Оправданием использовния "адаптера из проводков" может служить только необходимость раз-другой прошить кристалл при повторении чужой разработки. Но как раз в этом случае особо неприятно загнать кристалл в неприличную позу. Кроме того ("аппетит приходит во время еды") - обязательно захочется еще что-нибудь куда-нибудь зашить, но, поленившись спаять нормальный адаптер в первый раз, Вы будете еще долго ругаться и лениться, лениться и ругаться :-)
| вывод 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 для программирования и конфигурирования микросхем ПЛИС через интерфейсы JTAG и Passive Serial. Я счел достаточно удобным не снимать его с удлиннителя LPT вообще, в результате чего avreal стал поддерживать байт-бластер.
Схему бластера я несколько модифицировал - добавил светодиоды для индикации наличия питания и режима программирования, а также вывел дополнительный сигнал на вывод 8 разъема X2 через свободный канал шинного формирователя. Эта линия используется при программной генерации сигнала XTAL1 микроконтроллера (ключ -o0).

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

Разводка колодки X2 на приведенной схеме соответствует принятой фирмой Atmel для производимых ею плат, однако никто не мешает использовать и разводку, соответствующую Altera Byte Blaster.
Как уже указывалось, буферизованные адаптеры запитываются от платы с программируемым процессором. Т.е. питание подаётся на программируемую плату, а с неё на адаптеры поступает через шлейф и соответствующие контакты разъёмов X2. Не следует подпаивать проводки к точкам VCC и GND а потом разворачивать диод. Прошу прощения у тех, кому это было и так ясно, но если не самый частый, то уж самый надоевший в моей почте вопрос крутится вокруг этого места.
Оба описанных выше "буферизованных" адаптера собраны на основе шинного формирователя 74HC244 (аналог 1564АП5). Возможно также использование 555АП5 (74LS244) и 1533АП5 (74ALS244) либо, при соответствующем изменении схемы, любые другие неинвертирующие формирователи с тремя состояниями выходов. Применение буфера с третьим (высокоимпедансным) состоянием позволяет по окончании программирования снять сигнал разрешения выходов и, "отключив" адаптер от схемы, не влиять на её работу (за исключением паразитных емкостей между проводами шлейфа от адаптера до платы устройства).
Для этих адаптеров рекомендуется изготовить удлиннитель порта LPT длиной 1.5-1.8м со всеми линиями (земель не жалеть :-), он может пригодится и для других целей, а сам адаптер выполнить на небольшой плате и вывести переходник от него до платы с микроконтроллером длиной 20-25 см.
Назначение контактов разъема 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 |