Это устройство поддерживает пословную и постраничную запись, используемую при программировании МК семейства AVR, и побайтную запись для МК AT89S53 и AT89S8252 семейства AT89S. Таким образом, с помощью программатора можно программировать все ныне существующие МК семейства AVR и МК AT89S53 и AT89S8252 семейства AT89S при поддержке этих МК со стороны управляющего программного обеспечения, установленного в компьютере. Программатор выполнен на основе драйвера от Objective Development и полностью совместим по командам с оригинальным программатором AVR910 от ATMEL. Рекомендую повторять его точно по схеме, показанной на рисунке. Удаление “лишних”, на первый взгляд, деталей может привести либо к неправильному функционированию программатора, либо к выходу из строя порта USB компьютера.Разъем Х1 соединяют стандартным кабелем с одним из имеющихся в компьютере гнезд порта USB. Плавкая вставка FU1 служит для защиты линий питания этого порта от случайного замыкания по цепям программатора. Диоды VD1 и VD2 – обычные выпрямительные с прямым падением напряжения 0,6…0,7 В – предназначены для понижения питания микроконтроллера DD1 до 3,6 В. Согласно документации, он может работать при таком напряжении питания с тактовой частотой вплоть до 14 МГц или немногим более. Разъем Х2 соединяют с разъемом ISP программируемого устройства или с панелью программируемой микросхемы, напряжение питания на которую необходимо подать отдельно. На контакт 3 разъема Х2 выведены прямоугольные импульсы с частотой 1 МГц для “оживления” МК, у которого были ошибочно запрограммированы разряды конфигурации (fuses), отвечающие за тактирование. Этот сигнал генерируется постоянно и не зависит от режима работы программатора. Светодиоды HL1 и HL2 сигнализируют о текущих действиях программатора – соответственно о чтении информации из памяти программируемого микроконтроллера и о записи в нее. Светодиод HL3 включен, когда на программатор подано питание. Резисторы R11- R15 предназначены для согласования уровней сигналов МК DD1 с действующими во внешних цепях. Перемычку S1 при начальном программировании МК DD1 устанавливают в положение “Мод.” (противоположное ее положению на схеме).Подключив к разъему Х2 внешний программатор, выполняют загрузку управляющей программы в МК. После этого перемычку следует вернуть в показанное на схеме положение “Норм.”. Для нормальной работы загруженной программы необходимо, чтобы в МК DD1 были запрограммированы (установлены в 0) разряды конфигурации SPIEN, CKOPT, SUT0 и BODEN, а остальные оставлены установленными в 1. Обычно в МК АТmega8, полученных непосредственно от изготовителя, разряд SPIEN уже запрограммирован. Установив перемычку S2, возможно понизить тактовую частоту интерфейса SPI МК DD1 приблизительно до 20 кГц. Это необходимо для программирования МК семейства AVR, тактируемых от внутреннего генератора частотой 128 кГц. При отсутствующей перемычке S2 интерфейс SPI работает с частотой около 187,5 кГц. Это позволяет программировать МК с минимальной тактовой частотой 570 кГц (семейств ATtiny и ATmega), 750 кГц (семейства AT90S) и 7,5 МГц (семейства AT89S). Снимать и устанавливать перемычку S2 можно “на ходу”, потому что при каждом обращении к интерфейсу SPI программа МК DD1 проверяет ее наличие. Не рекомендуется этого делать лишь при запущенном процессе записи/чтения программируемого МК, что может привести к искажению записываемой или читаемой информации. Программирование МК при использовании утилиты AVRProg v.1.4 из пакета AVR Studio занимает вместе с верификацией 10…30 с в зависимости от объема памяти и тактовой частоты.
Программатор был успешно протестирован и с программами ChipBlasterAVR v.1.07 Evaluation, CodeVisionAVR, AVROSP. Были запрограммированы МК AT89S53, AT89S8252, AT90S2313, AT90S8515, ATtiny13, ATtiny26, ATtiny45, ATtiny2313, ATmega48, ATmega8, ATmega8515, ATmega8535, ATmega16, ATmega32, ATmega64, ATmega128, AT90CAN128. Программа AVRDUDE оказалась с данным программатором несовместимой, она не все команды протокола AVR910 отрабатывает корректно. При первом подключении изготовленного программатора с правильно запрограммированным МК DD1 к компьютеру операционная система найдет новое устройство – AVR910 USB Programmer. Необходимо заметить, что этого не произойдет, если номинальная частота резонатора ZQ1 в программаторе отличается от 12 МГц. Это связано с особенностями работы USB и программы МК DD1. От предложения системы автоматически найти драйвер нужно отказаться и указать ей путь к файлу prottoss.avr910.usb.inf. Предупреждение, что драйвер не имеет цифровой подписи, следует проигнорировать. У меня возникли проблемы, когда после установки программатора в системе программа AVRProg v. 1.4 не смогла его обнаружить.
Оказалось, что операционная система выбрала для программатора виртуальный порт СОМ9, а программа AVRProg способна работать только с портами СОМ 1-COM4. Изменить номер порта можно с помощью “Диспетчера устройств” Windows, пройдя по пути “AVR910 USB Programmer->Свойства->Параметры порта->Дополнительно->Номер->СОМ-порта”. Инсталляция программатора в системе Windows 2000 не отличается, в принципе, от описанной выше для Windows XP, но есть одна особенность: задержки в драйвере usbser.sys данной ОС искажают формируемые компьютером команды программатору и посылаемые программатором ответы на них. В чем дело, я пока не выяснил, но надежный способ устранения проблемы нашел. Достаточно заменить в системных папках Windows 2000 ..\winnt\system32\drivers\ и ..\winnt\ system32\dllcashe\ файл usbser.sys одноименным из Windows XP. Естественно, его придется подменять, загрузившись под другой ОС (например, с загрузочного диска). Как правило, правильно собранный программатор с правильно запрограммированным МК DD1 в налаживании не нуждается. Единственное замечание: вход RESET программируемого МК может быть соединен с плюсом питания резистором номиналом не менее 10 кОм. Это связано с пониженным напряжением питания МК DD1 и наличием ограничительных резисторов в цепях управляющих сигналов.
Если программатор не работает, прежде всего следует убедиться в отсутствии ошибок монтажа, обрывов и замыканий на его плате. Затем измерить напряжение между выводами питания МК DD1 (7 и 8). Оно должно находиться в пределах 3,5…3,8 В. Далее проверьте, работает ли тактовый генератор МК. Это можно сделать с помощью осциллографа, подключив его к выводу 10 DD1. Если осциллографа нет, подключите между выводом 10 и общим проводом через ограничительный резистор 330…510 Ом обычный светодиод (катодом к общему проводу). Если генератор работает, светодиод будет слабо светиться. Остается проверить, запустилась ли загруженная в МК DD1 программа. Один из признаков ее работы – наличие импульсов частотой 1 МГц на контакте 3 разъема Х2. Это можно сделать с помощью осциллографа или светодиода по методике, описанной выше. При замыкании пинцетом выводов кварцевого резонатора ZQ1 слабо светящийся светодиод должен случайным образом либо увеличивать яркость, либо гаснуть вовсе.
Программа для прошивки микроконтроллера
Autor:А. Рыжков, г. Новокузнецк.