logo

Программатор AVRок на базе ATmega8, для USB
Автор Hardwarest   
27.05.2007 г.

 Программатор AVRок на базе ATmega8, для USB

Со временем многие начинают сталкиваться с проблемой ухода морально устаревших портов, таких как LPT и COM. Это происходит в связи с полным переходом на шину USB. Для прошивки микроконтроллеров AVR необходим программатор, который зачастую использует морально устаревшие порты. Но есть выход, программатор можно сделать USB и с этим нам помог Рыжков Андрей aka PROTTOSS.

Многие, наверное, скажут, что для прошивок можно купить простенький компьютер и не морочить себе голову, но если прошивать контроллеры нужно редко и места для второго компьютера мало или вообще нет. Тогда стоит задуматься о приобретении USB программатора. Но зачем покупать целый программатор, если можно сделать свой.

И так, программатор AVRок который разработал Рыжков Андрей aka PROTTOSS .

Программатор выполнен на основе драйвера от 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 кГц.

 

Скорость работы порта SPI МК программатора при разомкнутом джампере J3 равна 187,5 кГц. Это позволяет программировать контроллеры с тактовой частотой примерно от 570 кГц для tiny/mega, 750 кГц для 90S и 7,5 МГц для 89S. Контроллеры программируются от 10 до 30 секунд вместе с верификацией в зависимости от объема FLASH памяти и тактовой частоты. На вывод LED разъема ISP выведен меандр с частотой 1 МГц для "оживления" МК, у которых были ошибочно запрограммированы фьюзы, отвечающие за тактирование. Сигнал генерируется постоянно и не зависит от режима работы программатора.

 

Сборка.

 

Для программатора нам понадобятся следующее детали.

Контроллер ATmega8

9 резисторов 330 Ом

2 резистора 68 Ом

1 резистор 100 Ом

1 резистор 1,5 кОм

1 резистор 10 кОм

1 резистор 1 мОм

3 конденсатора 0.1 мкФ

1 конденсатор 22 мкФ 16в

2 конденсатора 22 пкФ

Кварц 12MHz

2 диода 1N4007

3 светодиода - 2 зелёных, 1 красный.

USB кабель, перемычки, плата, панелька для микросхемы.

 

Программатор собран на односторонней плате, размером 56Х75 мм.

 

 

Он рассчитан для внутрисхемной прошивки (сигналы Reset, Sck, Mosi, Miso выводятся при помощи шлейфа).

 

 

Для прошивки контроллера программатора установлена перемычка J1. Панелька установлена для быстрой замены микросхемы в случае выхода её из строя.

 

PCB разработанная Hardwarest_ом.

 

Прошивка.

 

Прошивать ATmega8 Можно прямо в программаторе. Для этого: устанавливаем перемычку в режим “ MODify”, к разъёму ISP подключаем внешний программатор (я использовал «Программатор для AVR микроконтроллеров на базе 74HC244»), подключаем USB Кабель в свободный разъём хаба и приступаем к настройке программы.

 

 

Для прошивки ATmega8 будем использовать PonyProg2000 V2.06f, но для этого нужно его сконфигурировать.

 

Прошивка FUSE BITS:

 

Для нормального функционирования контроллера в схеме необходимо, чтобы были запрограммированы (установлены в "0") биты SPIEN, CKOPT и SUT0. Обычно МК, идущие с завода, т.е. новые, имеют уже запрограммированный бит SPIEN.

Должно быть так:

 


Далее заливаем прошивку из архива:

Все архивы содержат файл прошивки, установочный inf-файл и схему в формате Adobe pdf. Кроме этого, старые версии содержат описание в виде старой html страницы.

ChipBlasterAVR Evaluationavr910_usb_programmer.files.ver.1.01.rar Версия от 25.08.2006. Автоподстройка частоты SPI, что немного прибавляет скорость программирования, однако, вследствии этого, есть проблемы с работой на некоторых компьютерах из-за таймаута ожидания ПО программатора

ChipBlasterAVR Evaluationavr910_usb_programmer.files.ver.1.02.rar Версия от 21.09.2006. Нет автоподстройки частоты, но за то появилась генерация меандра на вывод LED ISP-разъема. Имеется ошибка в прошивке, связанная с установлением на выводе RESET ISP-разъема лог. "0" при первом включении программатора. Вывод остается в таком состоянии до первого программирования или входа в меню установки FUSE BITS...

ChipBlasterAVR Evaluationavr910_usb_programmer.files.ver.1.03.rar Версия от 31.10.2006. Исправлена ошибка версии 1.02.

ChipBlasterAVR Evaluationavr910_usb_programmer.files.ver.1.04.rar Версия от 16.12.2006. Добавлено подключение внутреннего pull-up резистора ко входу MISO МК программатора во время программирования таргета. Возможно, будет полезно при чтении плат с пониженным напряжением питания, да и вообще, думаю, положительно скажется на надежности чтения программируемого МК...

ChipBlasterAVR Evaluationavr910_usb_programmer.files.ver.1.05.rar Версия от 17.01.2007. Добавлен джампер J3 LOW SCK для понижения тактовой частоты порта SPI программатора. В настоящий момент самая свежая версия прошивки.


Инсталляция в систему:


Windows XP


Прошить контроллер. Подключить свежеиспеченный программатор к РС через свободный разъем USB. ОС найдет новое устройство – AVR910 USB Programmer, при предложении автоматически найти драйвер, отказаться, и указать путь к файлу prottoss.avr910.usb.inf. При предупреждении, что драйвер не имеет цифровой подписи, игнорировать предупреждение.


В итоге, программатор должен появится в диспетчере задач:


Диспетчер задач, программатор AVRок


Могут возникнуть небольшие проблемы, когда, после установки, программа AVRProg v. 1.4 не смогла найти программатор, так как ОС присвоила ему номер COM9. После мониторинга портов оказалось, что AVRProg ищет устройство только на потрах COM1 - COM4. Изменить номер порта можно, если зайти в диспетчере устройств в: AVR910 USB Programmer -> Свойства–> Параметры порта -> Дополнительно -> Номер COM-порта


Windows 2000


В принципе, инсталляция не отличается от описанной выше для Windows XP, но есть одно НО - задержки в драйвере usbser.sys портят цепочку команд от ПО на РС до программатора и, соответственно, цепь ответов обратно от программатора до ПО на РС... Необходимо заменить файл usbser.sys в системных папках Windows 2000 на аналогичный от Windows XP. Это папки ...\winnt\system32\drivers\ и ...\winnt\system32\dllcashe\. Файл usbser.sys от Windows XP SP1 можно взять здесь. Естественно, что драйвер придется подменять загрузившись под другой ОС (например, с загрузочного диска). Так как ядра этих двух ОС очень схожи, то драйвер от Windows ХР прекрасно себя чувствует под Windows 2000.

 

Программатор тестировался с программами 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.

ChipBlasterAVR EvaluationСкачать ChipBlasterAVR Evaluation с нашего сайта.

Настоятельно рекомендуется повторять схему Один-В-Один, так как выкидывание "лишних" деталей из схемы может привести либо к неправильному функционированию программатора, либо к возможному выходу из строя USB порта на РС, за что, естественно, ответственность несёте вы сами.



Выражается особая благодарность автору программатора AVRок, Рыжкову Андрею aka PROTTOSS.

Использованы некоторые материалы с сайта автора.


Обсуждение программатора AVRoк на конференции, также там можно увидеть обновления.

 
« Пред.   След. »

Украинская Баннерная Сеть