Как стать автором
Обновить
113
63.8

Embedded SW/Firmware Engineer

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

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

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

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

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

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

Читать далее
Всего голосов 25: ↑24 и ↓1+31
Комментарии68

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

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

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

Читать далее
Всего голосов 7: ↑5 и ↓2+7
Комментарии21

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

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

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

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

Читать далее
Всего голосов 7: ↑4 и ↓3+5
Комментарии52

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

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров935

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

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

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

Читать далее
Всего голосов 4: ↑3 и ↓1+7
Комментарии28

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

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

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

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

Читать далее
Всего голосов 8: ↑4 и ↓4+3
Комментарии32

Как Выигрывать в Игре Быки и Коровы

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

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

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

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

Читать далее
Всего голосов 7: ↑5 и ↓2+6
Комментарии10

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

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров2.6K

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

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

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

Читать далее
Всего голосов 7: ↑5 и ↓2+5
Комментарии9

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

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

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

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

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

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

Читать далее
Всего голосов 7: ↑3 и ↓4+3
Комментарии21

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

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

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

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

Читать далее
Всего голосов 18: ↑8 и ↓10+1
Комментарии84

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

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

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

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

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

Читать далее
Всего голосов 13: ↑12 и ↓1+15
Комментарии23

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

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

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

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

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

Читать далее
Всего голосов 14: ↑5 и ↓9+2
Комментарии25

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

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

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

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

Читать далее
Всего голосов 10: ↑7 и ↓3+8
Комментарии14

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

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

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

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

Читать далее
Всего голосов 11: ↑7 и ↓4+8
Комментарии27

Решатель Игры Set на Микроконтроллере

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

Существует одна остроумная настольная игра, называется Set. Это игра на внимание.

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

Читать далее
Всего голосов 12: ↑11 и ↓1+16
Комментарии19

Техникум: Автоматическое Aрхивирование Aртефактов

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

В программировании микроконтроллеров на выходе получается довольно много артефактов. Всё это надо как-то связать и заточить в архив, чтобы всегда можно было ассоциировать *.hex с нужным для него *.map и *.elf.

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

В этом тексте я написал как это можно провернуть средствами утилиты GNU Make.

Читать далее
Всего голосов 11: ↑5 и ↓6+3
Комментарии39

Управление напряжением PWM сигналом (PWM+RC=DAC)

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

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

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

В этом тексте я написал как мне это удалось.

Читать далее
Всего голосов 15: ↑13 и ↓2+18
Комментарии182

Как составить функцию инициализации микроконтроллера (Топологическая сортировка графов утилитой Make)

Уровень сложностиПростой
Время на прочтение14 мин
Количество просмотров5.8K

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

Дело в том, что прошивка состоит из набора программных компонентов. Каждый компонент вызывает функции из других программных компонентов. Так происходит пере использование кодовой базы.

Чтобы всё это работало надо соблюдать правильный порядок инициализации.

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

По сути это топологическая сортировка ориентированного графа зависимостей программных компонентов.

Читать далее
Всего голосов 14: ↑13 и ↓1+19
Комментарии50

Архитектура Xорошего Кода Прошивки (Массив-Наше Всё)

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

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

Основная идея - массив наша основная скрепа.

Главные достоинства представленной архитектуры - это простота поддержки, сопровождения и масштабирования кодовой базы.

Читать далее
Всего голосов 13: ↑11 и ↓2+14
Комментарии33

КодоГенератор Линейных Отображений (как ускорить создание ASIC драйвера)

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров1.8K

В программировании микроконтроллеров на Си часто приходится писать драйверы для умных и навороченных ASIC чипов с управлением по I2C/SPI/MDIO интерфейсам.

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

Такие чипы всегда оперируют с реальными физическими величинами. Одновременно с этим ячейки памяти этих ASIC чипов - дискретные, двоичные. Поэтому все производители микросхем кодируют эти переменные бинарными кодами разной разрядности.

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

Читать далее
Всего голосов 7: ↑4 и ↓3+1
Комментарии31

Обзор AудиоКодека NAU8814YG

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров3.9K

Аудио кодек по сути это цифро-аналоговое устройство, где есть пара ADC + DAC. На входе обычно есть сумматор на операционных усилителях для подмешивания аналогово сигнала с разных проводов, есть еще аналоговые усилители. Высокоскоростной многоканальный интерфейс: I2S или TDM. И интерфейс I2C для того чтобы всем этим добром управлять.

В этой заметке я написал о своём опыте работы с ASIC аудиокодеком NAU8814.

Читать далее
Всего голосов 18: ↑15 и ↓3+17
Комментарии19
1
23 ...

Информация

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

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

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