Привет, я программист микроконтроллеров. Вы наверное думаете, что программисты микроконтроллеров на работе занимаются исключительно только программированием? Позвольте рассказать вам про буквально один случайный день из жизни программиста МК.

Программирование МК нужно сейчас в основном в автомобилестроении. А все автомобильные агрегаты обмениваются данными по шине 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-я проблема решилась сама собой.

Подключив изделие к NetTop 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%. Я снова иду к Теду и прошу распиновку. Тед говорит, что ему, внезапно, это тоже не известно. Он всегда привинчивал металлический разъем harness-a и даже не задумывался про распиновку основного разъема. Даже мысль такая не возникала, никогда! Я ему пояснил, что у меня на столе отладочная электронная плата. Это другое. И на ней нет никакого стандартно разъёма. Там просто под CAN торчат вилочные штыри PLD. Тут Тэд только рекомендовал обратится к схемотехнику этого переходника - Говарду. Мы подходим к столу Говарда и он, внезапно, тоже отсутствует. Пишу ему сообщение и вечером он присылает мне скриншот кусочка схемотехники основного разъёма. Цепь замкнулась. Это победа!

Итак, сводка за день. Что пошло не по плану:

вызов

1

Не скачать официальный драйвер на прибор USB-CAN

2

нехватка USB портов на USB-Hub-e

3

нет кабеля USB-B

4

тотально запутанный жгут

5

разрядилась беспроводная мышка

6

не оказалось под рукой православной отвертки (+)

7

нет джамперов

8

загадочная распиновка основного разъёма, которую знает только 1 человек в организации

9

поиск нужных коллег

10

поиск осциллографа

11

поиск электродов для осциллографа

12

поиск крючков для электродов осциллографа

13

поиск свободной розетки для подключения осциллографа

и т. д.

Это не шутки, сэры. Это реальный шквал препятствий и препонов при решении самых заурядных задач в программировании микроконтроллеров.

Итоги

При программировании микроконтроллеров так всегда. Во всём. В электронике ничего не происходит само собой. Нужен огромный калейдоскоп всяческих примочек, чтобы просто начать хоть что-то делать. Предстоит пройти целый квест.

При этом Вы должны быть ещё и детективом. Документация, знания и экспертиза на продукт порой размазаны по всей организации и надо опросить 2-3 свидетеля, чтобы выполнять самые тривиальные задачи. Занимаясь вот такой мелкой работой можно за весь день не написать ни одной строчки кода, и в разработке на МК это - более чем нормальное явление.

Мораль. Не здорово пренебрегать документацией и инструкциями. Будь инструкция всё можно было бы сделать полностью автономно и быстро.

Что может пойти не так? Да всё что угодно может пойти не так.

Приходите программировать микроконтроллеры!

Комментарии (45)


  1. BobovorTheCommentBeast
    12.12.2025 23:36

    Я бы сказал, что ни говна ни ложки, но в эмбеддеде так много говна, что даже ложки из него.

    Херня, нужна херня для херни, херня для херни лежала на форуме 2003 года, форум сдох пару месяцев назад, есть новая херня для херни на Гите, она не запускается, разраб херни для херни умер ушел в банкинг 6 лет назад, 3 ищуи (вкл закрытые), кто то решал твою проблему 23 года назад, решение не отписал, спасибо, вдупляешь в код херни для херни, оказывается она не для твоей херни, пишешь свою херню для херни, она не работает, читаешь даташит херни, первый раз прочитал криво и херня для херни не нужна.


    1. dgkdfjvnjndsigs89
      12.12.2025 23:36

      Ужас какой.

      Пишите еще.


  1. Yarus23
    12.12.2025 23:36

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


    1. Yarus23
      12.12.2025 23:36

      разрядилась беспроводная мышка

      Сейчас заплачу


      1. Moog_Prodigy
        12.12.2025 23:36

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


    1. randomsimplenumber
      12.12.2025 23:36

      накалил утилиту

      Наговнокодил


    1. karenic Автор
      12.12.2025 23:36

      накалил утилиту

      Опечатка же.
      накатил утилиту - значит установить прикладную программу


    1. NameAlex
      12.12.2025 23:36

      Меня вводит в ступор фраза -налейте кашку!? Налить можно только стопарь.


    1. karenic Автор
      12.12.2025 23:36

      Я тогда 20 лет назад писал среду forth для palm os на асм не помню чтобы жаловался.

      Вы с CAN шиной работали?


      1. AbitLogic
        12.12.2025 23:36

        Работали, всё что он вытворял - лишние движения, достаточно было иметь китайский логический анализатор за 10 баксов


    1. hw_store
      12.12.2025 23:36

      Не налейте, а наложите! Детский сад...


  1. Vikt7777
    12.12.2025 23:36

    Кринжатина, а не статья


  1. DieSlogan
    12.12.2025 23:36

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


    1. karenic Автор
      12.12.2025 23:36

      А как надо говорить? Плюсовая отвертка? Минусовая отвертка?


      1. randomsimplenumber
        12.12.2025 23:36

        Православная.


      1. hw_store
        12.12.2025 23:36

        "отвёртка типа Phillips" или "отвёртка типа "Pozidriv", Кажется, так. Но вроде обычным филлипсом можно крутить и то и другое, если размер подходящий.


        1. randomsimplenumber
          12.12.2025 23:36

          PZ вроде как больше для столярки.


        1. DieSlogan
          12.12.2025 23:36

          Нет, нельзя. Они не взаимозаменяемые. То есть, PZ отвёрткой ломаем PH, А PH ломаем PZ. Ущерб отвёртке и винту.


  1. yappari
    12.12.2025 23:36

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


  1. Myclass
    12.12.2025 23:36

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


    1. hw_store
      12.12.2025 23:36

      также совершенно обойдён вниманием эпизод с употреблением смузЕй в коворкинге, во время кофе-брейка


  1. ptr128
    12.12.2025 23:36

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


    1. saag
      12.12.2025 23:36

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


      1. randomsimplenumber
        12.12.2025 23:36

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


      1. ptr128
        12.12.2025 23:36

        У каждого? У меня дома для DIY три ослика.


  1. kkuznetzov
    12.12.2025 23:36

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


  1. rubinstein
    12.12.2025 23:36

    Правильный эмбеддер, если видит, что нету активности на шине нового устройства, сразу берет анализатор логики, а не usb-can карту. Если шина лежит, то как вам карта поможет? Дальше можно было не читать...


    1. beeruser
      12.12.2025 23:36

      Чтобы к CAN подключить логический анализатор, нужен трансивер, который надо забрать у какого-нить Боба, который ушёл покурить, а может и покакать.


      1. Kudriavyi
        12.12.2025 23:36

        И есть на плате трансивер


        1. karenic Автор
          12.12.2025 23:36

          они залиты лаком.


          1. Albert2009Zi
            12.12.2025 23:36

            Так разъем CAN ведь не залит, наверное, и его распиновка вам известна? Туда трансивером внешним, на платах идут типа NXP TJA1051, стоят 2-5 евро, зацепиться. А на него, трансивер, уже анализатором. Но я бы для начала все же осциллографом проверил чИстоту сигнала. Бывает, что сам CAN не при чем, а допустим входное питание сильно зашумлено.


    1. ptr128
      12.12.2025 23:36

      Сначала всё же ослик. А уже когда убедился в наличии сигнала удовлетворительной формы и уровней, тогда уже можно ЛА. Причем тогда его можно подключать уже к логическим уровням, а не добавлять в цепь трансивер, который может оказаться не живым


    1. karenic Автор
      12.12.2025 23:36

      анализатор логики

      Анализатор логики подключается к уровням TTL. А в CAN шина - чистый аналог с 2,5 воль в IDLE. Причем еще диф. пара


      1. qwe101
        12.12.2025 23:36

        Нормальный анализатор подключается не только к TTL, Мой, например, можно включить прямо в CAN, к диф.паре, так он умеет ещё и парсить CANпротоколы(их там не один). И много другого...


    1. VM1989
      12.12.2025 23:36

      Осциллограф - наш великий и бесконечно мудрый логический анализатор. Там можно и глазами пакет увидеть, и частоту посчитать, и во многих осциллогафах дороже 100$ есть дешифровка множества интерфейсов. Да в общем дешифровка не нужна. Если видно, что пакеты из передатчика исторгаются - проблема, вероятнее всего, в приемнике.

      И не надо никаких окоенчников, можно прямо в шину тыкнуться