Как стать автором
Обновить

Комментарии 63

Спасибо за ссылку, интересная статья!
Подойдет SWD программатор-отладчик в составе любой из discovery плат от stm32. Единственный недостаток: дип-корпусов нет.
Во первых это не такой уж недостаток, во вторых, в DIP есть LPC1114 (шаг выводов у него привычный — 2.54мм)
Программатор там делается из любого устройства на чипе FT2232 (и аналоге), которые стоят дешево, а сделать из них можно просто прорву всего.
В том числе и программатор\отладчик по JTAG.
Надо будет статью написать про этот чип, наверное.
И этого не надо. Надо купить переходник USB<->UART и не мучаться. У подавляющего большинства ARM'ов есть возможность прошивки (или хотя бы BOOT) через UART.
Прошивка — это не главное. Отладка намного важнее, да и boundary scan тоже весьма полезная вещь, если пользоваться уметь.
Вот не соглашусь. Чтобы «попробовать микроконтроллеры», отладка совсем даже не нужна. Она (возможно) нужна для работы, но для ознакомления с предметной областью нужен минимум инструментов и — это самое главное — мозг. При обучении очень важно, чтобы программа заработала сначала на эмуляторе, который встроен в ваш мозг, а уж потом — на реальном железе. А у большинства начинающих (по моей статистике) получается наоборот: сначала они при помощи отладчика методом тыка находят работающий вариант (часто даже не открывая datasheet и progmanual), а уж потом — если есть желание, время или упёртость — пытаются понять почему это работает. Должно быть как раз наоборот.

Все написаное есть ИМХО, выстраданное на некотором опыте обучения людей embedded разработке и на собственном опыте. Сам я не пользуюсь отладчиком даже в рабочих проектах, хотя не считаю это обязательным. Просто у меня почему-то всего два состояния: либо я пользуюсь отладчиком и выключаю эмулятор в моей голове, либо не пользуюсь отладчиком. У других получается сопрягать и я им завидую :)
При работе с множеством разных (а часто очень-очень разных) МК одновременно выстроить в голове толковый эмулятор каждого у меня не получается, и без отладки в том случае было бы очень грустно. И уже было, когда мне попался доселе неизвестный Infineon XE167FM на ранее незнакомой архитектуре C166, а отладчика к нему не было. Зато был мануал на 2000 страниц и делайн до послезавтра.
Можно отлаживать и в уме, и это хорошее упражнение для начинающих при обучении работе с определенным МК с заранее известными ограничениями, багами и хитростями. Но если у тебя большой проект, сложный сам по себе, плюс на эту сложность накладываются определенные особенности МК (описанные либо на 1255 странице мануала, либо на 25 странице Errata sheet, который как раз обновили позавчера), то лучше, на мой взгляд, использовать все возможности по снижению нагрузки на мозг.
Без отладки, мне кажется, микроконтролеры можно попробовать, пару раз наткнуться на неожиданное для новичка поведение, сказать про себя «пошла она к черту, эта магия-шмагия», и больше к ним не возвращаться.
Я всё-таки говорил про обучение, а не про работу. Про работу я специально уточнил: отладчик может понадобиться; по крайней мере в некоторых ситуациях.
Насчёт «пару раз наткнуться на неожиданное для новичка поведение» у меня другое мнение: для новичка много что будет неожиданным и это ещё не повод заниматься практикой без теории.
Эхх, а я в своё время программатор сам собирал, через LPT порт. Все теперь стало так просто, что даже подумываю откопать из шкафов паяльник.
а я в армии свой первый LPT программатор спаял



А есть какие то набора для новичков? Программатор + плата для прототипирования + один(несколько) контроллеров + индикаторы/датчики
> Но тогда достать программатор по месту жительства оказалось проблематично, а о покупке через Интернет и речи не было.
Но а как же «5 проводков»?
… или даже программатор Громова.
А вот здесь человека, начинающего работать с контроллерами, не остановило отсутствие программатора и документации.
Перепрошив это устройство можно сделать игру — рендомные числа по нажатию кнопки выводятся на индикатор. Выигрывает тот, у кого число больше. Можно решать споры или определять очередность подхода к снаряду во время застолья, можно мини-турниры устраивать.
Что меня удивило на схеме: всё подключено напрямую, никаких резисторов, конденсаторов и т.д. Это ок?
обычно нет, но у современных МК не так просто выжечь ноги и они максимум 20мА отдают. Плюс там не постоянно сегменты светятся, а только часть периода. Так что жить будет.
Написал бы кто-нибудь эдакий гайдик по подключению всяких компонентов в цифровых схемах: джентльменский набор, исключающий перегрев, перегрузку и т.д.
Отличная идея, сам бы с удовольствием почитал
Навскидку:
Конденсаторы по питанию — электролиты(+ иногда керамика)
Резисторы на светодиоды + тонкости типа «не ставить один резистор на два светодиода если они будут гореть одновременно»
Использование транзисторов, когда нужно управлять чем-то, чей ток превышает максимальный ток пина МК (добавить про ULN2003)
Осторожное использование регулятора 3.3 вольта на Arduino/Raspberry Pi/и так далее (макс. ток)
Защита от перенапряжения на 5 вольт
Конденсаторы на землю с каждой ноги резонатора (не знаю, правда, зачем)
Подтяжка резисторами линий данных к плюсу или минусу (также кнопок, светодиодов и прочего) и неиспользуемых контактов у микросхем
Защита от дребезга контактов
Объяснение про ёмкость проводов
Защита микросхем и прочего от статики
Фильтры напряжения
Длина проводов, по которым передаются данные, правильное экранирование
Диоды на выходе источников питания для защиты
Правильное заземление приборов
Советы для траблшутинга (даже и особенно те, что сам заучил из-за горького опыта)
Советы по пайке чего-нибудь в ограниченных условиях, вещи, необходимые для пайки, поскольку значительно её облегчают
Уход за паяльником
Использование различных клеёв — Момент/горячий/эпоксидный — в своих поделках
Правильная разводка высокочастотных компонентов

Тут многие детали, конечно, опциональны, но всё же… Часть из этого хотел бы узнать сам, ну и объяснения некоторых явлений =) Реально, статья была бы отличной, только у самого не хватит ни знаний теоретических, ни опыта — напишу, а мне в комментариях вышлют кучу поправок и посоветуют не лезть, не зная =( Много кому бы вправила мозги. Я джва года жду такую статью, короче.
Можно не сразу всё написать. Сначала база: как подключить правильно микроконтроллер к источнику (батарейка это или USB или что другое), заземление, подтягивающие резисторы, конденсаторы по питанию, что ставить между портами I/O контроллера и нагрузкой (диодами, дисплеями и т.д.). Всё остальное потом.
Бро! Так иди к DIHALT'у на сайт, там в принципе есть всё, о чём ты спросил, только может быть не в такой последовательности. Вот к примеру по обвесу контроллера — как раз и объясняется зачем кондёры ставить между vcc и землёй, зачем резистор, зачем катушка. Плюс такие тонкости относительно того же АЦП(точнее косяки на уровне чипа) на так всеми любимой атмега8 — там питание АЦП и VCC связаны внутри чипа, поэтому при использование кристалла для аналоговых замеров лучше брать другую модель. В общем и целом — там есть очень много информации, за что DI отдельное спасибо!
Вот та самая статья:
easyelectronics.ru/podklyuchenie-mikrokontrollera-likbez.html
и их там есть ещё!
Может даже тебе оттуда инфу взять, переработать и выложить статью здесь в соавторстве — я не думаю что DI будет против.
Конденсаторы на землю с каждой ноги резонатора — эти конденсаторы являются частью генератора и частью колебательной системы представленной резонатором, от подбора этих емкостей зависит устойчивость генератора и добротность резонатора — а значит и точность генерируемой частоты.
Обеими руками поддержу.
Эти «гайды» написаны и переписаны уже десяток раз… загляните на сайт РадиоКот например.
Это Proteus, там это не важно. Я имею в виду, что для быстрого прототипирования можно подключать диоды как есть. Точно так же, как и кварцевый резонатор можно не вешать — он все равно не симулируется. Вообще про баги/особеннопсти Proteus можно целую статью сдулать… и не одну
Особенно про симуляцию MAC-уровня с выводом на реальный tap-адаптер…
Не постесняюсь на себя сослаться — может что интересное для себя вновь прибывшие найдут
habrahabr.ru/post/128904/
Зачем запитывать пятивольтовый контролер от кроны, рассеивая в тепло лишние 4 вольта? Хватило бы трёх-четырёх батареек AA.
В такок корпус можно было бы запихнуть адаптер для зарядки телефонов.
Я рассуждал так: при рабочем напряжении 4.5-5.5 В 3 батарейки вроде как маловато (быстро просядут), а 4 уже много и, скорее всего, надо стабилизировать. А у стабилизатора 7805 рабочее напряжение вроде как от 7 до 20 В. В общем, если эти рассуждения неверны, прошу сильно не пинать и поправить, это не совсем мой профиль.
Контроллер контроллеру рознь, конечно. Я запитывал Arduino шестью вольтами (четыре банки по 1,5В) — работал и не дымился. Вот от трёх не пробовал, поэтому не знаю, на каком напряжении вырубится.

Банки можно взять маленькие: половинка ААА или таблетка.
Мега 8 может и от 2.7В работать. Вообще минимальное напряжение зависит от рабочей тактовой частоты(см. график зависимости в даташите). В основном напряжение питания определяется минимальным при котором можно засветить светодиоды… красные, обычные — от 1.7В начинают светить, так что без проблем…
Пауза должна ставиться одновременным нажатием на кнопки игроков.
Спасибо, замечание принято. Я слишком поздно об этом вспомнил.
А я бы опрос кнопок повесил на внешнее прерывание, чтобы основной цикл не забивать.
Будет достаточно одного внешнего прерывания, к которому через диоды подключены все кнопки. В момент срабатывания прерывания проводить опрос, какие именно кнопки нажаты.
Я думал о внешнем прерывании, но после того, как индикация была вынесена из основного цикла в прерывание и ей нажатие кнопок больше не мешало, решил оставить так.
Кнопки лучше опрашивать вместе с выводом на индикатор — автоматически решается проблема с дребезгом. Когда кнопки фиксируются 100 раз в секунду то дребезг может лишь отложить момент нажатия на 1/100 секунды не более. При условии что процесс дребезга длится менее 10мс — это должны быть очень разбитые и неконтачащие кнопки. Причем, в прерывании вывода на индикатор просто считываем состояние кнопок и запоминаем в переменной. А основной цикл уже пусть разбирается с этой переменной — вполне безопасно.
Если в основном цикле сравнивать нынешнее состояние кнопок с предыдущим то можно легко засечь моменты нажатия и отпускания не реагируя на длительно нажатые кнопки — это может быть важно в алгоритмах с запоминанием состояния вроде триггеров, счетчиков…
НЛО прилетело и опубликовало эту надпись здесь
Спасибо, КО!
В будущем, буду писать так:
«ОК, КО, ОК!»
Чёрт, опоздал :(
Ну как же Вы так? Ни транзисторов на выходе пинов МК, управляющих светодиодами, ни резисторов перед светодиодами, кнопки не подтянуты к какому-либо логическому уровню… Советую поизучать базовые советы, иначе будут непонятные глюки и отказы — а это довольно неприятно =(
Но в целом работа хорошая! Пару допилов — и будет стабильное устройство, которое проработает долго =) Удачи Вам в радиоэлектронике!
Спасибо за совет. На самом деле кнопки подтянуты внутренними резисторами, это указано в тексте.
Ой, простите, не заметил, видимо =) Правда, иногда их может и не хватить, как было указано в некоторых прочитанных мной книгах, там рекомендовали для надёжности поставить ещё и внешние. Ну да ладно, думаю, не Ваш случай.
Внешние обычно ставят не для надежности, а при наличии общей шины и использования выходов в режиме ОК (открытый коллектор). Делается это для того, чтобы не увеличивать токи через выходные транзисторы микросхем.
В этом случае не обязательно использовать динамическую индикацию — посмотрите в сторону дешифраторов, стоят пару рублей, а головной боли меньше будет.
А из чего и как вы сделали корпус?
Electronics Project Box — их полно на любой вкус и цвет
Использовав сдвиговые регистры, можно было сэкономить ножки.
Их тут и так хватает, зачем?
На разных user-friendly дистрах вноде убунты обычно не нужно возиться с udev. Чаще достаточно добавиться в нужную группу (обычно — dialout).
Обычно так — подключаешь девайс, запускаешь dmesg и смотришь в хвосте лога, что за имя присвоено устройству (например — ttyACM2). Потом делаешь ls -la /dev/ttyACM2 и сразу видишь, у какого пользователя/группы есть права на общение с устройством. Ну и финальные adduser себя в найденную группу с последующим перезапуском сессии окончательно ликвидирует необходимость прописывать правила udev.
Спасибо, надо будет попробовать
Подскажите пожалуйста, питание целевой платы при прошивке от программатора осуществляется? На фото не видно, откуда вы питание подвели.
И где взять такой удобный разъём ISP на плату?
Подскажите пожалуйста, питание целевой платы при прошивке от программатора осуществляется?

Да
И где взять такой удобный разъём ISP на плату?

Это обычный ISP разъем, припаянный к куску перфорированной платы с выводами на монтажную плату через однорядный коннектор типа такого
Спасибо! Пойду в чип&дип =)
Удачи!
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории