Обновить
181
85

Embedded SW/Firmware Engineer

Отправить сообщение

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

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели5.9K

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

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

Читать далее

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

Уровень сложностиПростой
Время на прочтение1 мин
Охват и читатели9.1K

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

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

Читать далее

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

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели11K


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

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

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

Читать далее

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

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели5.6K

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

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

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

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

Читать далее

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

Уровень сложностиСредний
Время на прочтение27 мин
Охват и читатели7.4K

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

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

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

Читать далее

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

Уровень сложностиПростой
Время на прочтение13 мин
Охват и читатели9.2K

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

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

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

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

Читать далее

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

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели8.2K

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

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

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

Читать далее

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

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели11K

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

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

-----

Читать далее

Разбор I2S трафика в программе Logic 2

Уровень сложностиПростой
Время на прочтение1 мин
Охват и читатели6.1K

В этом тексте я написал инструкцию того как настроить логический анализатор Saleae производить автоматический синтаксический разбор трафика на шине I2S.

Читать далее

Обзор Aппаратного Aудио кодека MAX9860 (2x ADC+DAC)

Уровень сложностиПростой
Время на прочтение12 мин
Охват и читатели5.9K

Обзор аудиокодека MAX9860.

MAX9860 это 24 пиновый ASIC американской компании Maxim Integrated у которого внутри один 16ти битный sigma delta ЦАП, и два AЦП с управлением по I2C. Данные загружаются и выгребаются по I2S.

В тексте я написал свои впечатления от работы с этим чипом. Перечислил достоинства и недостатки микросхемы MAX9860.

Читать далее

Техникум: Распознавание Вещественного Числа из Строчки

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели5.3K

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

Потом часто надо анализировать текстовые логи с SD-карты. Надо выхватывать вещественные числа из CSV файлов для дальнейших расчетов.

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

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

Читать далее

Load-Detect для Проверки Качества Пайки

Уровень сложностиПростой
Время на прочтение12 мин
Охват и читатели5.3K

Как вы думаете зачем в микроконтроллерах есть функция pull-up/pull-down, если можно просто воспользоваться установкой логического уровня push-pull?

Вот типичная ситуация. Вам принесли электронную плату с производства. Крайне вероятно, что на PCB есть какие-то аппаратные баги. Обычно это короткие замыкания на GND/VCC или вовсе непропай.

Как выявить и найти эти бракованные пины?

Вот тут-то нам и помогут подтяжки к питанию/земле на пинах MCU.

Называется эта тема load-detect.

В этом тексте я подробно написал про то, как работает load-detect под капотом.

Читать далее

Симулятор Графического Монохромного Дисплея на Graphviz

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели4.5K

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

Проблема в том что у языка Си нет встроенной библиотеки для отрисовки битовых матриц в отдельном окне подобно тому как это есть в Python или C#. Поэтому отлаживают такой код обычно на конечных устройствах.

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

Читать далее

Атрибуты Хорошего Загрузчика

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели13K

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

Читать далее

Сканирование шины RS485

Уровень сложностиПростой
Время на прочтение22 мин
Охват и читатели30K

В электронике есть множество проводных полудуплексных асинхронных последовательных интерфейсов типа "общая шина". Это 1-Wire, RS485, 10BASE2(thin Ethernet), LIN, K-Line, CAN, I2C, MIL-STD-1553, ARINC 429.

Во всех этих shared-bus интерфейсах так или иначе возникает задача сканирования шины. То есть надо автоматически определить адреса устройств которые подключены к витой паре проводов.

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

Читать далее

Ряд Фурье как Фильтр Нижних Частот

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели12K

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

При этом я ни разу не видел, чтобы на основе преобразования Фурье делали фильтры нижних частот, а ведь, справедливости ради, можно заметить что из преобразования Фурье можно сделать отличный фильтр нижних частот.

Читать далее

Python: Построение графиков по данным из файла

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели77K

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

Читать далее

Обзор датчика освещения BH1750

Уровень сложностиПростой
Время на прочтение2 мин
Охват и читатели13K


BH1750 это простой цифровой чип датчика освещения с I2C интерфейсом от японской компании Rohm Semiconductor.

В этом тексте я представил обзор этого чипа. Перечислил его плюсы и минусы и проверил работу датчика в реальных условиях. Также представил возможные идеи устройств на основе датчика освещенности.



Читать далее

RTC: Обзор микросхемы часов DS3231

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели34K

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

Читать далее

Обзор платы Black Pill V2.0

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели19K

PCB Black Pill V2.0 - эта дешевая плата-малютка которая подходит для прототипирования электронных устройств.

В этом тексте я написал с какой стороны подходить к плате Black Pill V2.0. Перечислил особенности аппаратной реализации и перечислил плюсы и минусы этой платформы.

Читать далее

Информация

В рейтинге
87-й
Откуда
Москва, Москва и Московская обл., Россия
Зарегистрирован
Активность

Специализация

Инженер встраиваемых систем, DevOps-инженер
Старший
Git
Bash
CI/CD
C
Встраиваемая система
Программирование микроконтроллеров
Разработка программного обеспечения
Алгоритмы и структуры данных
Системное программирование
Разработка драйверов