All streams
Search
Write a publication
Pull to refresh
179
111.8

Embedded SW/Firmware Engineer

Send message

Калибровка MEMS Акселерометра [Часть 2]

Level of difficultyEasy
Reading time4 min
Views4.3K

В этом тексте я написал про то какая математика скрыта за алгоритмом калибровки трёх осевого MEMS акселерометров.

Этот текст является продолжением предыдущего текста Геометрия Стенда для Калибровки MEMS Акселерометра.

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

Читать далее

Геометрия Стенда для Калибровки MEMS Акселерометра

Level of difficultyEasy
Reading time5 min
Views3.9K

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

Эта фигура очень полезна при калибровки MEMS акселерометров. Поэтому и пришлось ее решить.

Читать далее

Обновление Прошивки из Make Скрипта

Level of difficultyEasy
Reading time4 min
Views2.1K

В этом тексте показано как можно обновить прошивку из-под GNU Make скрипта.

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

Вот например можно на GNU Make написать код загрузки *.bin (аря) в микроконтроллер

Легко...

Читать далее

Конечный Aвтомат Аппаратного I2C-Трансивера

Level of difficultyEasy
Reading time9 min
Views5.4K

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

Меня удивляет, что в оригинальном коде от вендоров микроконтроллеров программисты прошли мимо конечных автоматов при написании I2C кода внутри своих официальных uHAL. Непорядок...

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

Читать далее

Обзор Акселерометра LIS3DH

Level of difficultyEasy
Reading time8 min
Views6.4K

В этом тексте я написал о своем опыте работы с акселерометром LIS3DH. Это трёх-осевой цифровой 12-битный MEMS акселерометр с перегрузкой 16g и управлением по I2C.

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

Читать далее

Синтез Цифрового БИХ Фильтра Низких Частот

Level of difficultyEasy
Reading time5 min
Views5K

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

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

Далее я покажу некоторые приёмы расчета IIR фильтра по известным коэффициентам.

Читать далее

Декодирование BPSK Модуляции из Звука (или передача данных по воздуху)

Level of difficultyEasy
Reading time9 min
Views7.8K

В этом тексте я реализовал возможность передачи бинарных данных звуком через BPSK модуляцию. Написал инструкцию как это можно делать.

Вся обработка происходит в post processing режиме на PC над записанным wav файлом.

Изучение ЦОС на примере работы со звуком - это доступная каждому возможность для экспериментов с различными алгоритмами DSP.

Читать далее

Звуковой Фазовый Дальномер (Микрофон = Датчик Расстояния)

Level of difficultyEasy
Reading time8 min
Views6.7K

Что если из микрофона можно сделать пассивный дальномер?

В этом тексте я проверил работу фазового детектора для звука.

Я собрал прототип фазового дальномера из двух обыкновенных мобильных телефонов.

Читать далее

Стилистический анализатор: синхронизация объявлений и определений static функций

Level of difficultyEasy
Reading time9 min
Views1.9K

Представлена утилита-надзиратель, что последовательность определения static функций совпадает с последовательностью объявляения static функций.

Читать далее

Аппаратный таймер в качестве датчика звука

Level of difficultyEasy
Reading time3 min
Views3.3K

В разработке электроники в состав которой входит источник звука бывает нужно делать тест на наличие звука.

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

Читать далее

Стилистический Анализатор: Синхронизация порядка объявлений и определений функций

Level of difficultyEasy
Reading time8 min
Views1.2K

У нас в организации есть обязательное правило оформления исходников, которое звучит так:

Порядок объявления С-функций должен совпадать с порядком определения С-функций.

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

Читать далее

Интеграция Стилистического Анализа в общий Make Скрипт Сборки Проекта

Level of difficultyEasy
Reading time6 min
Views1.6K

В некоторых компаниях есть внутренние требования к стилю оформления исходных кодов на Си.

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

Читать далее

Как Выигрывать в Игре Быки и Коровы (Метод Выбитых Зубов)

Level of difficultyEasy
Reading time2 min
Views4.5K

Существует старинная народная логическая игра. Называется быки и коровы. Её ещё называют mastermind.

В этом тексте я представил мой алгоритм для поиска решения в этой игре. Я назвал этот метод: Матрица возможных решений.

Суть алгоритма покажу в частном виде, то есть на примере.

Читать далее

Доплеровское Cмещение Несущей Спутников GPS

Level of difficultyEasy
Reading time5 min
Views3.6K

В этом тексте я намерен выяснить, как быстро меняется частота несущей спутников GPS в результате эффекта Доплера.

Также намерен выяснить в каких диапазонах стоит ожидать варьирование значения несущей частоты для GPS спутников и почему. Задачу буду решать в упрощенном виде, численно.

Для решения этой задачи достаточно обыкновенной школьной математики и физики.

Читать далее

Дымовая Завеса в Eclipse IDE

Level of difficultyEasy
Reading time4 min
Views2.2K

Прошивки часто пишут в Eclipse.

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

Именно этот аргумент огромная fun база Eclipse плагинов и приводит в качестве главного за Eclipse плагины.

В этом же тексте я написал как активировать эту пресловутую опцию даже при сборке сторонними скриптами. Причем любыми.

Читать далее

Нельзя Просто Так Пойти и Купить Овцу (или Потёмкинская Деревня в Коде)

Level of difficultyEasy
Reading time12 min
Views8.6K

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

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

Как сказал мой коллега: "Формализм при ревью уже перешёл все рамки здравого смысла."

Читать далее

Пуск I2S Трансивера на Artery [часть 2] (DMA, FSM, PipeLine)

Level of difficultyEasy
Reading time9 min
Views3K

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

Да... Именно так. А также зачем программисту микроконтроллеров конвейеры и цифровые фильтры.

В тексте изложено про то, как источать звук при помощи I2S + DMA.

Читать далее

Интеграция clang-format в Процесс Сборки

Level of difficultyEasy
Reading time5 min
Views3.3K

Есть такая тема, как автоматическое выравнивание отступов в исходных текстах программ на Си или С++. Притом для этого есть специальные утилиты. Например clang-format или GNU indent.

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

Цель данного текста- показать, как интегрировать clang-format в процесс сборки прошивки. Просто в одно касание и выровнять код, и собрать бинари.

Читать далее

Пуск I2S трансивера на Artery

Level of difficultyEasy
Reading time17 min
Views4.5K

В этом тексте я написал про то, как самому написать System Software уровня HAL для ARM Cortex-M4 совместимого микроконтроллера.

Как отлаживать такую работу и на что обратить внимание при запуске I2S на Artery MCU.

Читать далее

Как Проинициализировать Микроконтроллер [часть 2]

Level of difficultyEasy
Reading time8 min
Views4.4K

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

В этом тексте я написал как автоматически выявить правильную последовательность инициализации

Читать далее

Information

Rating
63-rd
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