По многочисленным просьбам телезрителей знакомых, выпустил микроплатку (в народе - "брикаут") с ATmega8U2:
Идея создания была навеяна платами USB-Serial Light Adapter от Arduino и ATmega8U2 Breakout от Sparkfun (в итоге за основу был выбран второй вариант).
С одной стороны - этот девайс с успехом заменяет FTDI friend, исполняя роль USB-TTL конвертера для связи с целевым MCU через UART или программирования в среде ArduinoIDE. С другой - вполне себе самостоятельная отладочная плата для ATmega8U2, на которой разведены все его пины, а прошивку можно заливать через ISP6 или вообще по USB через DFU (т.е. без использования программатора).
Некоторые моменты, на которые хотелось бы обратить внимание:
1. Джампер выбора напряжения питания - по умолчанию установлен в +5В. Если есть желание поработать на +3.3В, можно перепаять - однако в этом случае предельная тактовая частота по паспорту будет ограничена 8 МГц, в результате может потребоваться переключиться на внутреннюю калиброванную цепочку (надо менять фьюзы, программатором);
2. Регулятор +3.3В. Он нужен для питания MCU от +3.3В (см. выше) и дополнительно может выдавать его наружу через соответствующий пин - всего до 150мА. Не путайте его с внутренним регулятором ATmega8U2, который служит для формирования правильного напряжения на линиях D+/D-, когда сам MCU питается от +5В. Кстати, если уж выставили Vсс = +3.3В, этот внутренний регулятор обычно отключают - через регистр REGCR, экономя таким образом немного на энергопотреблении;
3. Предохранитель 500 мА, выручит вашу схему в случае короткого замыкания по питанию, а специальные диоды - уберегут линии D+/D- ATmega от статического разряда.
4. Гребенка выводов совместима с FTDI friend и вообще с кабелями FTDI. Можно особо не задумываясь использовать, например, с Angelino.
5. Кнопка сброса - с одной стороны - как обычно, замыкает RESET на GND. Однако, если в момент сброса линия DTR (она же пин PD7) была подтянута к земле - активизируется DFU. По крайней мере именно так ведет себя DFU в платах Freeduino ONE и Arduino UNO - но при помощи программатора и собственной прошивки это, конечно же, можно изменить.
6. Светодиод STATUS, в чем-то по функциям похожий на светодиод L в Arduino-совместимых платах Arduino - подключен к линии PB4.
Вот так рекомендуется подключать ATmega8/168/328 к этой плате по первому варианту (в режиме конвертера USB-TTL):
R2 (подтягивает DTR к GND) - необязателен при условии, что вы не прикасаетесь к кнопке сброса на ATmegaU (и действительно - зачем прерывать работу вечного двигателя прошивки конвертера USB-TTL?). Небольшой резистор R3, включенный последовательно в линию TX, защищает пин от перегрузки по току в случае, если его ошибочно посадили на VCC или GND с другой стороны (не забывайте - если на встречной стороне другая ATmega - такое можно сотворить и программно).
Если в MCU уже прошит бутлоадер, схему можно соорудить хоть на беспаечной макетке, например так:
В настройках ArduinoIDE надо выставить правильный порт и тип платы - "Arduino Uno" (пользователи Windows дополнительно устанавливают .inf-файл от Freeduino ONE).
Программирование через DFU можно осуществлять через FLIP или dfu-profgrammer, указывая тип MCU at90usb82 - именно его и заменил (с более, чем скромными усовершенствованиями) ATmega8U2.
Приобрести плату ATmegaU можно здесь, только имейте ввиду, что по умолчанию она продается в комплекте с единственной и ненапаянной вилкой ISP6, все прочие вилки или розетки вам придется выбирать дополнительно, исходя из своих конкретных потребностей.
Схема:
Репозиторий на github, где можно получить исходники прошивки: https://github.com/a1ronzo/SparkFun-USBtoSerial





Правильно ли я понимаю, что эту плату можно использовать и для программирования пустого контроллера?
ОтветитьУдалитьЭто же не ISP-программатор... (если речь именно про ISP-программирование, конечно).
ОтветитьУдалитьЦитирую: "этот девайс с успехом заменяет FTDI friend".
ОтветитьУдалитьПри этом:
http://www.ladyada.net/learn/breakoutplus/ftdifriend.html#programming_blank_avrs
Собственно, потому и возник вопрос.
Так-то я понимаю, что можно и прошивку понаписать, если что.
Да, ATmegaU действительно может заменить FTDI friend, но платы все-таки, разные - на одной ATmega8U2 с возможностью замены прошивки USB-TTL переходника, на другой - вполне полноценный мост на чипе FTDI232RL, в котором уже ничего не поменяешь.
УдалитьЕсли честно, я не искал прошивку-программатор для 8U2, поэтому опровергнуть или подтвердить ее существование не могу. Т.е. потенциально - возможно, наверное, ее написать. Только 8К, на мой взгляд, маловато...
Достаточно, наверное. У attiny2313 в http://www.ladyada.net/make/usbtinyisp/download.html его 2к хватает и программирование и на v-usb
УдалитьНо я-то имел ввиду просто добавить выводов ком-порта, чтоб воспользоваться ими для программирования :-)
У меня был долгий перерыв в электронике и теперь мне не на чем запрограммировать что-либо (в ноуте - только usb). Пока неспешно выбираю - толи ардуино взять полуготовую, толи что-нибудь поинтереснее. Вероятно, будет и то и другое, когда задавлю жабу.
Для программирования ATmega/ATtiny отлично подходит AVRDoper http://mk90.ru/store/ru/programmatory/63-programmator-avrdoper-lite.html, хотя можно купить и что-то посерьезнее.
УдалитьПро RS232 - не понял совсем. Чем оно поможет в программировании, куда и зачем его добавлять? ATmegaU подключается и питается по USB, все выходы процессора разведены на дырки.
Специализированный программатор штука хорошая, особенно если надо залить много контроллеров. Но земноводное давит покупать то, что будет использовано для программирования загрузчика в лучшем случае раз в сезон в ближайший год. Пока вполне устроит arduino + несколько проводков + скетч ArduinoISP.
ОтветитьУдалитьЧто касается rs232, программирования и atmegau - это отсылка к вопросу о программировании _через_ него. Скажем, есть что-то вроде http://diy4fun.blogspot.com/2009/01/simple-serial-programmer-for-avr.html, где используются CTS, DTR, RTS, которые не все эмулируются данной платой и при этом есть в FT232. Эмулировались бы - не требовалось бы написание прошивки для программирования :-)
В общем, где-нибудь добавьте, что для программирования внешних котроллеров требутся либо имеющийся загрузчик в программируемом контроллере, либо написание прошивки-программатора.
Земноводное можно душить долго и с чувством, поэтому пожелаю удачи в этом нелегком и скучном деле ;) Кстати, для MKBoard R3 я достаточно подробно рассказал, как ее превратить на время в AVRDoper: http://mk90.blogspot.com/2012/01/mkboard-stk500.html.
УдалитьЕсли уж и тут земноводное будет подло шептать "не нужен тебе программатор! не нужна тебе MKBoard! Только bit-bang-ом и только через FT232RL!", то посоветую Seeeduino - там FT232RL и битбанг - есть.
Благодарю за пожелание :-)
УдалитьСобственно, мысль интересная насчёт mkboard. Эту статью я как-то пропустил.
Главное - задушить жабу :-)