Pull to refresh
115
32

Embedded SW/Firmware Engineer

Send message

Зачем Программисту Микроконтроллеров Численные Методы?

Level of difficultyEasy
Reading time4 min
Views8.9K

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

В математике бывают такие случаи, когда есть функция, которая просто выражается элементарными функциями. А вот обратную функцию выразить аналитически либо очень трудно, либо вообще невозможно.

В тексте показано как применять бинарный поиск для вычисления значений сложной тригонометрической обратной функций.

Читать далее
Total votes 21: ↑19 and ↓2+20
Comments33

Изометрическое Черчение в Inkscape

Level of difficultyEasy
Reading time3 min
Views9.7K

Во время инженерной работы постоянно приходится проектировать заказные детали.

Очевидно, что нужен какой-то векторный редактор для быстрого и простого создания статической графики.

Редакторы 3D черчения как правило платные. При этом есть бесплатные программы для 2D черчения. В некоторой степенью работать на плоскости удобнее, чем теряться в 3D комнате.

В этом тексте представлены приёмы для 3D черчения в 2D редакторе Inkscape.

Читать далее
Total votes 15: ↑11 and ↓4+12
Comments40

Как Чинить Программные Ошибки?

Level of difficultyEasy
Reading time6 min
Views4.1K

В программировании микроконтроллеров регулярно приходится занимаются починкой bug(ов).

При этом все bug(и) уникальные. Поиск причины каждой конкретной осечки это скорее искусство. Починка программ сродни работы детектива.

Есть ли универсальные приемы того как искать причину программных ошибок?

Считаю, что да. Подробности в тексте...

Читать далее
Total votes 11: ↑5 and ↓6+2
Comments40

Разбор примера BLE Audio от Nordic Semiconductor (или переходник I2S->BLE-Audio)

Level of difficultyMedium
Reading time16 min
Views2.4K

Обзор технологии беспроводной передачи данных BLE 5.3.
Представлен разбор примера Ble Audio от Nordic Semiconductor для микроконтроллера nRF5340. Это пример передачи звука по Bluetooth 5.3.

Читать далее
Total votes 7: ↑6 and ↓1+6
Comments2

Зачем Программисту Микроконтроллеров Математическая Статистика? (или так ли хороши UWB трансиверы?)

Level of difficultyEasy
Reading time5 min
Views7.1K

Настал день, когда мне для работы программистом микроконтроллеров наконец пригодилась математическая статистика из ВУЗ(овского) курса по теории вероятностей.

Есть очень интересная технология для автоматического радиоизмерения расстояния. Технология основана на UWB трансиверах. Позволяет измерять время пролёта радиоволны.

В этом тексте написал как я исследовал измерения расстояния, при помощи ASICа UWB трансивера DWM1000.

Читать далее
Total votes 12: ↑12 and ↓0+12
Comments23

Как собрать Си программу в OS Windows

Level of difficultyEasy
Reading time9 min
Views12K

Иногда возникает ситуация, когда надо что-то посчитать согласно сложному алгоритму прямо на LapTop PC. При этом сам алгоритм написан на Си.

Это может быть цифровой фильтр, дискретное преобразование Фурье, генератор QR кода, кусок линейной алгебры с векторами, какое-то тригонометрическое вычисление, программный модулятор, статистическая обработка случайной величины.

Да всё, что угодно! То есть Вы хотите использовать язык Си как гибкий и быстрый калькулятор в Windows.

В этом тексте представлено минимальное окружение для сборки Си кода в Windows.

Читать далее
Total votes 21: ↑8 and ↓13-5
Comments56

Сортировка Конфигов для Make Сборок

Level of difficultyEasy
Reading time5 min
Views2.1K

Как известно любая большая программа на Си содержит много программных компонентов и, как следствие, много настроек: констант, макросов, конфигурационных структур и прочего. Всё это можно назвать одним словом: конфиги.

Все передают конфиги по-разному.

В этом тексте представлен способ передавать конфиги через скрипты сборки.

Читать далее
Total votes 9: ↑4 and ↓5+1
Comments10

Зачем программисту микроконтроллеров тригонометрия? (или Обзор Усилителя Звука из Apple AirTag)

Level of difficultyEasy
Reading time7 min
Views9.5K

На 12ом году опыта программирования микроконтроллеров мне наконец-то пригодилась школьная тригонометрия (6-класс).
Это настолько специфический случай, что я решил накропать про это заметку.

Когда Вам надо добавить в устройство звук, то можно воспользоваться микросхемой MAX98357A. Это по сути DAC у которого на входе I2S на выходе PWM.

В этой заметке я расскажу о своём опыте работы с усилителем MAX98357A и о том как его тестировать.

Читать далее
Total votes 23: ↑18 and ↓5+19
Comments37

Обзор Чипа Внешней I2C Памяти AT24Cхх

Level of difficultyEasy
Reading time7 min
Views9.1K

AT24C02M5/TR это EEPROM на 256 байт с доступом по двухпроводному синхронному последовательному интерфейсу I2C.

В разработке электронных плат часто надо подписывать электронные платы каким-то серийным номером. Это нужно для идентификации платы при серийном производстве.

Внешние чипы памяти особенно важны так как прошивку могут полностью стереть. В связи с этим хранить серийный номер на микроконтроллере внутри on-chip NOR-Flash самого микроконтроллера ненадежно.

Читать далее
Total votes 24: ↑13 and ↓11+8
Comments33

Диспетчер Задач для Микроконтроллера

Level of difficultyEasy
Reading time7 min
Views11K

В программировании микроконтроллеров часто нужно написать простые тестировочные прошивки. При этом надо некоторые функции вызывать чаще, а некоторые реже. Для этого, конечно, можно запустить FreeRTOS, однако тогда этот код не будет переносим на другие RTOS например Zephyr RTOS или TI-RTOS. Поэтому надо держать наготове какой-нибудь простенький NoRTOS планировщик.

В этот тексте я представил основные идеи алгоритма такого кооперативного планировщика.

Читать далее
Total votes 21: ↑19 and ↓2+22
Comments26

Полезные Заготовки Вызова Утилит Командной Строки

Level of difficultyEasy
Reading time6 min
Views14K

Не для кого не секрет, что некоторые типичные действия на компьютере проще быстрее и эффективнее выполнить из-под командной строки.

В этом тексте я хотел бы поделиться командами, которые мне очень часто помогают в работе.

Читать далее
Total votes 32: ↑7 and ↓25-18
Comments44

Синтаксический разбор CSV строчек

Level of difficultyEasy
Reading time9 min
Views4.4K

В программировании микроконтроллеров часто надо производить синтаксический разбор (парсинг) CSV строчек. CSV это просто последовательность символов, которые разделены запятой (или любым другим одиночным символом: ; | /). CSV строчки можно, например, повстречать в NMEA протоколе от навигационных GNSS приемников. Любой URL это в сущности та же самая CSV строчка.

В этом тексте я написал как производить синтаксический разбор CSV строчек.

Читать далее
Total votes 16: ↑5 and ↓11-4
Comments133

Генерация зависимостей внутри программы

Level of difficultyEasy
Reading time7 min
Views4.2K

В программировании программы часто строятся иерархично. Один программный компонент вызывает функции из другого программного компонента. Как бы представить эту взаимосвязь в законченной программе?

Эту задачу можно решить прибегнув к языку Graphviz и утилитам cpp, dot, make, chrome.

Читать далее
Total votes 14: ↑10 and ↓4+11
Comments48

Опрос для Программистов Микроконтроллеров (32 вопроса)

Level of difficultyEasy
Reading time1 min
Views8.6K

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

Цель данного опроса - это попытка выяснить как «правильно» поступать через усреднение.

Читать далее
Total votes 23: ↑8 and ↓15-2
Comments58

Зачем программисту микроконтроллеров комплексные числа (или обзор MEMS микрофона MP23DB01HPTR)

Level of difficultyEasy
Reading time6 min
Views6K


На 12ом году работы программистом-микроконтроллеров мне наконец-то пригодились комплексные числа из школьной математики. Где они тут нужны? Пояснение в тексте.

Есть много организаций, которые так или иначе разрабатывают и производят оборудование со звукоизлучателями. Очевидно, что между производством и продажей аудио оборудование надо тестировать.

В этом тексе я написал про то, как делать авто тест для звуковых систем.

Читать далее
Total votes 13: ↑10 and ↓3+10
Comments15

Задача про игральные кубики и треугольники

Level of difficultyEasy
Reading time7 min
Views4.1K

Есть одна очень красивая задача из теории вероятности, которая обычно преподносится в двух формулировках.

Бросают один кубик три раза. Какова вероятность, что выпавшие значения образуют треугольник?

Бросают три кубика одним броском. Какова вероятность, что выпавшие значения образуют треугольник?

Есть ли различия в решении? Попробуем разобраться.

Читать далее
Total votes 7: ↑2 and ↓50
Comments16

Cross-Detect для Проверки Качества Пайки в Электронных Цепях

Level of difficultyMedium
Reading time27 min
Views5.4K

Как известно электроника это наука о контактах. При этом в реальной разработке контакты часто отсутствуют или не там, где нужно.

Вот пришла электронная плата с производства. Как убедиться, что на этой конкретной плате всё корректно с контактами?

Для этого нужна какая-то технология. Назовем её Cross-Detect.

Читать далее
Total votes 17: ↑12 and ↓5+11
Comments152

Техникум: Конечный Aвтомат Обработки Сигнала с Кнопки

Level of difficultyEasy
Reading time13 min
Views6.3K

В электронных устройствах часто бывают тактовые кнопки. Например в Bluetooth колонке пять кнопок: увеличение/уменьшения громкости, перехода в режим загрузчика, остановки звука и прочего.

Обычно кнопок мало, а функционала на кнопки разработчикам хочется добавить много. Поэтому у кнопок иногда бывает два режима: короткое нажатие, долгое нажатие. На каждый режим нажатия прошивка назначает отдельный программный код обработчика.

Очевидно, что firmware должно как‑то однозначно распознавать тип нажатия на кнопку; короткое долгое.

Можно очень красиво и элегантно решить эту задачу прибегнув к конечно автоматной методологии разработки программного обеспечения.

Читать далее
Total votes 13: ↑10 and ↓3+9
Comments83

Препарируем Bluetooth Колонку JBL Clip 3

Level of difficultyEasy
Reading time3 min
Views4.2K

Как известно чтобы стать хорошим архитектором надо изучать чертежи выдающихся архитектурных сооружений: плотина Гувера, Бруклинский мост, Эмпайр Стейт Билдинг.

Этот принцип применим в любой другой области. Например в электронике. Чтобы стать хорошим инженером-электроником надо изучать выдающиеся электронные платы. Вот например есть у меня Bluetooth колонка Clip 3. Всё в ней кажется здорово.

Надо понять как это устроено внутри.

Читать далее
Total votes 7: ↑2 and ↓50
Comments6

ISO 26262-6 разбор документа (или как писать безопасный софт)

Level of difficultyEasy
Reading time9 min
Views5.7K

ISO26262 это международный текст, который объясняет как создавать безопасный и высоконадежный встраиваемый софт для мотоциклов, автомобилей, грузовиков и автобусов.

В этом тексте я попробовал разобраться с тем как понять автомобильный стандарт функциональной безопасности ISO26262 в той части, которая относится к требованиям к программному обеспечению (часть 6).

-----

Читать далее
Total votes 4: ↑4 and ↓0+4
Comments20

Information

Rating
178-th
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