Программатор выполнен на основе драйвера от Objective Development и полностью совместим по командам с оригинальным программатором AVR910 от ATMEL. Описание оригинальной схемы программатора можно взять в Application Note AVR910: In-System Programming, а список поддерживаемых команд можно посмотреть в Application Note AVR109: Self Programming
Конструкция:
Схема программатора приведена на рисунке ниже. Предохранитель F1 служит для защиты линий питания порта USB от случайного замыкания по цепям питания программатора. Диоды VD1, VD2 – обычные выпрямительные, с прямым падением напряжения ~0,6…0,7В, предназначены для понижения питания микроконтроллера DD1 до 3,6 В. Светодиоды VL1, VL2 сигнализируют о текущих действиях программатора, и, соответственно, обозначают режимы чтения и записи. Светодиод VL3 служит для сигнализации подачи питания на программатор. Джампер J1-J2 служит как для начального программирования микроконтроллера (замкнут J1 - MODify), так и для использования в качестве разъема программатора (замкнут J2 - NORMal) . Резисторы R10 - R14 предназначены для согласования уровней сигналов контроллера программатора и программируемого контроллера.
С помощью J3 LOW SCK возможно понижать тактовую частоту порта SPI МК программатора до ~20 кГц. При разомкнутом джампере частота SPI нормальная, при замкнутом - пониженная. Переключать джампер можно "на ходу", так как управляющая программа МК программматора проверяет состояние линии PB0 при каждом обращении к порту SPI. Не рекомендуется переключать джампер при запущенном процессе записи/чтения программируемого МК, т.к., скорее всего, это приведет к искажению операции записи/чтения. Данный джампер введен для возможности программирования МК AVR, тактированных от внутреннего генератора 128 кГц.
Cкорость работы порта SPI МК программатора при разомкнутом джампере J3 равна 187,5 кГц. Это позволяет программировать контроллеры с тактовой частотой примерно от 570 кГц для tiny/mega, 750 кГц для 90S и 7,5 МГц для 89S. Контроллеры программируются от 10 до 30 секунд вместе с верификацией в зависимости от объема FLASH памяти и тактовой частоты. На вывод LED разъема ISP выведен меандр с частотой 1 МГц для "оживления" МК, у которых были ошибочно запрограммированы фьюзы, отвечающие за тактирование. Сигнал генерируется постоянно и не зависит от режима работы программатора
Программатор тестировался с программами AVRProg v.1.4 (входит в пакет AVRStudio), ChipBlasterAVR v.1.07 Evaluation, AVROSP (ATMEL AVR Open Source Programmer), CodeVisionAVR . Кроме того, программатор тестировался с программой AVRDUDE, однако, программа с данным программатором не совместима, так как не все команды протокола AVR910 отрабатывает корректно. Программатор позволяет программировать все контроллеры AVR, поддерживающие ISP (In System Programming - Программирование В Системе), а так же МК серии 89S - 89S53 и 89S8252. На данный момент с вышеперечисленными программами протестировано программирование контроллеров 89S53, 89S8252, 90S2313, 90S8515, ATtiny13, ATtiny26, ATtiny45, ATtiny2313, ATmega48, ATmega8, ATmega8515, ATmega8535, ATmega16, ATmega32, ATmega64, ATmega128, AT90CAN128.
Я настоятельно рекомендую повторять схему один-в-один, так как выкидывание "лишних" деталей из схемы может привести либо к неправильному функционированию программатора, либо к возможному выходу из строя USB порта на РС, за что, естественно, я ни какой ответственности не несу.
Прошивка FUSE BITS:
Для нормального функционирования контроллера в схеме необходимо, чтобы были запрограммированны (установленны в "0") биты SPIEN, CKOPT и SUT0. Обычно МК, идущие с завода, т.е. новые, имеют уже запрограммированный бит SPIEN. Так же желательно (но не обязательно) запрограммировать (установить в "0") бит BODEN, что разрешит работу встроенного в МК broun-out детектора. При незапрограммированном бите BODLEVEL уставка срабатывания broun-out детектора будет на уровне 2,4...2,9 Вольт... Остальные биты должны быть незапрограммированны (установленны в "1")
Инсталляция:
Windows XP
Прошить контроллер. Подключить свежеиспеченный программатор к РС через свободный разъем USB. ОС найдет новое устройство – AVR910 USB Programmer, при предложении автоматически найти драйвер, отказаться, и указать путь к файлу prottoss.avr910.usb.inf. При предупреждении, что драйвер не имеет цифровой подписи, послать ОС в эротическое путешествие. Небольшие проблемы у меня возникли, когда, после установки, программа AVRProg v. 1.4 не смогла найти программатор, так как ОС присвоила ему номер COM9. После мониторинга портов оказалось, что AVRProg ищет устройство только на портах COM1 - COM4. Изменить номер порта можно, если зайти в диспетчере устройств в: AVR910 USB Programmer -> Свойства–> Параметры порта -> Дополнительно -> Номер COM-порта
Windows 2000
В принципе, инсталяция не отличается от описанной выше для Windows XP, но есть одно НО - задержки в драйвере usbser.sys портят цепочку команд от ПО на РС до программатора и, соответсвенно, цепь ответов обратно от программатора до ПО на РС... Проблему я пока не установил, но есть решение...Конечно не самое красивое, но работает надежно
![:-) :-)](./images/smilies/wink.gif)
![:-) :-)](./images/smilies/wink.gif)
Файлы:
Все архивы содержат файл прошивки, установочный inf-файл и схему в формате Adobe pdf. Кроме этого старые версии содержат описание в виде старой html страницы.
avr910_usb_programmer.files.ver.1.04.rar Версия от 16.12.2006. Добавлено подключение внутреннего pull-up резистора ко входу MISO МК программатора во время программирования таргета. Возможно, будет полезно при чтении плат с пониженным напряжением питания, да и вообще, думаю, положительно скажется на надежности чтения программируемого МК...
avr910_usb_programmer.files.ver.1.05.rar Версия от 17.01.2007. Добавлен джампер J3 LOW SCK для понижения тактовой частоты порта SPI программатора. В настоящий момент самая свежая версия прошивки
avr910_usb_programmer_source.v.1.05.rar Исходники версии 1.05 Заточено и обкатано на IAR v.4.10B
Вы можете свободно пользоваться материалами данной публикации в образовательных и некоммерческих целях. Перепечатка, публикация в Интернете, журналах, использование в коммерческих приложениях – возможна только после согласования с автором.
Так, а теперь немного отсебятины. Схему я всё таки немного переделал, но суть осталась та же. Для минимизации размеров печатной платы было решено применять ATMega8 в корпусе TQFP. Изменилась также разводка ISP коннектора (мне так удобней). Добавлена возможность питать программируемое устройство от программатора (от USB). Для этого перед программированием нажимаем кнопку SELF POWER. Перемычки J3 LOW SCK и MODIFY / NORMAL заменены кнопками. Так красивее и удобнее.
Печатная плата ниже. В формате Sprint-Layout v5.0 можно взять тут. На плате продублирован выход LED / XTAL для удобства пользования. Внимание!!! Печатная плата обновлена. подтягивающий резистор на RESET был неправильно разведён и конденсаторы по питанию отсутствовали.
Прошивал этот программатор следующим образом:
- подключил к USB (питание МК осуществляется от USB)
- подключил его к программатору STK200/300 (он у меня был собран давно),
- нажал кнопки SELF POWER и MODIFY. (Тем самым подаём питание на STK200/300 и соединяем вывод RESET с колодкой программирования) кнопка SELF POWER для питания ПРОГРАММИРУЕМЫХ устройств, в том числе и программатора, который туда подключен, а не наоборот.
- с помощью PonyProg залил прошивку. Им же выставил FUSES. Должно получиться вот так:
Вот что должно было получиться (кликабельно): Половинки корпуса приклеены к плате с помощью жидкого метала (2-х компонентной эпоксидной смолы).