25.02.2012

ATmegaU breakout

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

18 комментариев:

  1. Правильно ли я понимаю, что эту плату можно использовать и для программирования пустого контроллера?

    ОтветитьУдалить
  2. Это же не ISP-программатор... (если речь именно про ISP-программирование, конечно).

    ОтветитьУдалить
  3. Цитирую: "этот девайс с успехом заменяет FTDI friend".
    При этом:
    http://www.ladyada.net/learn/breakoutplus/ftdifriend.html#programming_blank_avrs
    Собственно, потому и возник вопрос.
    Так-то я понимаю, что можно и прошивку понаписать, если что.

    ОтветитьУдалить
    Ответы
    1. Да, ATmegaU действительно может заменить FTDI friend, но платы все-таки, разные - на одной ATmega8U2 с возможностью замены прошивки USB-TTL переходника, на другой - вполне полноценный мост на чипе FTDI232RL, в котором уже ничего не поменяешь.

      Если честно, я не искал прошивку-программатор для 8U2, поэтому опровергнуть или подтвердить ее существование не могу. Т.е. потенциально - возможно, наверное, ее написать. Только 8К, на мой взгляд, маловато...

      Удалить
    2. Достаточно, наверное. У attiny2313 в http://www.ladyada.net/make/usbtinyisp/download.html его 2к хватает и программирование и на v-usb
      Но я-то имел ввиду просто добавить выводов ком-порта, чтоб воспользоваться ими для программирования :-)

      У меня был долгий перерыв в электронике и теперь мне не на чем запрограммировать что-либо (в ноуте - только usb). Пока неспешно выбираю - толи ардуино взять полуготовую, толи что-нибудь поинтереснее. Вероятно, будет и то и другое, когда задавлю жабу.

      Удалить
    3. Для программирования ATmega/ATtiny отлично подходит AVRDoper http://mk90.ru/store/ru/programmatory/63-programmator-avrdoper-lite.html, хотя можно купить и что-то посерьезнее.

      Про RS232 - не понял совсем. Чем оно поможет в программировании, куда и зачем его добавлять? ATmegaU подключается и питается по USB, все выходы процессора разведены на дырки.

      Удалить
  4. Специализированный программатор штука хорошая, особенно если надо залить много контроллеров. Но земноводное давит покупать то, что будет использовано для программирования загрузчика в лучшем случае раз в сезон в ближайший год. Пока вполне устроит arduino + несколько проводков + скетч ArduinoISP.

    Что касается rs232, программирования и atmegau - это отсылка к вопросу о программировании _через_ него. Скажем, есть что-то вроде http://diy4fun.blogspot.com/2009/01/simple-serial-programmer-for-avr.html, где используются CTS, DTR, RTS, которые не все эмулируются данной платой и при этом есть в FT232. Эмулировались бы - не требовалось бы написание прошивки для программирования :-)

    В общем, где-нибудь добавьте, что для программирования внешних котроллеров требутся либо имеющийся загрузчик в программируемом контроллере, либо написание прошивки-программатора.

    ОтветитьУдалить
    Ответы
    1. Земноводное можно душить долго и с чувством, поэтому пожелаю удачи в этом нелегком и скучном деле ;) Кстати, для MKBoard R3 я достаточно подробно рассказал, как ее превратить на время в AVRDoper: http://mk90.blogspot.com/2012/01/mkboard-stk500.html.

      Если уж и тут земноводное будет подло шептать "не нужен тебе программатор! не нужна тебе MKBoard! Только bit-bang-ом и только через FT232RL!", то посоветую Seeeduino - там FT232RL и битбанг - есть.

      Удалить
    2. Благодарю за пожелание :-)

      Собственно, мысль интересная насчёт mkboard. Эту статью я как-то пропустил.
      Главное - задушить жабу :-)

      Удалить
  5. "С другой - вполне себе самостоятельная отладочная плата для ATmega8U2"
    Как при этом заливать скетчи в эту плату? Какой тип платы необходимо выбрать в ArduinoIDE? Или необходимо дополнительно установить что-то в IDE чтобы появилась нужная плата? В общем задача использовать DFU для эмуляция USB клавиатуры. Как в случае с UNO. Но при этом использовать ATmega8U2 и как целевой контроллер, то есть исключить атмега328 и лить скетчи эмулирующие клавиатурные нажатия прямо в ATmega8U2 при этом использовать "язык ардуино". Если это возможно готов оплатить плату. Задача сделать хардварные клавиши для CarPC. Понимаю, что ничего не мешает прирастить к этой плате дополнительный контроллер (этакий минимальный клон UNO получится), но возможно ли лить скетчи прямо в ATmega8U2?

    ОтветитьУдалить
    Ответы
    1. Нет, скетчи туда лить нельзя. Если хотите использовать "язык ардуино" (кстати, он называется Wiring), берите Arduino-совместимую плату. Если задача состоит в эмуляции клавиатуры по USB - советую присмотреться к платам на ATmega32u4.

      Удалить
  6. В случае с ATmega32u4 все равно не получится заливать скетчи прямо в нее используя Wiring, правильно? В общем-то не сильно обломаюсь вытравить плату с кнопками и двумя чипами на борту atmega8u2 и atmega328-au все равно немного места займет. Не понял один момент: на схеме d- d+ варисторы, а на плате esd диоды. Взаимозаменяемые компоненты?

    ОтветитьУдалить
    Ответы
    1. ATmega32u4 поддерживается ArduinoIDE, так что заливать в нее скетчи еще как получится. Даже в этом блоге про это уже писалось неоднократно.

      Удалить
  7. Вот спасибо за идею с atmega32u4. Но все же разобраться с Вашей платой тоже интересно. Если это не военная тайна, то повторю вопрос: на схеме d- d+ варисторы, а на плате esd диоды. Взаимозаменяемые компоненты? Так же не подписан номинал L1

    ОтветитьУдалить
    Ответы
    1. Нет никакой военной тайны. Варисторы пришли из оригинальной схемы, на самом деле везде стоят диоды, согласно даташиту на ATmega (если собрались делать плату самостоятельно, советую его пролистать). L1 - это обычный фербид BLM21, который гасит помехи. Всю информацию я стараюсь складывать в вики, но пробелы, конечно, всегда найдутся ;)

      Удалить
  8. Спасибо огромное за Ваш труд. Давайте в качестве благодарности оплачу одну платку. Хотя уже и так понял как собрать ее самостоятельно, но все же надеюсь дополнительная продажа будет для Вас хоть небольшим, но стимулом продолжать работать.

    ОтветитьУдалить
    Ответы
    1. Возник вопрос по поводу фамилии получателя... Вы ее при оформлении адреса доставки с отчеством случайно не перепутали? В любом случае, спасибо за заказ ;)

      Удалить
    2. Предлагаю не засорять комментарии и перейти в почту: arduino@idanilov.ru. Туда напишите и полный адрес доставки с ФИО, и все вопросы по плате.

      Удалить