Решил вспомнить детство, а именно увлечение электроникой. С тех пор много что изменилось, но транзисторы КТ315 всё так же продаются на радиорынке =)
Выбор пал в этот раз на программируемые контроллеры (в некотором роде очень мелкие компы со встроенной флэш-памятью). И вот для их прошивки с компа нужен был специальный девайс - программатор. Вот, собственно, он:
Оригинальная схема usb asp взята
отсюда, а технология изготовления и полезные советы -
здесь.
Выглядит щастье с разных ракурсов где-то так:
Открыв коробочку, можно увидеть плату:
Верхняя крышка, вид изнутри:
сразу видно, что, в отличие от электроники как таковой, касаемо механики руки изготовителя в детстве прикрутили болтами М12 к сами знаете чему, а затем для надежности прихватили сваркой. Пойти штоле в ПТУ для повышения квалификации ...
А теперь по порядку.
Ещё до этого я собрал простейший
программатор Громова, работающий от COM-порта. Однако, он отличается гордым нравом и работает у меня почему-то только с ATMega8, и упорно игнорирует ATTiny2313, ATMega8535 и ATMega32. А также на стабильность работы влияет напряжение в сети, погода за окном, положение планет солнечной системы и черт его знает ещё какие факторы, т.к. прошить контроллер удается раза с 10-20го. Вскоре меня этот секс с ком-портом изрядно надоел, и я решился собрать чота немного посерьезнее с точки зрения стабильности.
Почитав статью DiHalt-a, а затем полистав референсные платы на сайте первоисточника, обнаружил, что предложенные варианты разводки платы (layout) являются или слишком большими по размерам, или содержат совсем мелкие smd компоненты, или сделаны не под те usb разъемы, что у меня есть, или и то, и другое, и трерье одновременно. А ещё мне не нравятся платы с перемычками. Т.е. умом я понимаю, что это иногда производственная необходимость, но "не феншуйно".
В итоге сажусь делать свой лейаут. Бодро часа за 3 удается таки сделать разводку без перемычек. Распечатал, и на всякий случай решил повтыкать в бумажку детали, чтобы проверить размер. Эт я хорошо придумал, т.к. кварц оказался вдвое уже, чем на плате, керамические конденсаторы вдвое шире, а usb разъем должен был возвышаться на двух трупах раздавленных им резисторов. Потыкался было подвигать разъем по плате - не тут-то было, некуда было переставить дорожки из-за нехватки места.
Скрепя сердце, отправил этот дизайн в /dev/null, и нача делать новый с чистого листа. На этот раз "чукча умный", поэтому все-таки замерил линейкой размеры коробки и больших разъемов. Потратив ещё пару часов, получил удовлетворительную разводку, проверил её по схеме (зачеркивая на схеме проверенные дорожки, пока вся схема не окажется зачеркнутой, как и дорожки), и, наконец, вытравил по ней плату.
Осмотр показал, что все дорожки получились нормально, без обрывов и замыканий. Кстати, для того, чтобы дорожки можно было пускать между пятачками выводов микросхемы, пришлось ужать ширину дорожек до 0.5мм, а даметр площадок до 1.4мм с дыркой 0.72мм. В результате чего некоторые площадки после неровного сверления (ручный дрелью кривыми руками *мвахаха*) стали похожи на полумесяц. Но ничо, в итоге всё припаялось и держалось нормально. Дырки, кстати, почти все были 0.7мм, кроме как под PLS штыри (на джамперы) и 10-пиновый IDC разъем - там нужно было 0.8.
После запайки компонентов начался сеанс магии программирования через COM-программатор. Не хватало свечек, пентаграммы, крови невинных девственниц, иначе, вероятно, дела пошли бы быстрее. С попытки номер N удалось таки залить прошивку и выставить fuse bits на работу тактового генератора от внешнего кварца.
Затаив дыхание, подключаю девайс к usb - и, о чудо, оно определяется и даже подхватывает драйвера! Я уж было подумал, что всё, вот она, победа. Но не тут-то было. Я забыл упомянуть, что в дополнение к, собственно, программатору я спаял платку с разводкой на панельки для втыкания тех контроллеров, что у меня есть (присоединять каждый раз к микрухе 6 проводков для программирования явно западло). Платка тоже вышла ничо так, хотя и с перемычками, и ещё я очень "удачно" влепил светодиод, в очередной раз поленившись озаботиться измерением размеров разъемов. В итоге вытаскивать самую мелкую 20-ногую микруху получается только боком, из-за чего она рискует потерять несколько ножек по правому борту после нескольких таких манипуляций.
Так вот, вставляю я, значит, ATMega8 в гнездо. Запускаю avrdude на прошивку. И... авотх#й! Пишет, что контроллер не отвечает (при этом зеленый светодиод честно мигает, что мол попытка обращения таки была, и прошивка самого программатора работает). Перетыкал все типы контроллеров, что у меня были - no way. Начал играться с настройками avrdude - baud rate менять, какие-то там задержки, всё без толку. Собирался было перепрошивать программатор на всякий случай на другую микруху. Но сначала решил немного подумать мозгом. Что было бы самым простым и логичным объяснением ? Правильно, кривая разводка. Проверил дважды - нет, все по даташиту. Светодиод на платке горит - значит не мог воткнуть шлейф переходника не той стороной. Что же ещё ? О... шлейф... А ну-ка я его тестером... Попался! Самый цинизм ситуации состоял в том, что из 10 проводников контакт был только в 3х, из них были именно те три (сдвоенный Gnd и Vcc), которые питали светодиод! Отрезал кусок шлейфа, переобжал в тисках, проверил тестером. Round 2. Fight!
Вернул на место 8ю мегу, и давай запускать. А результат все тот же - "no response from device". Да твою ж мать. Ладно, попробуем другую жертву... Достал контроллер из слота - а он теплый. Нехороший признак. Может, я его статикой убил и теперь он греется из-за пробоя ? Ладно, у меня ещё несколько есть... Попробую 8535. Вставляю, приложил палец - чувствую нагревается, причем быстро и сильно. Выключил, вытащил, думаю. Так, что же в этот раз ? Наверное ж что-то коротнуло. Пересмотрел под лупой плату программатора - все чисто, и ничего не греется. Хм.. А, у меня ж ещё плата с панельками, иди сюда... Так и есть, в одном месте чуть заметная спайка (как раз где дорожка впритык к пятачку подходит), паяльником припой убрал, скальпелем очистил ещё на всякий, воткнул несчастую 8ю мегу обратно. Round 3. Fight!
Включил, запустил avrdude, и, О Да! Yes! Заработало! Вставил прошитый контроллер в макетку, включил - работает, циферки по LED индикатору бегают! Теперь осталось проверить другие типы контроллеров (20- и 40-ногие). Вставляю сначала ATTiny2313. И, конечно же, болт. Второй экзмепляр микрухи - то же самое. Потом 8535 - тот же результат. Решаю, что это карма. И будут до конца жизни у меня только ATMega8 прошиваться. Уже почти смирился с этим, и решил проверить что другие ATMega8 тоже прошьются. Втыкаю новенькую - и опять облом! Ещё одна - туда же. Первая - опять нормально прошилась. Мистика!
Опять заставил себя подумать мозгом. Что же такого есть в первой, чего нет в других двух ?... - Она была успешно прошита до этого с помошью com-программатора. Окей, буду проверять версию. С бубном программирую через com-порт новую микруху - поддалась раза со 2го. Значит, сама она рабочая. Вставляю в usb asp - облом. Да What-the-fuck ?! Ещё раз втыкаю #1 - опять работает! Пока думал, что же дальше делать, ноут начал периодически булькать, что у него то отключаются, то подключаются usb devices. Посмотрел - да, это программатор. WTF ? Включил-выключил - перестал заводиться вообще. Опять репу чешу - да что ж на несчастье. Беру плату в руки - а под ней, оказывается, притаился любопытный скальпель. Когда он туда успел залезть - неясно. Но он в итоге иногда коротил дорожки. Мораль - инструмент должен быть или в руках, или на своем месте. Мораль#2 - плату снизу лучше чем-то прикрывать, пока нет корпуса, а то коротнуть может даже металлическая пыль, откушенные выводы, капельки припоя и т.д. Примотал изолентой картонки к платам.
Просто от нефиг делать решил поиграться джамперами на плате (в частности, "slow"), и попробовал ATMega8 #2, чисто по инерции - и оно внезапно заработало. И тут меня осенило. Когда я готовил контроллер для макетки, я ему поднимал частоту с дефолтного 1 до 8 мегагерц, оттого и тот единственный экземпляр смог заработать с программатором на высокой скорости. И что бы я делал без #1... Затем проверяю 2313 - прошилась, 8535 - одна нет (та, которая нагрелась), другая новая - да. Оно полностью заработало, ура! А для 8535 нарисовал новую наклеечку в кассетнице:
Она погибла за правое дело *минута молчания*
А далее предстояло выпиливание дырок в корпусе и плате. Для начала я как следует промахнулся с высверливанием дырок под крепеж платы - на фотках хорошо видно. Причем замеры и разметка не помогли - кривые руки сделали свое дело, и сверло уводило в сторону где-то на полсантиметра. Да, знаю, надо было сверлить маленькое направляющее отверстие, но влом же. Зато быстро и сердито. И затем чаc "работы над ошибками". Пришлось даже высверлить кусок дорожки, благо там поблизости как раз я угробил патроном дрели конденсатор, и его пришлось заменить. А длинная конденсаторья ножка аккурат заменила исчезнувшую дорожку.
В процессе оказалось, что USB разъем не помещается в коробку. Действительно, зачем было замерять высоту разъема до выбора коробки... Ладно, придется что-то придумывать. Т.к. курочить разъем небезопасно, то пришлось вырезать кусок коробки. Лобзиком и криво, естественно, чтобы не отходить от общего стиля изделия. Остались дырки под светодиоды... Как их разметить хз, линейкой неточно будет - не подберешься, "на глаз" - можно и 5 дырок сделать и не попасть. И тут пришла в голову гениальная идея - намочить верхушки светодиодов и приложить к коробке - на месте контакта остались капелки - там и сверлить. Сказано - сделано. Даже более-менее ровно получилось. Ну и напоследок дилемма - 2 крепежныхз винта или 4 ? Посмотрел я на плату, жалко её стало, и решил только 2, т.к. и так пришлось дырки растачивать. В итоге коробка на стыке получилась косая, ну да ничего.
Зато работает!
А вот так выглядит альтеративный рабочий стол:
Там ещё ноут справа за кадром остался, и горка тяжелых инструментов, типа ножниц по металлу, лобзиков, надфилей, отверток. Просто положил 2 листа фанеры 90х60 см, зато никаких теперь волнений по поводу лакового покрытия стола - можно класть все прямо на фанеру, там же гладить плату утюгом и т.д. Ляпота!