Сегодня в очередной раз побояню. Не из природной вредности, а скорее наоборот: с целью собрать в кучу некоторое количество освоенной полезной инфы, специфических траблов и путей их решения. Чтобы осталось что-то вроде памятки, к которой можно вернуться через пару лет и рефрешнуть кеш ОЗУ в натруженном мозге, и не бегать по тем же самым граблям, сетуя на прогрессирующий старческий склероз.
Тем более, что в свете событий последних лет и взлетевших цен на платы Ардуино, актуальность сей инфы (прошивка голых бюджетный камней) не только не угасает, а скорее даже наоборот.
Началось все с того, что пару лет назад приобрел на пробу горсть мелкосхем серии ATtiny 2313. Во-первых, было интересно с ними поиграться, а во-вторых, на некоторые проекты ставить полноценную Ардуинку было слишком жирно. Да и места внутри поделки не всегда есть под ту же Нано. А тут за 3 копейки доступно 20 ног и 2Кб памяти. Можно резвиться вволю.
Но по законам диалектики, ясен пень, есть и недостаток: в USB порт микросхема никаким боком не влезает, проверено. То есть, чтобы залить туда свой супер-мега-скетч с мигающим светодиодом, нужен программатор.
Покупать его отдельно было лениво, поэтому, разумеется, я пошел давно протоптанным путем: в качестве прошивальщика заюзал обычную плату Arduino Nano. Добавить шесть токопроводящих ниток, макетку, светодиод с резюком (необязательно) и все готово, можно шить!
Скетч, поясняющий плате Ардуино, что она теперь программатор встроен прямо в ArduinoIDE и лежит в примерах (называется ArduinoISP). Схемы подключения тоже лежат на каждом углу.
Собственно, ровно тем же макаром прошиваются не только вышеупомянутые тиньки, а вообще любые другие AVR камни в DIP корпусе.
А если обзавестись спец-прищепками, то и для SOIC, SOP и др. типа исполнения тоже.
Из программных нюансов отмечу, что для большей части Аттинек и Атмег требуется скачать и доустановить свое отдельное «ядро». Интегрированное для Atmega328P не подойдет. Взять их можно на GitHub.
Теперь о печальном:
- Свободная Ардуинка есть не всегда.
- Постоянно собирая/разбирая временную схему для прошивания, возрастает вероятность накосячить с подключением и сжечь что-нибудь нафиг.
- Перемычки не всегда обеспечивают нормальный контакт. У меня, например, те же Тиньки на макетке шились только со второй попытки. Говорят, что лечится конденсатором, но это опять же лишние сопли при таком варианте подключения. А ATMega 8L у меня вообще прошить не получалось. Все время вылетали ошибки. Я поначалу даже думал, что подсунули дохлые.
- Категорически неудобно, когда заливаемый скетч еще не готов на 100% и требуются регулярные перепрошивки после исправлений или подбора параметров. А еще в этом случае приходится или собирать схему вокруг «программаторного» обвеса или постоянно шморгать микросхему из одной макетки в другую. Некузяво.
Поэтому, в связи с перечисленным выше, вытекает нижеследующее решение: спаять «стационарную» плату для программирования микросхем и в последствии заюзать готовый программатор, благо в Китае их как гуталина.
В инете я уже видел несколько вариантов исполнения задуманного. (Не один такой я умный).
Больше всего мне понравился шилд для UNO с панельками для разных корпусов, индикацией диодами прочим. Одно НО: лишней уны у меня нету, а стоит она раза в два дороже готового программатора.
Поэтому, я решил сварганить свою собственную плату для вышивания, с «блек Джеком» и прочим этим всем. В качестве основы, взял макетку под пайку формата 40х60мм. Прикинул расположение панелек для самых ходовых микросхем с 28, 20 и 8 пинами. Так же, добавил туда ISP разъем и светодиод с резюком, чтобы сразу можно было проверить работоспособность микрухи залив в нее Blink. Диод я повесил на 8-ой пин (PB0 и PD6 для Атмег 8/168/328 и Аттини 2313/4313 соответственно), просто потому, что они были ближе и удобнее всего для пайки. Но в последствии, выяснилось, что в том же Optiboot прописан пин PB5 для базовых атмег, и используется для индикации ресета. Но перепаивать мне уже было влом.
Некоторые могут спросить: а где в твоей схеме кварц? На что я ловко отмажусь наличием природной лени и тягой к минимализму. Кварц, как известно, есть и внутри. А от того факта, что камни не смогут с ним работать на максимальной частоте, у меня терморегуляция не нарушится. Майнить на них я не планирую.
Могут быть, конечно потенциальные проблемы с некоторыми библиотеками и так же будет хромать точность аналогового тракта, но данные проблемы будут решаться по мере их поступления.
Панельки я спецом расположил поперек платы и параллельно друг другу, чтобы можно было легко поддевать микросхему при извлечении с любой стороны.
От панельки для Аттини 13 и прочих мелких восьминогов я место на плате зарезервировал, но решил от распайки пока отказаться. С ними не все так просто и однозначно.
Кстати, панельки на 28 дырок у меня под рукой не оказалось, поэтому пришлось спаять последовательно две: на 20 и на 8.
Пины питания на ISP гребенке пометил цветными маркерами, дабы не перепутать при втыкании разъема. Шнурки, идущие от Ардуино, смотал изолентой вместе в как бы единый цельный разъем. Цвета проводов в нем подобрал так, чтобы 5В и земля оказались красным и почти черным (логично!) и было понятно из далека, какой стороной его совать и не корячится каждый раз перепроверяя коммутацию по схеме.
Эстетика, разумеется, требовала переткнуть шнурки в нормальный двухрядный 6-ти пиновый штеккер, и чтобы в идеале, с ключом. Но на «складе» подобного не оказалось. А с учетом того, что вот-вот должен был материализоваться на почте ISP программатор, решено было ограничиться менее перфекционистким вариантом.
Далее, после первых прошивок пришла гениальная и не менее своевременная мысль: надо было параллельно панелькам распаять и гребенки, чтобы иметь возможность сразу навесить обвязку на пины. Тем более, что и места на макетке осталось валом.
А еще неплохо бы вкорячить туда за одно и разъем под UART, дабы иметь возможность дебажить не отходя от кассы. Но, во-первых, перепаивать все дитоли, чтобы расчистить место, мне уже было сильно лень, а во вторых, покумеков, я решил, что котлеты отдельно, мухи отдельно. Для дебага и прототипирования лучше будет сделать отдельную платку, пока ограничившись обычными контактными макетками. А для прошивки использовать ту, что получилось.
Чтобы обезопасить припаянную моими очумевшими ручками трахомудию проводов от нехороших последствий возможного отпадания и замыкания, распечатал аккуратный маленький корпус. А это сразу +50 к красоте и +5 к устойчивости конструкции.
Первые пробы показали, что шьется все теперь отлично, без сбоев и с первого раза. Юзабельность системы тоже на уровне.
Осталось описать возникшие приколы по заливке скетчей через Serial, но поскольку текста получилось и так многовато, оставлю этот «сериал» на вторую серию.
З.Ы. а подписываться Пушкин будет?