По многочисленным просьбам телезрителей знакомых, выпустил микроплатку (в народе - "брикаут") с 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