Программатор AVRISP mkII на базе AT90USB162 (часть I)

23 июня 2015 11417 просмотров

Клон программатора Atmel AVR MKII. В примере реализован только PDI интерфейс.

 

 Введение.

Возникла необходимость переделать ПТК Штрих-LIGHT-200 в АСПД Штрих-LIGHT-200. В процессе доработки, выяснилось, вместо привычной для Штриха ATMega128 с ISP интерфейсом, на борту была установлена ATXMega128A1 с PDI интерфейсом. Такого программатора в наличии не оказалось, соответственно варианта два: просить у коллег программатор прошить процессор, либо собрать программатор самостоятельно. Второй вариант показался сложнее - поэтому вполне очевидно, что мы выбрали именно его. За основу был взят AVRISP mkII на базе AT90USB162 для ATXMega128A1 предложенный коллегой Lion V на профсоюзе инженеров ККМ.  
 

 Сборка.  

Скажем честно – основной проблемой стала именно плата, сперва по привычке попытались сделать навесным монтажом, идея оказалась хоть и реализуемой, но трудоемкой. Поэтому решили воспользоваться советом коллеги и сделать плату самостоятельно, по технологии ЛУТ, на всякий случай - наш опыт по изготовлению платы. Плата получилась не эталонного качества, но нас даже это устроило. В архиве платы двух вариантов DIP и SMD, мы выбрали SMD вариант

Схема клона программатора Atmel AVR MKII на базе AT90USB162

Сборка схемы не представляет сложностей, кварцевый резонатор 8МГц берется с ОКА102, резисторы 75, 300 Ом, не нашли откуда снять - пришлось покупать. Конденсаторы на 22 пФ не нашли, установили 27 пФ. В качестве PDI разъема используется USB разъем с материнской платы, он как раз по габаритам подходит. Длина проводников PDI разъема должна быть как можно меньше, у нас она 5 см. 

 

 Установка внутреннего ПО (новый микроконтроллер AT90USB162).

Данная методика верна только для установки ПО на новый микроконтроллер AT90USB162, для смены ПО процедура имеет некоторые отличия. При первом включении микроконтроллер AT90USB162 автоматически уходит в режим программирования, и не требует дополнительных операций для перевода в этот режим.
Программировать будем программой Flip (второе название программатор DFU Flip), которую устанавливаем на компьютер.
Подключаем собранный программатор к USB, система обнаружит новое устройство «AT90USB162 DFU» .

На этом этапе Windows 7 все сделал самостоятельно, Windows 2000 запросил DFU драйверы, которые находятся в папке «Atmel Flip usb», после установки драйверов устройство определится уже без ошибок  и с другим названием «AT90USB162».


Запускаем программу Flip.   


Окно программы Flip

 

В окне программы запускаем меню выбора микроконтроллера для программирования, в нашем случае это микроконтроллер AT90USB162.


Для выбора микроконтроллера для программирования нажимаем иконку со значком микросхемы.

После выбора микроконтроллера указываем тип подключения и факт подключенного устройства, для этого щелкаем по иконке с картинкой USB кабеля, в открывшемся меню выбираем тип интерфейса – USB, после чего появляется окно предложением открыть соединение с подключенным устройством, соответственно выбираем вариант «Open». При удачном подключении в StatusBar появится надпись «USB ON»


Указываем программе тип подключения, в нашем случае USB.

Выбираем файл для загрузки, в нашем случае вариант под кварцевый резонатор 8 мГц «AVRISP-MKII (8 MHz).hex». Тут важное замечание программа Flip в принципе не видит пути Windows, а понимает только DOS пути, на практике это означает, что каталог с файлом прошивки должен находится в директории с именем не более 8 знаков и в имени директории не должно быть кириллицы.


Правильный путь для загрузки файла прошивки. Файл загрузится.

 


Неправильный путь для загрузки файла прошивки, в пути к файлу есть директория с кириллицей «ПО». Файл не загрузится.

 


Ошибка загрузки файла прошивки при неправильном пути к файлу.

После загрузки файла окно программы примет следующий вид.


Окно программы после успешной загрузки файла и удачного подключения по USB интерфейсу.

Устанавливаем «галочки» Erase, Program, Verify и нажимаем клавишу «Run», при успешном программировании все radiobutton отмеченные checkbox должны гореть зеленым. После прошивки выдергиваем и снова вставляем разъем USB программатора. С этого момента программа Flip больше не будет видеть микросхему AT90USB162, а программатор теперь будет определяться системой как LUFA AVRISP MkII Clone, при этом на программаторе горят два светодиода, в нашем случае красный и желтый.


После программирования программатор будет определяться системой как LUFA AVRISP MkII Clone.

Что бы программатор виделся системой корректно, необходимо установить AVR Studio из него подтянутся USB драйвера. Windows 7 находит драйвера автоматически, Windows 2000 драйвера надо указать вручную, которые лежат в папке с установленным AVR Studio (у нас такой вариант c:\Program Files (x86)\Atmel\Atmel USB Drivers\).

 

 Установка внутреннего ПО (ранее прошитый микроконтроллер AT90USB162).

После того, как микроконтроллер AT90USB162 будет прошит, для входа в программирование для работы с программой Flip необходима другая процедура.

- Подключаем плату через USB

- Замыкаем перемычку RESET на землю (24 нога на землю)

- Не снимая перемычки RESET, устанавливаем перемычку MOD (S1 замыкает 13 ножку на землю)

- Не снимая перемычки MOD, снимаем перемычку RESET (24 ногу отрываем от земли)

- Снимаем перемычку MOD (S1  в положение Normal, то есть 13 ножку отрываем от земли)

После этой процедуры в системе должно появиться устройство AT90USB162

и теперь снова будет работать программирование через USB с помощью программы DFU Flip. Если устройство AT90USB162 в Диспетчере Устройств не появилось, значит надо перепрошить bootloader.

 

 Файлы.

Два варианта печатных плат в формате LAY, DIP и SMD варианты.

Программа Flip (Version 3.4.7) для прошивки AT90USB162 по USB.

Прошивка для программатора  AT90USB162 8 МГц 

 

 

 Заключение.

Собранный программатор подключаем к плате Штрих-LIGHT-200, пытаемся прошить, и … ничего, AVR Studio выдает кучу предупреждений, но при этом отказывается шить плату. Материал по работе с программатором и разбором ошибок получился довольно громоздким, поэтому мы решили его выделить в отдельную часть.