И так — продолжаем разговор.
Сегодня речь пойдет об очередных, хотя я бы сказал, о первоочередных интсрументах, без которых необходится ни один мой проект, в котором есть хоть какой то намек на микроконтроллер и на его программу.
Как вы уже догадались (ну да, в заголовке — то написано) , речь пойдет сегодня об программаторах, которыми мы будем прошивать наши поделки.
Начнем по порядку, в которм я их собирал.
Первым был у меня ISP программатор, собранный по схеме, взятой с сайта www.lancOS.com, там, где я скачал саму программу для прошивок — PonyProg.
Собрал, я его, значит и не нарадовался. Контроллеры программируются, поделки работают. Но не всегда. Иногда работают не так, как хотелось. Значит надо отлаживать программы. А как? Можно, конечно, симулятором сначала их погонять. Благо, AVR Studio позволяет. Но у меня в поделках валом всякого навесного оборудования иногда бывает, которое особо то не посимулируешь. А отладка с помощью printf, это, как бы сказать, каменный век. Хотя я знаю одну фирму, здесь, в Гермашке, которая выпускает некое оборудование числом около 80000 единиц в год по цене около 5000 евро за единицу, в которой софт отлаживают до сих пор с помощью printf.
Но это не наш метод! Захотелось мне иметь нормальный отладчик, что бы и по коду побегать с Break-поинтами, и переменные поглядеть. И начал я исследовать интернет на эту тему. Нашел много всяческих схем, одну из которых я повторил. Называется — JTAG-ICE. Платку от нее я засунул в тот же корпус, в котором у меня был уже ISP программатор, и вышел вот такой вот девайс:
Внутри выглядит немного страшнее, потому что, как всегда, я перепутал, по не опытности (тогда я был еще молодой и зеленый) стороны у коннетора SUB-D, и еще пару проводочков — RX и TX (вечная моя проблема).
И наступило мне счастье. Теперь я мог отлаживать свои программки, находить баги в самых неожиданных местах, и смотреть значения переменных.
Но тут на днях, около 2-х месяцев назад, случилось у меня крупное приобретение автомобиля, в котором небыло MP3 плеера. Недолго думая, решил я себе таковой собрать, благо наработки уже были, осталось только воткнуть все в машину, и вот тут то вот подкрался один недостаток сего программатора.
Во первых — он на COM порте. Найдите мне сейчас ноутбук, у которого хоть один COM порт есть на борту. Сплошные USB. В принципе, можно использовать переходник. С ним программатор тоже работает.
Но есть другая проблема — питание программатора — это блок питания на 7 — 30 вольт. Его надо втыкать в розетку. В гараже (у нас подвальные гаражи, и наше место на втором, вниз, уровне) розеток нет в принципе.
И предвидя такую проблему в проекте плеера, я решил доработать программатор портом USB. И обе проблемы решились сами собой. Глядим на схему и видим, что основная часть с контроллером почти что один в один осталась та же, но добавилась пара страничек с USB контроллером от FTDI FT232BM, которым я заменил RS232-TTL конвертор и выкинул преобразователь напряжения на 5 вольт, так как теперь мы питаемся от USB.
И, я сделал свой плеер именно с помощью этого программатора, сидя в машине, в гараже (соседи очень удивлялись, видя меня там).
Так он выглядит с наружи:
А так выглядят внутренности. Уже не так страшно. Но опять же я умудрился перепутать RX и TX сигналы.
Значит так. Когда вы соберете один из выше показанных программаторов, то обнаружите, что контроллер-то надо чем-то тоже запрограммить. Перед нами нарисовалась проблема «Яйцо-Курица, кто первый?». Ну мне было легче, у меня был уже ISP программатор. Так что вы знаете, что делать.
Подсоединяем ISP-программатор к новому JTAG программатору к штекеру JP1, если смотреть на схему. Ставим перемычки JP2, 3, 4 в нижнее, по схеме, положение, подключаем к USB порту компьютера, и запускаем BAT-файл из этого архива — bootld163.rar, сначала bootwrite.BAT, затем, когда он завершит работу без ошибок — upgr352write.BAT. Основная ошибка, которая может возникнуть вовремя запуска батников, это невозможность подключится к порту LPT, т.е. не загруженая библиотека DLPORTIO.dll. Она находится в этом же архиве. Я эту проблему решил просто — стартанул PonyProg и закрыл его. Этого достаточно, чтобы библиотека загрузилась в память. Закрыть PonyProg надо обязательно, иначе порт LPT будет заблокирован. Затем запустил подряд оба батника.
Далее, когда второй батник закончит работу — выдергиваем USB шнур, и втыкаем снова. Если вы делали JTAG-ICE-USB, то лезем в свойства нашего компьютера, в менеджер устройств и смотрим, какой порт система назначила нашему USB<->Serial конвертеру. Выставляем в пределах COM 1-4, так как AVR Studio, почему-то переваривает только первые 4 порта. Запускаем AVR Studio, и пытаемся соединиться с JTAG ICE отладчиком. Для этой цели я, в помошнике (Wisard) создания нового проекта открываю .elf файл, который генерится компилятором AvrGCC, выбираю из предложенного AVR Studio списка целевой контроллер, и жму «Готово».
В этот момент AVR Studio должна определить наш программатор... но почему то нифига не находит! А все потому, что мы забыли переставить перемычки JP2, 3, 4 в верхнее по схеме положение! Теперь, AVR Studio должна найти программатор и ругнуться, что версия прошивки старая, и будет запущен программатор (уже программный) для обновления. Жмите Ок. Обновляйте прошивку. Затем незабудте выдернуть USB шнур и обратно вставить, чтобы сбросить контроллер. И теперь, повторив маневр соединения с программатором, можно насладиться моментами работы отладчика.
Ниже список файлов, необходимых для повторения данных программаторов:
- JTAG ICE на COM порту — jtag_ice_my.pdf
- JTAG ICE на USB порту — jtag_ice_usb.pdf
- Прошивки загрузчика и старой версии программатора - bootld163.rar
В архиве с прошивкаим еще раз описаны все эти действия, но уже от лица составителя этого архива, как и одной из версий программатора JTAG ICE, коих в интернете довольно много. Печатную плату не выкладываю, так как она все равно с ошибкой. Но если сильно понадобится — дайте знать, я ее конвертану в BMP как нибудь и положу.
Приятного кодинга и дебагинга!
Один комментарий к “Мои инструменты: программаторы для AVR'ок”
Оставить комментарий или два
Пожалуйста, зарегистрируйтесь для комментирования.
29th May 2010 в 17:45
В AVR Studio можно настроить пул сканирования COM-портов:
Tools -> General -> Number of COM-ports to try