13.11.2009

Вариант USBasp

Вдохновленный освоением ЛУТ ;) я решил потренироваться и развести печатную плату для своего любимого программатора USBasp. Кроме тренировки, я преследовал две цели:

  1. Разместить в программатор в корпусе Ganita, дабы не сверлить боковухи под разъемы;
  2. Сделать легкие модификации в схеме.
Вот оригинал:



Из него я решил исключить R7 и посадить выводы 6 и 7 разъема X2 на землю. Автор собирался сделать поддержку отладки, но за несколько лет как руки у него до этого не дошли. Разводить плату без них проще, тем более, что для Arduino гораздо удобнее иметь 6-ти контактный разъем ICSP в дополнение к 10-контактному. Ну и давно хотел добавить во все решения на USB самовосстанавливающийся предохранитель. Стандартный плавкий 5x20 и места больше занимает, и замены требует при перегорании. Финальная схема:



На гетинаксе это выглядит так:



Предохранитель попался фирмы Bourns, на 300 мА. Специально посмотрел, как это работает - при коротком замыкании за 1-2 секунды ток в цепи питания падает практически до единиц мА, сам элемент ощутимо нагревается. Правда, на выбранном для бесчеловечных экспериментов лаптопе тоже самое происходило и без предохранителя, что указывает на то, что он уже и так установлен и в цепи питания USB-хоста. Тем не менее, пусть будет - так спокойнее:



Внутри добавилась вилка ICSP:



А вот десятиконтактную вилку программирования пришлось взять угловую (BH10R), как и джамперы - чтобы они были доступны с торцов. Вид в корпусе:



Виды с торцов:





Итак, джамперов там три, напоминаю, что:

  • JP1 подает питание в разъем программирования (программируемая схема питается от программатора);
  • JP2 устанавливается для режима программирования самого программатора при первой прошивке или последующих ее обновлениях;
  • JP3 устанавливается для МК, у которых низкая (менее 1,5 МГц) частота тактирования. Например, таковыми являются все чистые МК Arduino - фьюз-биты в них установлены по умолчанию на внутреннюю калиброванную RC-цепочку. Я в этом случае обычно программирую в два приема - сначала с этим джампером ставлю фьюзы для "быстрого" внешнего кварца, затем снимаю джампер и заливаю микропрограмму. Даже ATmega8 шить на пониженной скорости очень тоскливо, а для ATmega328 вообще можно уходить пить чай.

Кстати, одна очевидная деталь, которая обычно ускользает от внимания: чтобы запрограммировать МК этого программатора, надо не только установить JP2, но и позаботиться о питании - например, получить его с разъема программирования, замкнув JP1.

Вот одним таким программатором я прошиваю другой:



В остальном - никаких хитростей, программатор поддерживается avrdude и работает как часы, совместим с Windows и Linux.

Ссылки на Молоток.ру для желающих обзавестись готовым программатором или набором деталей. В отдельной статье я подробно расписал для новичков нюансы работы на этом ресурсе.

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

  1. Очень хорошая статья. Особенно в силу поддержки ОС Linux. Ксожалению не часто встречаются устройства для любителей с поддержкой чего-то кроме Windows.
    Спасибо.

    ОтветитьУдалить
  2. Недавно я целиком перелез с Windows Vista на Ubuntu Linux. ArduinoIDE работает без проблем в силу своей java-природы, вместо WinAVR (в составе которого идет avrdude) "родной" avr-gcc.

    ОтветитьУдалить
  3. Вопрос может показаться дурацким, но в чём смысл использовать два резистора одного номинала R4 и R5, если они оба идут на +5V? Исключить один и чуть схемку изменить, это будет эквивалентно?

    ОтветитьУдалить
  4. Максим, это токоограничительные резисторы для светодиодов. Не думаю, что будет правильным делать так, как Вы предлагаете ;)

    ОтветитьУдалить
  5. Точнее - так: у светодиодов будет разная светимость, вместе они будут гореть ярче, чем по-отдельности. Если это нормально - то да, можно заменить R4 и R5 на один, например 1К. По мощности и току - впишемся ;)

    ОтветитьУдалить
  6. В таком случае мне лишний резистор не жалко, оставил как есть:) Уже собрал программатор, работает вроде неплохо, но в 5-ти случаях из 10-ти не прошивает, avrdude пишет что не может опознать МК(Expected signature). Такой довольно большой процент ошибок он только у меня так, или это нормально? Может я где накосячил... плохо пропаял...

    ОтветитьУдалить
  7. У меня тоже такое случается, но, приблизительно, в одном случае из 10. Некоторые экземпляры вообще работают как часы, без сбоев. Полагаю, дело в резисторах - надо ставить 1%-ые в схеме развязки с USB.

    ОтветитьУдалить
  8. И ещё вот что интересно, протестировал процесс прошивки на своём нетбуке, так там вообще все 10/10 успешных попыток, снова попробовал на стационарном - 6/10 успешных. Во дела подумал я, значит успех/не успех ещё и от компьютера зависит:)

    ОтветитьУдалить
  9. А вот 10/10 неудач - это уже странно.

    Был у меня один USB-хаб... Я его в итоге прекратил использовать, когда посмотрел на то, что у него на выходе на шине USB (полное безобразие)... А до этого тоже на схему грешил, что неправильно собрал и все такое.

    ОтветитьУдалить