Отладчик-программатор для Pinboard2

AVR
После покупки отладочной платы Pinboard2 мне не понравился модуль для отладки и программирования контроллеров AVR, и я решил сделать свой.
Велосипед я изобретать не стал, использовал готовые решения, так что если кому-то интересно что у меня вышло, добро пожаловать под кат.

DI HALT`ом был описан программатор на базе FT232RL без управляющего контроллера, и очень удобно прошивать контроллер из командной строки. Когда работаешь над одним проектом разные контроллеры прошиваешь не часто, но зато много раз прошиваешь один и тот же контроллер, и я пришёл к выводу что быстрее один раз написать батник и его запускать, чем каждый раз лезть в графический интерфейс, выбирать прошивку и прошивать контролллер.

В качестве отладчика я так же выбрал готовую схему AVR JTAG ICE. Статья DI HALT`а про это отладчик тоже есть на сайте в разделе AVR учебный курс.

Приведу схему устройства(схема нарисована в P-CAD):

Крупнее

  1. Слева разъём X1 это с него приходят сигналы с отладочного модуля FT2232D.
    Для программатора используются линии CTS DSR DCD и RI а для отладчика
    RXD и TXD. Отладчик и программатор используют порт B микросхемы FT2232D, порт А остаётся свободным. Причём в каждый момент времени использоваться будет либо программатор, либо отладчик.
  2. Разъём X2. Используется для выбора источника питания отладчика и программатора.
    Отладчик может использоваться для прошивки и отладки контроллера который находится на отладочной плате, так и для сторонней платы. В случае когда прошивается контроллер на отладочной плате перемычку нужно поставить так, чтоб замкнулись выводы 1 и 2 разъема Х2.
    Когда отладчик подключен к внешней плате, то микросхема FT2232D записывается от разъема USB, а отладчик запитывается от целевой платы, чтоб предотвратить такого опасного явления как паразитное питание.
    Питание на отладчик поступает через полевой транзистор, так что переполюсовка не страшна, однако модуль боится повышения напряжения питания. В случае когда модуль получает питание от внешнего источника напряжения, то с пина Vcc разъёма X5 подаётся напряжение на ногу VCCIO микросхемы FT2232D. Для этого снимается перемычка с разъема VCCIO_PWR_SEL на плате Pinboard2 и перемычкой соединяется пит Vcc разъёма Х5 модуля и средний пин разъёма VCCIO_PWR_SEL на пате Pinboard2. Это позволит задавать напряжение выходных ног FT2232D.
  3. Разъём ХP3 предназначен для подачи питания, на модуль, когда надо прошить внешнее целевое устройство.
  4. Разъём Х4 4 пиновый JTAG разъём для отладки программ непосредственоо в контроллере. Отмечу, что для отладки в отлаживаемом контроллере надо включить FUSE бит JTAGEN.
  5. Разъём Х5. В этом разъёме есть пины для программирования контроллера по SPI интерфейсу. Пины расположены таким образом, что позволяет для программировнаия контроллера использовать поский шлейф. Также в этом разъёме есть пины выходного тактового сингала на счучай неправильной установки FUSE битов выбора источника тактирования программируемого микроконтроллера. Тактовый ненератор собран из двух элементов 2И-НЕ и при номиналах резистора 10к и конденсатора 22pF, которые задают частоту, мой цифровой осцилограф показал 1.8МГц.


Печатная плата.
Печатная плата двухстороняя и разрабатывалась для возможности изготовления этого модуля дома, так что особых проблем возникнуть не должно. Печатная плата разведена в sprintlayout. Номиналы деталей приведенны в файле печатной платы для облегчения монтажа.


Стоит отметить, что светодиоды для индикации работы отладчика не использовались, т.к. монтаж получился достаточно плотный. Кнопки программатора RUN и RESET впаиваются со стороны программатора а дырки не сверлятся!!! Не упустите этот момент когда будете делать сверловку!!! Перед запайкой кнопок, сначала запаиваются резисторы и конденсатор, которые находятся под кнопками, а потом запаиваются кнопки. Вообще рекомендую запаивать кнопки в самом конце. Конденсатор С6 будет выбирать в какой режиме будет находится программатор при включении питания. Если конденсатор находится под кнопкой RUN то при подаче питания нога RESET контроллера будет отпущена и контроллер начнёт нормально выполнять свою программу. Если конденсатор находится под кнопкой RESET, то при подаче питания контроллер будет в сбросе. Кварцевый резонатор использован SJK 7,3728MHz 6F для поверхностного монтажа. 6F, как мне объяснили в магазине, это корпус кварцевого резонатора. Кварцевый резонатор я купил вот тут:Кварцевый резонатор

По сборке модуля я думаю всё. Перейдём к настройке модуля. С программатором проблем быть не должно. В файле настроек AVRDUDE добавляем новую секцию:
#FTDI_Bitbang
programmer
  id    = "2ftbb";
  desc  = "FT2232D Synchronous BitBang";
  type  = ft245r;
  miso  = 3;  # CTS(37 PIN FT2232D) 
  sck   = 5;  # DSR(35 PIN FT2232D)
  mosi  = 6;  # DCD(33 PIN FT2232D)
  reset = 7;  # RI (32 PIN FT2232D)
;

Где id это имя программатора, который будем указывать в командной строке при вызове avrdude.exe. Номера после mosi = идёт номер вывода DBBUS. Нумерация идёт в такой последовательности: DBBUS0 это ноль, а DBBUS7 имеет число 7. В скобках дальше идут комментарии. Когда уже писал статью, понял что можно было развести плату проще, и не использовать smd перемычку, а просто по другому написать конфигурационный файл, почему-то сразу до меня это не дошло и выкладываю как есть.

После окончания редактирования файла конфига, пытаемвсё прошить любой контроллер. Для этих целей я использовал модуль AVR со вставленной Atmega32 и написал простейший бегущий огонь на светодиодах LED0-LED3 которые находятся на плате Pinboard2.

Оживляем отладчик.
Я решил сразу прошить FUSE биты, и потом прошить прошивку, не прошивая загрузчик, и не накатывая прошивку через AVRStudio. Для прошивки контроллера отладчика соединяем пины разъёма XP5 с пинами разъёма XP4 как показанно в таблице ниже(в левой колонке пины XP5, а в правой пины XP4):

MOSI TDI
MISO TDO
SCK TCK

А также делаем перемычку между пином RST разъёма XP5 и ногой RESET контроллера отладчика. Линию RESET очень легко найти на нижней стороне платы, так что не обязательно подпаиваться именно к ноге контроллера.

Для начала читаем FUSE биты которые были установленны в контроллере с завода. Это я делал двумя батниками:

avrdude.exe -p m16 -c 2ftbb -P ft1 -B 4800 -U hfuse:r:hi.txt:d
pause

и второй батник

avrdude.exe -p m16 -c 2ftbb -P ft1 -B 4800 -U lfuse:r:low.txt:d
pause


Опишу ключи которые указанны:
-p наименование контроллера с которым работаем
-с наименование программатора, который указывали в файле avrdude.conf
-P имя устройства на шине USB. Как уже писал DI HALT микросхема FT2232D определяется в системе как два ком порта или как две микросхемы FT232R. Так вот это имя устройста.
-B скорость с которой читаем
-U тут указываем с чем будем работать: с фьюзами с флеш памятью или EEPROM
читаем или пишем. r значит читаем.
low.txt имя файла, в который будет записанно младший байт FUSE битов.
-d указывает что записать значение младшего байта FUSE битов в десятичной системе.

Далее нужно правильно записать FUSE биты, как писал DI HALT в статье. Приведу строку которой прошивал я FUSE биты:

avrdude.exe -p m16 -c 2ftbb -P ft1 -B 4800 -U hfuse:w:0x19:m -U lfuse:w:0xCF:m
pause


В завершение окончательно прошиваем контроллер прошивкой из статьи DI HALT`а с сайта.

avrdude.exe -p m16 -c 2ftbb -P ft1 -U flash:w:miniICE.hex:a
pause

Предпологается что файл miniICE.hex лежит в одной папке с файлом avrdude.exe
Для работы с AVRDUDE я нашёл полезную статью:AVRDUDE Windows

При всех правильных выполненых действиях должно всё работать. Опишу проверку отладчика. Так как я пишу в IAR Embeded Work bench, то воспользуюсь способом, который я вычитал с сайта chipenable.ru Вот ссылка на оригинальную статью:
Отладка в IAR
Только в окне выбора отладочной платформы и микроконтроллера выбираем не AVR Simulator как в статье, а JTAG ICE 1.

Пару фотографий готового устройства:


Фото 2:


Прикрепляю архив в котором схема, печатная плата в sprint layout, фото, datasheet
на кварцевый резонатор, тестовая прошивка бегущего огня, прошивка отладчика и проект IAR.

На этом я завершаю свою статью, спасибо всем, кто дочитал до конца, надеюсь что данный девайс кому-то будет полезен.
  • +3
  • 19 сентября 2013, 22:45
  • MCDFV
  • 1
Файлы в топике: Program-debugger.zip

Комментарии (34)

RSS свернуть / развернуть
А чем не устроил вариант от Lifelover ?

Алсо, убери лишние переводы строки. Это HTML, и перевод строки здесь нужен только для разделения абзацев. Иначе получается вот такая хрень, которую весьма неудобно читать (уменьшено):
0
  • avatar
  • Vga
  • 19 сентября 2013, 23:01
Ага! А учитывая ещё и пропущенные запятые, вообще читается странно.
так что если кому-то интересно что у меня вышло добро
пожаловать под кат.
0
  • avatar
  • ACE
  • 20 сентября 2013, 03:43
Vga про вариант Lifelover`а я забыл, и получилась ещё одна реализация :)
0
че-та крупный план схемы не открывается ни хера. и не сохраняется:)
0
Ага, файлик картинки по ссылке битый слегка… вернее пустой…
0
А вот как сделать чтоб можно было сохранить картинку на сервере и при нажатию на ссылку крупнее схема открывалась в новом окне я так и не разобрался. Если не сложно прошу описать. Картинка в хорошем разрешении в формате JPG находится а архиве.
0
Для схем, плат и подобной графики следует использовать PNG. JPEG не только неэффективно сжимает такие картинки, но и сильно их портит.
Насчет нового окна — это какие-то аттрибуты тега a. Кажется, target=«blank», но не уверен. Но файлы из аттачей выдаются с такими заголовками, что браузер сразу предлагает скачать и сохранить файл, а не пытается его отобразить как картинку, так что смысла в открытии в новом окне нет.
+1
  • avatar
  • Vga
  • 20 сентября 2013, 22:54
ну я особо не парюсь:

— сохраняю сохраняю картинку в нормальном качестве на яндыкс.фотках;
— когда вставляешь картинку в статью — генерится код в угловых скобках: <img_src ля-ля-ля>
— а дальше этот код в угловых скобках выделяю и делаю его ссылкой на картинку на яндыкс.фотках



посмотри в браузере исходный код данного каммента — сразу должно стать понятно:)
0
яндЫкс — тоже сарказм? ;)
0
[смеется] а то!:)

был у меня кот — погремуха Кузя. и еще есть друган — веб-дизайнер или чего-то в этом роде. раз этот друган жил у меня с неделю. вино пили просто в адских количествах. так вот — почему-то спьяну Кузя у другана устойчиво ассоциировался с Яндексом. ну а поскольку друган щедрый, и не жалел колбасы и прочего мяса для моего кота, то через неделю Кузя стал откликаться и на Яндекс. но поскольку он шлялся по улицам/подвалам — стабильно был грязный как чОрт и голодный (а потому — с хитрой рожей: где б чего сожрать). в связи с этим — до Яндекса никак не дотягивал, поэтому стал яндыксом (чтобы подчеркнуть иронию). ну и с тех пор — пишу строго яндыкс:)
+2
похоже на каждое подобное будет находиться новая байка. :-D
+2
ну, это не байка, а объяснение:) а как же иначе?:) намеренно пишу слово неправильно, а почему — хер его знает?:) так это сразу к лечащему врачу:)
0
Плата не очень качественно сделана. Зря канифолью паял. Из-за этого вид не очень. Потом эту канифоль отмыть та бедося еще. Пол банки ацетона вывалить надо. Я всегда паяю глицерином. Вот так получается.
0
Зря канифолью паял. Из-за этого вид не очень. Потом эту канифоль отмыть та бедося еще. Пол банки ацетона вывалить надо.
Рекомендую денатурат (спирт с добавками чтобы не пили) — бакс за поллитра или полтора за литр в любом хозмаге. Можно мыть хоть залейся.
Я себе под это дело завел лоток, в который первоначально кидаю загаженную плату чтобы откисла, а потом отмываю начисто.
0
О интересно, а сколько она там отмакает примерно? Так а почему ж не паять сразу глицерином? И спирт не нужен. В воде смывается быстро и легко.
0
О интересно, а сколько она там отмакает примерно?
Пока прибираю стол и выгоняю домашних из ванной. На самом деле совсем не самый нужный этап, просто чуть экономит спирт — чаще всего остается только смыть загрязненный спирт.
Так а почему ж не паять сразу глицерином? И спирт не нужен. В воде смывается быстро и легко.
1) вода сохнет сильно дольше спирта. а под пузом может вообще не высохнуть.
2) глицерин и воду сложнее выгнать под пузом. как по мне, уж лучше пусть пленочка флюса останется, чем глицерин насосавший воды.
0
вода сохнет сильно дольше спирта. а под пузом может вообще не высохнуть
Так а зачем ждать чтоб вода высохла? Сжатым воздухом она улетает за пол секунды с любого труднодоступного места, ну или как дихальт делает, в коробку плату ложит, вставляет фен и нагревает воздух в коробке, вода махом испаряется.
0
ну или как дихальт делает, в коробку плату ложит, вставляет фен и нагревает воздух в коробке, вода махом испаряется.
Вода-то испаряется, а вот глицерин под пузом — не думаю. После чего глицерин натащит новой воды из воздуха. Удалять его нужно обязательно.
0
Ну да согласен, я это и делаю компрессором. Либо если его нету тогда детали с пузом паять не глицерином.
0
Я отмываю изопропанолом и кисточкой. На такую плату, изрядно уляпанную канифолью, уходит 5-10 мл, если не меньше. Да и времени минут пять уходит.
А вообще рекомендую взять припой (с каналом NC флюса, хорошей фирмы) 0.6-0.8 для THT и 0.3-0.5 для SMD и паять «с подачей». И пайки аккуратные, и паяется быстро, и флюса остается минимум (зависит в первую очередь от диаметра, на THT после 0.6мм почти ничего не остается, после 1.0 — довольно много). Флюс, кроме того, что в припое, не нужен (разве что для прихватывания SMD с одной стороны, для этого можно немного СКФ мазнуть).
+1
  • avatar
  • Vga
  • 22 сентября 2013, 20:01
Ты такие микрухи как FT232RL (что в пинбоарде-v1)паяешь жалом по одной ножке или проводишь махом по всем ногам?
0
Жалом по столько ног, сколько умещается на его ширину (2.5мм). Иногда — феном, но при ручной дозировке пасты из шприца обычно половина ног слипается. Слишком много пасты. Зато микра сама собой идеально позиционируется. Хотя можно вытравить трафарет под ходовые корпуса и мазать через него ракелем.
При этом да, флюс нужен, особенно при чистке залипух. Одно из немногих таких мест. При этом стараюсь мазать так, чтобы не затекало под корпус (да и вообще, чаще всего кусковую канифоль для этой цели использую).
0
  • avatar
  • Vga
  • 22 сентября 2013, 20:31
NC флюса

это что за зверь? или это опечатка, и речь про CF (например, в таком припое)? если всё же не опечатка — кинь сцылку на пример припоя.
0
Стандартное сокращение, означающее No Clean (безотмывочный флюс). ЕМНИП CF10 — из них.
0
  • avatar
  • Vga
  • 23 сентября 2013, 07:36
а, ну тогда да — вариант наилучший. никаких отмывок (за ВЧ не скажу, ибо не работаю с ними), блястящие пайки и относительная быстрота монтажа.
0
Ну я люблю чистые платы, так что остатки NC флюса тоже смываю.
0
  • avatar
  • Vga
  • 23 сентября 2013, 07:49
ну он хоть отмывается нормально:) а так — уж кому как нравится:) если плата одна, да сделана для себя — почему бы не промыть. если их сотни — на хер всю промывку (лично моё мнение) :)
0
Не понял по сути, чем это принципиально отличается от уже предлагаемого модуля?
0
Дык это новый модуль, на первых версиях не было такой возможности.
0
  • avatar
  • Vga
  • 30 сентября 2013, 11:17
Во время поста <19 сентября 2013, 22:45> эта возможность была, и автору надо было хотя бы упомянуть о ней.
0
Лично я впервые вижу эту плату, так что если у автора РВ старой ревизии — он мог о ней просто не знать.
0
  • avatar
  • Vga
  • 30 сентября 2013, 19:43
anakost это просто ещё один вариант модуля. Не больше не меньше. Что побудило сделать меня этот модуль написано в первом предложении статьи. Плюс, основной упор на то, что можно этот модуль повторить дома.
0
т.к. монтаж получился достаточно плотный.
при первом прочтении я промолчал, но…
смотрим на фото 2 (да и фото 1 тоже). это не то что НЕ ппросто плотный монтаж, а целый стадион свободного места.
0
Источник: статья «Pinboard II REV 2», опубликовано 20 Ноябрь 2012 автором DI HALT — Your text to link...
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.