При разработке и отладке программ под микроконтроллеры, возникают вопросы, связанные с программированием и отладкой программы в реальной схеме. Если с программированием микроконтроллеров AVR особых проблем не возникает, поскольку существует множество схем для «заливки» прошивки в кристалл, одной из простейших таких схем является схема получившая название «пять проводов», то с отладкой программы такого богатого выбора не существует.
Для отладки программы возможно использования только двух вариантов – это программный симулятор и внутрисхемный JTAG эмулятор-программатор. Программный симулятор, как правило, не может учитывать всех особенностей работы схемы, таких как внешние воздействия, совместная работа с другими устройствами и прочее. С аппаратными программаторами-отладчиками JTAG появляется возможность пошаговой отладки программы напрямую в самом микроконтроллере установленном непосредственно в схему, просмотра и изменения всех регистров микроконтроллера, установка breakpoints и конечно же внутрисхемного программирования микроконтроллера. Но стоимость оригинального AVR JTAG ICE MkII выпускаемого Atmel колеблется в районе 300 евро, а его аналога AVRDRAGON выпускаемого серийно около 3000руб., что является очень дорогим для людей, занимающихся созданием устройств на микроконтроллерах AVR «для себя».
Но к счастью удалось создать клон, оригинального AVR JTAG ICE, который стоит существенно дешевле оригинала и позволяет проводить программирование и отладку микроконтроллеров AVR с интерфейсом JTAG.
Рис 1. Принципиальная электрическая схема клона AVR JTAG ICE
Принципиальная электрическая схема приведена на рис. 1. Основой данного JTAG служит микроконтроллер DD3 AVR ATMega16. Микросхема DD2 MAX232 выполняет роль преобразователя интерфейса RS232 в ТТЛ уровни UART. Микросхема DD1 предназначена для защиты входных и выходных цепей микроконтроллера DD3 и согласования напряжения логических уровней при использовании внешнего питания.
Питание JTAG может браться от цепей питания отлаживаемого устройства через четвертый контакт vTref XP3, а также может использоваться внешнее через разъем XP1 и ХР2. Внешнее напряжение может быть в диапазоне от 7 до 15В. При использовании внешнего источника питания, вывод vTref разъема XP3можно не подключать.
Светодиод HL2 отображает наличие питания, HL1 режим работы JTAG.
Подключение JTAG к отлаживаемому микроконтроллеру осуществляется через стандартный десяти выводной разъем. Схема подключения которого изображена на рис. 2.
Рис 2. Схема подключения AVR JTAG ICE к отлаживаемому устройству
Существует несколько вариантов BootLoader загрузчиков для прошивки JTAG, но на мой взгляд наиболее удачный вариант получился у Кротевич Виталия (Vit). Его загрузчик наиболее близко повторяет фирменный и позволяет обновлять микропрограмму JTAG непосредственно из AVRStudio без перезагрузки JTAG и входа в режим программирования через BootStart. В случае если не планируется производить обновление прошивки JTAG`a , то загрузчик можно не прошивать, а «зашить» только оригинальную прошивку от AVRStudio.
Чтобы «зашить» bootloader в JTAG можно воспользоваться программатором AVReal, PonyProg, STK200, «пять проводов», любо любым другим имеющимся в наличии и совместимым с AVR ISP. Подключение программатора производится к ISP разъему программирования ХР4. Файл прошивки JTAG_ICE.hex.
Пример программирования фьюзов показан на рисунке 3.
Рис 3. Установка фьюзов для AVR JTAG ICE
Пример работы AVR JTAG ICE показан на рисунке 4. В качестве примера произведено считывание сигнатуры ATMega128
Рис 4. Чтение сигнатуры микроконтроллера ATMega128 с помощью AVR JTAG ICE
Рис 5. Изображение верхнего слоя трассировки печатной платы, с нанесенными элементами
Рис 6. Изображение нижнего слоя трассировки печатной платы, с нанесенными элементами
Фотографии готового устройства:
P.S. Схема и трассировка печатной платы разработаны автором статьи, загрузчик использован Кротевич Виталия (ака Vit), прошивка от оригинальной AVRStudio.
При написании статьи использовались следующие источники:
1 http://onembedding.bialix.com/files/jtag_vit/
2. Официальное руководство пользователя AVR JTAG ICE JTAGuserguide.pdf
Скачать прошивку, файлы печатных плат вы можете ниже
Список радиоэлементов
Обозначение | Тип | Номинал | Количество | Примечание | Магазин | Мой блокнот |
---|---|---|---|---|---|---|
DD1 | ИС буфера, драйвера | CD74AC244 | 1 | |||
DD2 | ИС RS-232 интерфейса | MAX232 | 1 | ST232BD | ||
DD3 | МК AVR 8-бит | ATmega16 | 1 | ATmega16-16PI | ||
DA1 | Линейный регулятор | LM78L05 | 1 | |||
VD1, VD2 | Выпрямительный диод | SM4007PL | 2 | |||
VD3 | Стабилитрон | BZX55C5V1 | 1 | SMBJ5.0A | ||
VD4, VD5 | Диод Шоттки | SM5819PL | 2 | |||
HL1, HL2 | Светодиод | КР-3216-2 | 2 | |||
C1, C2, C4-C6, C9-C13, C16 | Конденсатор | 0.1 мкФ | 10 | |||
C3 | Электролитический конденсатор | 1 | ||||
C7 | Электролитический конденсатор | 470 мкФ 10 В | 1 | Танталовый | ||
C8 | Конденсатор | 1200 пФ | 1 | |||
C14, C15 | Конденсатор | 22 пФ | 2 | |||
R1 | Резистор | 36 кОм | 1 | |||
R2 | Резистор | 150 кОм | 1 | |||
R3-R6 | Резистор | 10 кОм | 4 | |||
R4, R10 | Резистор | 4.7 кОм | 2 | |||
R9, R11-R15 | Резистор | 200 Ом | 7 | |||
R16 | Резистор | 510 Ом | 1 | |||
BQ1 | Кварц | 7.3728 МГц | 1 | |||
XS1 | Разъём | DRB-9F | 1 | RS-232 | ||
XP1 | Разъём | DJK-02 | 1 | Питание | ||
XP2 | Разъём | WF-2 | 1 | Питание | ||
XP3 | Разъём | IDC-10M | 1 | JTAG | ||
XP4 | Разъём | PLD-6 | 1 | ISP | ||
Разъём | PLS-3 | 2 | Перемычки | |||