
Вы наверное думаете, что программисты микроконтроллеров на работе занимаются исключительно только программированием? Позвольте рассказать вам про буквально один случайный день из жизни программиста МК.
Программирование МК нужно сейчас в основном в автомобилестроении. А все автомобильные агрегаты обмениваются данными по шине CAN. Вот и получается, что надо каждый раз на каждого новом микроконтроллере первым делом запускать CAN трансивер.
Вот я получил плату, портировал драйвер и решил проверить заработал ли код настройки CAN драйвера. Я соединил один CAN0 и CAN1. Стал посылать пакеты и пакеты не принимаются.
И тут я задумался. Происходит одно из двух: либо передатчик не посылает либо приёмник не принимает. Классическая дилемма. Разруливается при помощи независимого достоверно работающего CAN-устройства. Обычно это переходники с USB на CAN.
Много лет назад я купил себе один китайский переходник USB-CAN . Чувствовал, что пригодится. Вот и настал этот день. Принес я его, значит, на работу. Стал искать драйвера и с удивлением для себя обнаружил, что компания Google забанила диск компании компании производителя переходника . И теперь не скачать драйвера и софт для USB-CAN переходника . Я написал письмо в тех поддержку в КНР. Тишина... Это препона #1. Я еще тщетно полтора часа искал драйвер USB-CAN на сторонних сайтах, но их больше нигде нет. Очевидно, что нужен какой-то альтернативный переходник с USB на CAN.
Я обратился к своему босу и сказал, что для работы, как ни крути, нужен какой-нибудь переходник с USB на CAN. Тот час же я узнал, что много лет назад эта компания разработала свою версию переходника USB-CAN (custom work). И мне тут же вручили этот переходник. Хорошее начало дня. Жизнь налаживается...
Я повертел в руках это изделия и никак не мог понять с какой же стороны надо подходить к этому электронному прибору. Я написал босу, что нужна документация. Бос мне велел обратиться к коллеге по имени Тед. Я поворачиваюсь к столу, где работает Тед и вижу, что его нет на месте. Думаю, что он вышел покурить. Это второй барьер.
Тем временем я понял, что в любом случае надо соединить переходник и LapTop. Тут я понял, что у меня нет кабеля USB-A на USB-B. Вернее есть, но он уже занял для электропитания самой электронной платы. Много ли из вас заряжают мобильный телефон кабелем с разъемам USB-B? Это препятствие #3. Я подошел к офисному принтеру и временно отключил его чтобы забрать до завтрашнего дня кабель USB-B. Фуф 3-я проблема решилась сама собой.

Подключив изделие к PC, открыв диспетчер задач я увидел, что Windows 10 ожидаемо видит прибор, как неизвестное устройство. К этому моменту возвращается Тед. Он увидел мое сообщение и прибыл сразу ко мне. Он любезно принес мне harness, скинул ссылку на дистрибутив с драйвером. Я поставил драйвер. Windows стала видеть, что появилось устройство. Я тут же накалил клиентскую утилиту для управления этим прибором. Затем я ��осмотрел на harness. Это был клубок ниток. Гордиев узел. Распутать harness оказалось 4-е испытание. Я стал его распутывать. Это заняло примерно 15-20 минут. Я соединил два порта этого переходника в режиме LoopBack, чтобы проверить, проходят ли пакеты.
В этот момент я обнаруживаю, что беспроводная мышка полностью разрядилась. Это препона №5. Курсор примерз к монитору. Дело в том, что клиентская утилита для управления CAN включается и настраивается именно курсором мышки. Я начинаю ходить по рядам и спрашивать у кого в тумбочке есть запасная мышка. Мне вручают очередную беспроводную мышку.
Возвращаюсь к CAN loop back. Cигнал не проходит. Я зову Теда. Он говорит, что вот у него на столе всё работает. Он сгонял и принес свой экземпляр переходника USB-CAN. Мы положили их рядом и стали искать 10 отличий. Через 5-10 минут увидели только одно отличие. На его переходнике были какие-то черные квадратики (джамперы). Они как раз подключали терминирующие резисторы 120 ом. На моем переходнике не было этих джамперов. Теперь всё понятно. Джамперы - наше всё
При этом чтобы примонтировать джамперы надо было демонтировать прозрачную крышку от саркофага корпуса этого электронного прибора. Крышка крепилась на 4х винтах по периметру с крестовым шлицем. Запомните. Если вы хороший программист микроконтроллеров, то вы должны каждый день носить с тобой набор отвёрток с разнообразными шлицами. Я их именно в этот день и забыл с собой взять. Поэтому я переключился в режим поиска отвертки. Зашел в паялку и чудом обнаружил на столе в россыпи того, что называется словом miscellaneous отвёртку. Не зря же мне на день р��ждения всегда желали удачи. Вот она удача возвращается сторицей. Нашлась нужная отвертка.
Откручивая винты я спросил Теда дать мне пару джамперов и тут он внезапно мне говорит, что у него нет ни одного джампера. И сам спрашивает: "Часто ли ты, например, носишь с собой в кармане или кошельке джамперы?" Настало 5-ое испытание. Добыть джамперы. Мне пришлось написать в общий компанейский чат, чтобы попросить предоставить мне пару джамперов. Своим вопросом я нарушал всеобщее обсуждение похода в боулинг, что вскоре вышло мне укором. К счастью, мир не без добрых людей и вскоре джамперы лежали у меня на столе. Даже не заметил кто их принес. К слову, один хороший коллега еще вчера предлагал мне эти джамперы, а я тогда отказался. Кто бы мог подумать , что джамперы вот сегодня мне окажутся нужны как воздух, как хлеб. Вот и в правду в народе говорят: "Дают - бери, бьют - беги"
Настало время соединить собственно отладочную плату и переходник USB-CAN. И снова облом... Оказывается, что мне совершенно не известна распиновка многопинового разъёма на переходнике. Университетская комбинаторика подсказывает, что можно подключить два провода 72мя способами и только один способ окажется правильным. Вероятность ошибиться - 98%. Я снова иду к Теду и прошу распиновку. Тед говорит, что ему, внезапно, это тоже не известно. Он всегда пристегивал разьем harnessa и даже не задумывался про распиновку основного разъема. Даже мысль такая не возникала никогда. Я ему пояснил, что у меня на столе отладочная электронная плата. И на ней нет никакого стандартно разъёма. Там просто под CAN торчат ��илочные штыри PLD. Тут Тэд только рекомендовал обратится к схемотехнику этого изделия- Говарду. Мы подходим к столу Говарда и он, внезапно, тоже отсутствует. Пишу ему сообщение и вечером он присылает мне скриншот кусочка схемотехники основного разъёма. Цепь замкнулась. Это победа!
Итак, сводка за день. Что пошло не по плану:
№ |
вызов |
1 |
Не скачать официальный драйвер на прибор USB-CAN |
2 |
нехватка USB портов на USB-Hub-e |
3 |
нет кабеля USB-B |
4 |
тотально запутанный жгут |
5 |
разрядилась беспроводная мышка |
6 |
не оказалось под рукой отвертки |
7 |
нет джамперов |
8 |
загадочная распиновка основного разъёма |
9 |
поиск нужных коллег |
10 |
поиск осциллографа |
11 |
поиск крючков для электродов осциллографа |
12 |
поиск свободной розетки для подключения осциллографа |
Это не шутки, господа. Это реальный шквал препятствий и пр��понов при решении самых заурядных задач в программировании микроконтроллеров.
Итог
При программировании микроконтроллеров так всегда. Во всём. В электронике ничего не происходит само собой. Нужен огромный калейдоскоп всяческих примочек, чтобы просто начать хоть что-то делать.
При этом Вы должны быть ещё и детективом. Документация, знания и экспертиза порой размазаны по всей организации и надо опросить 2-3 свидетеля, чтобы выполнять тривиальные задачи. Занимаясь вот такой мелкой работой можно за весь день не написать ни одной строчки кода и в разработке на МК это более чем нормальное явление.
Не здорово пренебрегать документацией и инструкциями. Будь инструкция всё можно было бы сделать полностью автономно.
Что может пойти не так? Да всё что угодно может пойти не так.
Комментарии (14)

Yarus23
12.12.2025 23:36Не могу понять на каком языке эта статья. Фразы накалил утилиту и препона №5 вводят меня в ступор. В комментариях про какую то херню пишут. Ау люди вы здесь? В этой вселенной? О чем эта статья о плаче выпускника детского сада? Я тогда 20 лет назад писал среду forth для palm os на асм не помню чтобы жаловался. Нянечка налейте кашку Саше из средней группы!

Yarus23
12.12.2025 23:36разрядилась беспроводная мышка
Сейчас заплачу

Moog_Prodigy
12.12.2025 23:36Там не указаны реквизиты, куда платить. А так конечно, катастрофа мирового уровня. Куда там атомной войне...

DieSlogan
12.12.2025 23:36Крестовая отвёртка? А он в курсе, что их 2 взаимоисключающих формата? Эмдембщик мамкин

yappari
12.12.2025 23:36Акк понадобился, чтобы постить генерёные shit-stories с собственными обсессиями?

Myclass
12.12.2025 23:36Так он ещё проблемы с парковкой машины не описал, проблем с кофе-автоматом, пробных сирен итд. А телефонные звонки от мамы, а складывание посуды и освобожление посудомоечной машины в homeoffice - для него это вообще квест без шанса на успех. А поливание дом. цветов, а задержка при переходе перекрёстка .... короче - моё полное сочувствие

ptr128
12.12.2025 23:36Что мешало в самом начале воспользоваться осциллографом?

saag
12.12.2025 23:36Осциллограф и помешал, он в это время был в отлучке:-)

randomsimplenumber
12.12.2025 23:36Солидная организация возьмет в аренду осциллограф. А также набор отверток, горсть джамперов, проводов и прочих ардуин. И степлер конечно ;)

kkuznetzov
12.12.2025 23:36Кто-то такой умный нашёл мою отвёртку и не вернул. Пропала бесследно. Такие работники, у которых нифига нет, мне не нравятся. Постоянно ходят и просят/тырят имущество.

rubinstein
12.12.2025 23:36Правильный эмбеддер, если видит, что нету активности на шине нового устройства, сразу берет анализатор логики, а не usb-can карту. Если шина лежит, то как вам карта поможет? Дальше можно было не читать...
BobovorTheCommentBeast
Я бы сказал, что ни говна ни ложки, но в эмбеддеде так много говна, что даже ложки из него.
Херня, нужна херня для херни, херня для херни лежала на форуме 2003 года, форум сдох пару месяцев назад, есть новая херня для херни на Гите, она не запускается, разраб херни для херни
умерушел в банкинг 6 лет назад, 3 ищуи (вкл закрытые), кто то решал твою проблему 23 года назад, решение не отписал, спасибо, вдупляешь в код херни для херни, оказывается она не для твоей херни, пишешь свою херню для херни, она не работает, читаешь даташит херни, первый раз прочитал криво и херня для херни не нужна.