Программируем AVR на windows через FT2232H

     Ни когда не занимался программированием AVR микроконтроллеров, но один раз потребовалось перешить Atmega328p, причем хотелось обойтись тем что есть в наличии.

    В наличии была плата TIAO USB Multi Protocol Adapter с чипом FT2232H на борту. Из всех программаторов в доступе для данного чипа был обнаружен AvrDude, но попытки подключить его были очень и очень долгими.

    В общем результаты поисков и набор программ.

1. Программировать будем через AvrDude - это кросс платформенный программатор для AVR микроконтроллеров. 

2. Берем оболочку для программатора AvrDude, называется она AvrDudeShell. С данной программой в комплекте идет две версии AvrDude 6.3 и вторая версия для работы программатора с чипом ft232rl. Достоинство программы в том что можно переключать версии AvrDude в настройках программы указывая другой каталог.

3. Т.к. сам AvrDude у нас кросс платформенный, то надо поставить драйвер libusb для первого канала чипа ft232h (ну либо для второго). Делать установку драйвера будем через утилиту zadig. Данная утилита может как установить драйвер для usb устройства, так и заменить на нужный. Запускаем утилиту и ставим драйвер. Если устройства нет в списке, то надо через меню указать "List All Devices" , мы увидим все устройства. 

4. Но !!! нам придется взять с сайта разработчиков AvrDude еще одну из старых версий, т.к. последняя сборка 6.3. собрана без поддержки драйвера libusb. Я так и не понял почему так сделано,  но народ в сети очень долго обсуждает почему возникает ошибка при запуске AvrDude.

Текст ошибки следующий - "avrdude.exe: error: no libftdi or libusb support. Install libftdi1/libusb-1.0 orlibftdi/libusb and run configure/make again.". В общем я не стал компилировать с кучей опций и ни хотелось и так тратить время на это, я взял версию 5.11 и как оказалось она скомпилирована правильно. Берем ее вот тут. И размещаем эту версию в каталог оболочки рядом с другими версиями AvrDude. И собственно только после этих танцев AvrDude перестанет ругаться на отсутствие драйвера и т.п.

5. Но... Опять но... В данной версии есть возможность работать с чипом FT2232H, но команда TIAO поменяла usbpid и AvrDude не найдет данный чип. Поэтому в конфиге AvrDude надо добавить описание нового программатора. Это кусок описания из версии 6.3. подправленный под версию 5.11.

programmer

id = "tumpa";

desc = "TIAO USB Multi-Protocol Adapter";

type = avrftdi;

usbvid = 0x0403;

usbpid = 0x8A98;

usbdev = "A";

usbvendor = "TIAO";

usbproduct = "";

usbsn = "";

#ISP-signals - lower ACBUS-Nibble (default)

reset = 4; #SPI1_CS

sck = 1; #SPI1_SCK

mosi = 2; #SPI1_MOSI

miso = 3; #SPI1_MISO

;

6. Далее подключаем чип AVR к FT2232H или подобной. Я подключал к разъему SPI1 платы TIAO. Что куда подключать видно из конфига предыдущего пункта. Как пишут они могут иметь только такое расположение.

7. Далее работаем с AvrDudeShell в стандартном режиме. В списке программаторов у меня появился программатор "tumpa". А если у вас обычный чип FT2232H без изменения usbpid, то можно выбрать просто "avrftdi".

Результаты:

1. Любой чип FT2232X можно настроить таким образом для работы с AvrDude.

2. При работе через FT2232X программатор пишет что неправильно подключена линия Reset, хотя все работало, но иногда не проходил verify.

3. В результате была убита половина дня на AvrDude  и эксперименты и в конце пути я нашел вот это. Достал из загашников PickKit2, вернул версию 6.3. запустил AvrDudeShell и записал свою Atmega328p. :)