Embedded SW/Firmware Engineer
Information
- Rating
- 71-st
- Location
- Москва, Москва и Московская обл., Россия
- Registered
- Activity
Specialization
Embedded Software Engineer, DevOps
Senior
Git
Bash
CI/CD
C
Embedded system
Programming microcontrollers
Software development
Algorithms and data structures
System Programming
Development of drivers
Ещё подсветку днища стола синхронную с изображением на мониторе. )))
Плюс логин и пароль в личный кабинет на сервере вендора стола.
Да, точно.
UART нужен не сколько для управления сколько для чтения диагностики.
Например наработка на отказ, калибровки, конфиги и обновление прошивки загрузчиком.
Те кто программируют микроконтроллеры знают зачем нужен UART.
Зачем ATtiny13 за 310 RUR
когда Cortex-M0 дешевле в 2-5 раз?
А как вы сделаете плавный разгон?
Без этого вся констукция ушатается и саморезы крепления вывалятся, как зубы от усталости материала.
Не всё так просто...
Помимо отвалившегося мотора, надо ещё уметь определять в H-мосте ЗК нагрузки на GND и на VBAT.
Вот классическое решение
H-мост: Load Detect (или как выявлять вандализм)
https://habr.com/ru/articles/709374/
Inkscape - это безальтернативная бесплатная программа для векторного рисования
https://inkscape.org/
Даже 3D умеет
https://habr.com/ru/articles/722566/
Данный текст - это ликбез по электрическому столо-строению. Вероятно это поможет кому-нибудь не ошибиться с покупкой электрического стола или даже разработать свой вариант безальтернативного электрического стола.
Уж что-то верится с трудом.
Вместо LDO чипа 78M05 лучше бы поставить импульсный DC-DC преобразователь модели SA24403 (Silergy).
Это уменьшит нагрев.
Есть ли российские микросхемы драйверы Н мостов?
Inkscape
Или весь H мост собрать на одной L6203.
Программно решили делать защиту от КЗ?
А какой у Вас ASIC для драйвера H-моста?
Весь H-мост можно было бы сделать на трех компонентах. Два внешних N-канальных полевика и один драйвер на основе ASIC VNHD7008AY. Плата получилась бы компактнее, а схемотехника - проще.
Вот более реалистичный портрет программиста. По крайней мере в программировании микроконтроллеров это так.
"Я выпускник приборостроительного факультета Павелбургского политеха в этой стране. Моя специальность создавать электронику. Я в универе учился в основном аналоговой и немножко цифровой схемотехнике. Каково же было мое удивление, когда после ВУЗа я вдруг узнал, что в электронике много микроконтроллеров и тут, оказывается, надо программировать. Признаться в универе я ненавидел программирование. Но тем не менее пару лекций по языку С запомнил. Это и является основой всех моих знаний. С тех пор прошло 15 лет.
И вот я прихожу на работу.
Я вешаю свою зимнюю куртку прямо на спинку своего офисного стула, это всем мешает в проходе, но мне удобно. Ничто не должно ограничивать мою индивидуальность. На столе у меня хаос, навалено всякого барахла с горочкой.
С какими технологиями я работаю?
В моём белом списке: Windows, PowerShell, IAR, C++, STM32 и SPL.
Мой основной набор технологий это STM32 и IDE IAR. Я понятия не имею как в принципе возможно программировать не STM и в не IDE IAR. Как я рад, что в этой кракожской организации у нас по технологиям получился match.
В проектах на STM32 я пишу аппаратный код прямо через регистры CMSIS. Я лучше буду использовать SPL чем HAL. SPL проще в понимании, а значит и лучше.
В моём черном списке Linux, Eclipce, assembler, HAL Drivers.
Я что-то слышал про GCC, makefile, CMake, MISRA, Utest, Bootloader, FreeRTOS, Zephyr RTOS, GIT, CI/CD , Jenkins, AUTOSAR, UART-CLI, TDD но меня это никогда не интересовало и это я всё это не знаю и знать не хочу! Вообще я ежедневно вижу много аббревиатур, однако понятия не имею как расшифровываются 95% из них.
Вообще я испытываю средневековый страх перед компьютерами. Боюсь нажать не на ту кнопку и сломать что-нибудь.
Как я работаю с железками?
Схемотехнику я не смотрю. У меня её даже нет на компьютере. Я лучше пойду у схемотехников спрошу, где там на разъёме нужные мне пины, чем сам в этом стану разобраться. Понимаете, я работаю на более высоком уровне! Вот! Когда мне дают в руки электронную плату с 2мя микросхемами, то я спрашиваю у схемотехника: "А где здесь микроконтроллер?"
Если меня просят прислать фото электронное платы, то я делаю фото платы только с одной стороны. Причем с той стороны на которой меньше всего микросхем.
Я никогда не смотрю схемотехнику PCB. У меня даже нет её на компьютере. Это ниже моего достоинства. Я же программист, а не схемотехник там какой-то.
Даташиты я тоже не читаю и не скачиваю. Я обычно скачиваю архив с примерами настроенного проекта от производителя и ковыряю его пока что-то не заработает.
Если мне надо собрать прототип из нескольких плат, то я использую клей и гвозди. Это быстро и просто.
Я никогда не ношу с собой USB-Flash(ку). Если мне надо сделать скриншот с экрана осциллографа или распечатать файл на принтере с Flash(ки), то я буду бегать по офису и выпрашивать личные Flash(ки) своих коллег.
Как я пишу код?
Новые проекты я клепаю на основе примеров из SDK от производителя микроконтроллера. Прямо внутри папки с SDK. Сам проекты с нуля построить я не умею и никогда не умел. Я только собираю уже существующие примеры. Как по мне пример это коробочка, которая исполняет мой С-код. Как она работает меня не интересует от слова совсем.
Я всю программу пишу в одном лишь только main.c файле. Нас так учили в институте на лабах по Arduino. Ведь это так просто, когда весь код в одном файле! Моя самая любимая методология программирования это так называемое стихийное программирование.
Девизом моего рабочего процесса может быть одно слово. "ковыряться".
--Я люблю программировать под музыку. Особенно тяжелый рок. Мне это нисколько не мешает сосредотачиваться на алгоритмах и структурах данных.
--Всё исходники я фигачу в одну папку и примерно в один файл. Драйверы микросхем, компоненты всё-всё в кучу. Называется эта чудо-папка utils. Только я один буду знать как с этим работать и буду незаменимым сотрудником в этой кракожской организации.
--Я не использую заголовочные файлы. Мне лень. Я всегда вставляю переменные, массивы через extern. Это тоже работает.
--Я сначала использую функции, а потом их объявляю ниже в файле. Список прототипов функций в начале *.с файла ведь есть.
--Я обожаю делать заборы из комментариев в программе. Вот так:
///////////////////////////////////////////////////////////////////////////////////
/*****************Some text*****************************************/
Это напоминает мне домик в деревне.
--Обожаю большие функции по 1000...7000 строк. Пополняю их регулярно. Я даже второй монитор повернул вертикально. У меня у одного в офисе вертикальный монитор.
--Я люблю магические циферки. Это быстро, компактно.
--При инициализации периферии I2C SPI я конфигурирую только 20% от всех настроек.
--Я пишу макро функции маленькими буквами. Мне просто лень перепечатывать макросы заглавными буквами. И так ведь работает.
--Мне плевать на отступы в коде. Я пишу в одну строчку или в стиле маяковский. Треугольные функции из бесконечных if(ов) уходящую в соседнюю комнату. Не зря же я учил литературу в школе.
--Иногда я всё таки делаю .h файлы и создаю отдельную папку для include файлов и отдельную папку для .c файлов специально, чтобы коллегам было труднее разобраться в моей папке с проектом.
Я умею пошагово отлаживать код только из-под IDE. В IDE есть пошаговая отладка. Она стала для меня как наркотик. Я даже не использую светодиоды на борде, чтобы показывать, что код исполняется.
Я умею разрабатывать прошивки только на основе примеров. Как по мне MCU это коробочка которая исполняет С код. Я не создаю репозитория, а фигачу прямо в папке с SDK от производителя микроконтроллера. А когда надо передать сорцы другому разработчику, то я прошу его принести флешку гигабайт на 16+ и скопирую корень SDK ему на флеху. Или отправляю этот много гигабайтный *.zip архив по e-mail почте.
Я умеет собирать код только из-под IDE. Для меня не существует ничего вне и за пределом IDE. Я вижу только то, что в радиусе 2-3х сантиметров вокруг да около курсора. Я не представляю как можно работать за компьютером без мышки и курсора. Слышал что кто-то говорил про какой-то CLI и скрипты. Это всё старперы. Я же современный кракожский специалист поэтому я за IDE. Я за VS Code. Причем окно IDE я даже не раскрываю на весь экран. Оно у меня занимает всего только 60% экрана, а рядом работает музыкальный плеер чтобы было нескучно писать код.
Боже упаси хоть раз открыть какую-нибудь консоль. Я на современном уровне. Мой уровень это IDE и GUI. Я достоин этого. Работать в CLI это ниже моего достоинства.
Я видел в папке с проектом какие-то .ld .obj файлы но не понимаю зачем они нужны. Самое главное это .с и .h файлики. Остальное не важно.
Я не знаю, что такое программные тест. Слышал как-то но никогда этим не интересовался. Я отличный многоопытный программист и код пишу без ошибок.
Как я составляю документацию.
Когда меня просят нарисовать блок-схему модуля, платы, стенда, то я открываю крякнутый MS Visio и рисую внутри схему с градиентами, тенью стразиками и прочей ерундой не имеющей прямого отношения к сути прибора. Зато потом всё смотрится дорого и богато.
Мои принципы общения с коллегами:
Мои коллеги идиоты! Все идиоты! Один я всё знаю! Если коллега попросит меня какой-то программный компонент, который я уже делал ранее (например функцию расчета crc8), то я ему напишу в ответ, что "не дам!". Это моя интеллектуальная собственность! Вот. Пусть сам делает свою реализацию fifo, swap, crc32, RTC.
Я люблю сплетни и доносить на коллег, если менеджер попросит. Доносы это наша кракожская национальная традиция, которую надо соблюдать. Однако выпить с коллегами я тоже готов всегда. Лишь бы нашелся хоть какой-то повод. Я всегда стараюсь участвовать в разговорах на тему как выбора места для выпивки, так и выбора самого типа выпивки. А вот планерок я опасаюсь как огня, стараюсь туда не ходить если не зовут.
Я никогда не делал публикаций и ничего не постил в ленту на habr.com. Я ни за что не поделюсь своими огромными знаниями. Это всё мое конкурентное преимущество! Зачем мне делиться знаниями? Сколько мне за это заплатят? Когда у меня появится свободное время я лучше посмотрю очередной сериал, чем писать пост в каком-то сообществе. Да и при этом мне очень трудно излагать свои мысли техническим языком. Что устно, что письменно. Помню была однажды планерка, дак я и 2х предложений толком связать не смог. Зато знание разнообразной матершины - это богатство и могущество моего кракожского языка.
Я толком не знаю инженерного языка. Я использую такие слова как "присобачить", "штуковина", "пи****ки", "глюган", "фи***ина", "фитча", "затык" и прочее.
Также я толком не знаю и английского языка. Пишу транслитом в комментариях и в компанейских чатах (ватчдог, базофф, юзать, инлайн, хедер, дифайн, тула). Ведь мой транслит он это ... самый правильный транслит!
Признаться я даже писать то в мессенджере ленюсь. Обычно включаю в мессенджере функцию записи голоса и отправляю смежнику голосовой файл.
Я люблю когда мне объясняют одно и тоже по 2 по 3 раза. Так я осознаю свою значимость.
На работе я обожаю поговорить про политику, бацилу, котиков. Да и вообще, если честно, лишь бы хоть кто-нибудь начал в офисе какой-нибудь пустой беспредметный разговор, так я тут же к нему подключусь всерьез и надолго. Будничные продолжительные чаепития с такими же как я коллегами - святое дело. Люблю перебивать собеседника. Я же, как правило, всегда прав.
Я не отвечаю на сообщения в мессенджере неделями. Я общаюсь только устно, когда ко мне подходят. Я и сам не пишу. Прихожу лично к смежнику и пытаюсь сказать то, что уже забыл по ходу ходьбы. Я не знаю, что существует Telegram. Я признаю только WhatsApp. А когда я таки пишу в мессенджере, то каждое слово отправляю отдельным сообщением.
Мной напарник рекомендовал мне освоить утилиту grep. Но я не хочу пользоваться всяким старьём. Я лучше буду подходить и спрашивать в каком файле находится функция void swap16(uint16_t,uint16_t).
Кстати, по-поводу ходьбы. Я обычно ухожу с работы ровно в 18:01.
Мой досуг
В свободное время я ничего не учу а выбираю куда бы в очередной раз спутешествовать. Когда мне надо делать визу, то я прихожу в офис чтобы просто отметиться в СКУД(е), а дальше иду по своим делам. Ведь мне же надо сделать путевку на очередной курорт. Надо же потом похвастаться перед коллегами фотками из отпуска. Чтобы завидовали.
Я не знаю, что такое программные тест. Слышал как-то, но никогда этим не интересовался. Я отличный многоопытный программист и код пишу без ошибок.
Тем более, что изделие в нашей организации потом подвергнут православному благословению значит все будет хо-ро-шо.
“
Надеюсь, что никто из читающих в этом тексте не узнал ни себя ни своих коллег.
Вся суть моего текста в том, чтобы сделать быстрый медианный фильтр именно на чистом Си. Не на С++.
Чтобы можно было портировать алгоритм на микроконтроллеры.
Никто не мешает вам гонять текстовые команды CLI по CAN.
Надо только предварительно в прошивке ISO-TP поднять.
https://habr.com/ru/articles/798489/