Программатор для микроконтроллеров Atmel

AVR910-совместимый, да не совсем, программатор микроконтроллеров AVR/89S; разработка PROTTOSS-а (естественно стащил).

Оригинальная схема немного изменена (изменения выделенный красным цветом). Предохранитель F1 из схемы кем-то был исключен, обратил внимание, но было поздно… Эх, была не была, кто не рискует — тот не пьет абсента. Диодами VD1, VD2 понижается напряжение питания микроконтроллера DD1 до 3,6 В.  Светодиоды VL1(“RD”), VL2(“WR”) и VL3(“PWR”) индицируют соответственно процесс чтения, записи и подачу питания на устройство.

avr910_schm

Джампер J1 – (MODify) служит для начального программирования управляющего МК программатора. При его замыкании, к разъему ISP подключается внешний программатор и производится загрузка в МК управляющей программы. После программирования управляющего МК программатора этот джампер необходимо разомкнуть и замкнуть джампер J2 — NORMal.

Джампер J3 заменен переключателем S2, входящим в состав dip-переключателя на три позиции и продолжает нести в себе функцию LOW SCK — понижение тактовой частоты порта SPI МК программатора до ~20 кГц. При разомкнутом переключателе частота SPI нормальная, при замкнутом — пониженная. Переключать можно на ходу, так как управляющая программа МК программатора проверяет состояние линии PB0 при каждом обращении к порту SPI. Не рекомендуется переключать при запущенном процессе записи/чтения программируемого МК, т.к., скорее всего, это приведет к искажению записываемых/читаемых данных. Переключатель S2 введен для возможности программирования МК AVR, тактируемых от внутреннего генератора 128 кГц.

Резисторы R10 — R14 предназначены для согласования уровней сигналов МК программатора и внешних, подключенных к программатору, цепей (программируемый МК или другой программатор).

Тактовая частота порта SPI МК программатора при разомкнутом S2 равна 187,5 кГц. Это позволяет программировать контроллеры с тактовой частотой примерно от 570 кГц для ATtiny/ATmega, 750 кГц для 90S и 7,5 МГц для 89S. Контроллеры программируются от 10 до 30 секунд (при использовании утилиты AVRProg v.1.4 из пакета AVR Studio) вместе с верификацией в зависимости от объема FLASH памяти и тактовой частоты.

На вывод LED разъема ISP выведен меандр с частотой 1 МГц для «оживления» МК, у которых были ошибочно запрограммированы фьюз-биты, отвечающие за тактирование. Сигнал генерируется постоянно и не зависит от режима работы программатора, переключателем S3 возможно отключение вывода меандра на разъем ISP. Переключатель S1 служит для подачи питания +5 В на разъем ISP непосредственно с порта USB.

Программатор тестировался автором с программами AVRProg v.1.4 (входит в пакет AVRStudio), ChipBlasterAVR v.1.07 EvaluationCodeVisionAVRAVROSP (ATMEL AVR Open Source Programmer). Кроме того, программатор тестировался с программой AVRDUDE, однако, программа с данным программатором не совместима, так как не все команды протокола AVR910 отрабатывает корректно.

На данный момент с вышеперечисленными программами протестировано программирование контроллеров 89S53, 89S8252, 90S2313, 90S8515, ATtiny13, ATtiny26, ATtiny45, ATtiny2313, ATmega48, ATmega8, ATmega8515, ATmega8535, ATmega16, ATmega32, ATmega64, ATmega128, AT90CAN128.

На этом теоретические сведения заканчиваются. Переходим к практике

Устройство собрано на печатной плате размером 75*50 мм. Чертежи в формате SprintLayout лежать здесь. Имеется вариант для разъема USB типа A и для USB типа B. Также есть чертежи платы с панельками, как с разводкой цепей питания от внешнего источника, так и с цепями питания от ISP порта.

dsc05854 dsc05859 Лично я применил вариант с коннектором USB типа B и плату с панельками что попроще. В качестве светодиодов применил самые простые импортные пяти миллиметровые. Разъемы ISP шины — PLD-10 (BH-10 не помещаются на плату, но и разницы никакой). Шлейф делаем из обычного шлейфа от флоппи дисковода или из IDE шлейфа для CD привода; на концах — обычные разъемы IDC-10F. Сначала обжимаем кабель, разместив его на контактной гребенке и накрыв средней частью разъема. Удобно использовать небольшие тиски; как только раздастся два легких щелчка — прекращаем усердствовать, заворачиваем шлейф и надеваем верхнюю часть также до щелчка.dsc05858_sm

После того, как все собрано — начинается самое интересное, а именно — прошивка.

Да-да, чтобы прошить программатор, нужен еще один программатор. Вариантов несколько: найти где-нибудь готовый (может даже у себя в ящике) или состряпать простейший программатор Fun-Card. Я остановился на последнем. Итак, берем разъемы DB-25F и IDC-10F (BH-10), шесть сопротивлений на 220 Ом, кусочек провода и паяем вот этоfun-card

Я обошелся без IDC, припаяв сопротивления напрямую к разъему шины ISP будущего программатора. Так как сопротивлений было всего три, пришлось взять питание непосредственно от USB разъема. Ну и самое главное — ставим перемычку J1 (в положение MOD, то есть в верхнее положение).

Далее записываем файл прошивки в контроллер чем угодно, поддерживающим Fun-Card. Я использовал Uniprof — интересная программка однако, подробнее можно почитать тут.

Самое главное в этом вопросе — правильная установка Fuse-Bits. Делается после прошивки в соответствии с рисунком для Uniprof:uniprof_fuses

и соответственно для PonyProg:

ponyprog_fuses

Прошили, установили фьюзы. Далее отсоединяем наш только что родившийся программатор от Fun-Card, обесточиваем, перемычку J1 снимаем и ставим на место J2 (в положение NORM, то есть в нижнее положение).

Далее подсоединяем USB-шнурок к компьютеру — ты дынь! — «Найдено новое оборудование, за это надо выпить«, производим ручную установку драйвера.

dsc05862

«Вот такой вот получился винегрет…»

Единственный открытый вопрос — на плате с панельками не установлен цанговый разъем под кварцевый резонатор для тактирования прошиваемого контроллера внешним кварцем.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *