Этот прогамматор предназначен для программирования микроконтроллеров (МК) производства фирмы Atmel серий AT90, ATTINY, ATMEGA, ATXMEGA и некоторых из других серий по протоколам ISP, TPI или PDI и является очередным "мегаклоном" оригинального программатора Atmel AVRISPmkII, что позволяет использовать его с любым программным обеспечением, поддерживающим протокол AVRISPmkII (STK500v2/USB).
Он основан на проекте LUFA, но существенно доработана аппаратная и программная части: все интерфейсы выведены на один разъем через преобразователи уровней, управляющая программа оптимизирована под конечную схему (в исходных текстах убрано все лишнее и исправлена пара ошибок), добавлена калибровка RC-генератора по методике AVR053.

Основные характеристики:
- программирование микроконтроллеров (МК) AVR серий AT90, ATTINY, ATMEGA и ATXMEGA по интерфейсам ISP, TPI или PDI;
- работа с программным обеспечением, поддерживающим протокол AVRISPmkII (STK500v2/USB);
- поддержка тактовых частот для интерфейса ISP от 51 Гц до 8 МГц, 250кГц для интерфейсов TPI и PDI;
- наличие генератора меандра с частотой 1МГц;
- возможность подачи напряжения 3В или 5В на МК от программатора с защитой от перегрузки по току (самовосстанавливающийся предохранитель на 100мА);
- преобразователи уровней на всех линиях позволяют программировать МК во всем диапазоне их напряжений питания от 1.8В до 5.5В;
- возможность калибровки внутреннего RC-генератора контроллера по методике AVR053, при этом опорная частота равна 32258Гц;
- работа в операционных системах Linux/Windows;
- нет необходимости использования дополнительных устройств для обновления ПО программатора - оно осуществляется через USB разъем программатора.

Ограничение по сравнению с оригинальным Atmel AVRISPmkII: нет контроля перегрузки и правильности подключения сигналов интерфейса (на работу не влияет).

Схема программатора

Клон программатора Atmel AVRISPmkII

Основа устройства - микроконтроллер ATMEGA16U4-AU (DD1), который осуществляет связь с управляющим компьютером по интерфейсу USB, обрабатывает команды и выдает управляющие сигналы через преобразователи уровня (DD2-DD8) на разъем XP1, к которому подключается программируемый МК. На отдельный контакт XP2 выведена частота 1МГц, которую можно использовать для тактирования программируемого МК. Уровни выходных сигналов соответствуют напряжению на контакте 2 разъема XP1 (Vtarget), который должен быть соединен с выводом питания программируемого контроллера.

Назначение выводов соответствует выводам программатора AVRISPmkII (картинка взята с просторов интернета, автор неизвестен):

Для подключения программируемого МК рекомендуется использовать разъем IDC-6 или аналогичный.

Светодиоды около разъема USB индицируют состояние устройства. Сразу при подключении эти светодиоды индицируют первую цифру серийного номера: зеленый светодиод - 0, красный - 1. При бездействии: зеленый - не готов; красный - готов, но напряжение на интерфейсном разъеме менее 1.8В; зеленый с красным - готов и напряжение на интерфейсном разъеме более 1.8В. При работе зеленый светодиод мигает при выполнении команд. Светодиоды около интерфейсного разъема отображают подачу напряжения с программатора на интерфейсный разъем: красный - около 3В, зеленый - около 5В (может существенно отличаться из-за отсутствия стабилизатора), оба не горят - напряжение должно подаваться со стороны контроллера. Напряжение подается при помощи трехпозиционного переключателя.

Конструкция

МК ATMEGA16U4-AU не надо путать с ATMEGA16U4RC-AU - последний настроен на работу от встроенного RC-генератора и для его приведения к состоянию ATMEGA16U4-AU (программирование загрузчика FLIP и/или готовой прошивки, а также конфигурации) необходимо будет использовать дополнительный программатор. Стабилизатор MCP1700 можно заменить на MCP1701, но при этом конденсатор C11 должен быть не керамическим, а алюминиевым или танталовым емкостью 10мкФ. 74LVC1G125 можно заменить на 74LVC1G126, соединив вывод 1 не с выводом 3, а с выводом 5. Резистор R1 - ферритовая бусина сопротивлением несколько десятков ом или дроссель индуктивностью несколько микрогенри с рабочим током не менее 500мА. Резисторы, конденсаторы, светодиоды - SMD размера 0805, кварцевый резонатор - SMD размера 3.2мм x 2.5мм (Geyer KX-7 или аналогичный) частотой 16МГц, разъем USB - типа USBB-1J, разъем программирования - типа BH-6 или PLD-6, кнопки - типа C&K KMR2 или аналогичные, переключатель - типа C&K AYZ0203AGRLC или аналогичный.
Плата двухсторонняя, размером 56.2мм x 24.7мм.

Обновление ПО программатора

При подключении программатора с новым контроллером к порту USB запустится запрограммированный при его изготовлении загрузчик FLIPv1, для "ручного" его запуска необходимо при нажатой кнопке около интерфесного разъема (HWB) нажать и отпустить кнопку около разъема USB (R). Может понадобиться драйвер. Обновление ПО производится при помощи Atmel FLIP, AVRDude или DFU Programmer. Серийный номер записан в последних 6 байтах EEPROM, в avrisp2.eep он не упомянут, поэтому при перезаписи прошивки он сохраняется, при необходимости его надо менять или добавлять вручную, при его отсутствии берется номер "по умолчанию" из LUFA.

Установка драйвера

В Linux программатор работоспособен без специальных настроек и драйверов, может лишь понадобиться установка системных разрешений для использования программатора непривелегированным пользователям. Программатор совместим со свободным проектом AVRDude.
В Windows драйвер устанавливается при установке Atmel Studio/AVR Studio, но его можно установить отдельно из файла AVRJungoUSB, при этом для программирования можно использовать команднострочную утилиту STK500 из AVRCommandLineTools или ATProgram из ATBackend.
Из-за ограничений официального драйвера и Windows одновременное использование в AVR Studio/Atmel Studio и AVRDude затруднено: для AVRDude необходимо установить драйвер libUSB. Для удобства программатор предоставляет два серийных номера, отличающиеся первой цифрой: 0 или 1. Переключение номера производится кнопкой около разъема USB (R). Из-за "сырости" драйвера libUSB-Win32 не рекомендуется использование AVRDude под Windows - возможны проблемы вплоть до полной его неработоспособности, программы через Jungo работают стабильно.

Программное обеспечение

AVRStudio (проверялся на версии 4.19 и 5.0)
Запустить AVRStudio, выбрать меню Tools->Program AVR->Connect... Далее в появившемся окне выбрать тип AVRISP mkII. При предложении обновить ПО - отказаться. При использовании утилиты STK500 в командной строке указать тип порта - "USB" (-cUSB).

ATProgram (Atmel backend из Atmel Studio, проверялся на версии 6.1 и 6.2)
В командной строке указать тип программатора: -t avrispmk2.

CodeVisionAVR (проверялся на версии 2.05)
Запустить CodeVisionAVR, выбрать меню Settings-Programmer. Далее в появившемся окне выбрать тип: Atmel AVRISP MkII (USB).

AVRDude (проверялся на версии 6.0.1 под ОС Slax 7.0)
В командной строке указать тип программатора и порта: -c avrispmkii -p usb. Указывать порт (-p usb) не всегда обязательно (зависит от версии AVRDude). Поддержка программирования ATXMEGA по протоколу PDI введена с версии 5.10. Как было написано ранее, под Windows работа AVRDude не всегда удается.

Несмотря на заявленную поддержку частоты протокола ISP до 51Гц, как и в оригинальном программаторе, программирование на частотах менее 2кГц не поддерживается некоторым программным обеспечением, а менее 1кГц - и самим программатором (тайм-аут при попытке программирования). Низкие частоты могут использоваться только для стирания ранее зашитого кода, который дополнительно понижал тактовую частоту внутренним прескалером при использовании очень низкой входной тактовой частоты (кварцевый резонатор на 32.768кГц или RC-генератор на 128кГц).


Архив для статьи "Клон программатора Atmel AVRISPmkII"
Описание: Исходный код, файл прошивки микроконтроллера, макет печатной платы (P-CAD 2004), драйвера
Размер файла: 1.1 MB Количество загрузок: 1 692 Скачать