Что если я скажу, что из микрофона можно сделать пассивный дальномер?
В этом тексте я проверил работу фазового детектора для звука.
Я собрал прототип фазового дальномера из двух обыкновенных мобильных телефонов.
Embedded SW/Firmware Engineer
Что если я скажу, что из микрофона можно сделать пассивный дальномер?
В этом тексте я проверил работу фазового детектора для звука.
Я собрал прототип фазового дальномера из двух обыкновенных мобильных телефонов.
Представлена утилита-надзиратель, что последовательность определения static функций совпадает с последовательностью объявляения static функций.
В разработке электроники в состав которой входит источник звука бывает нужно делать тест на наличие звука.
В этом тексте я показал простой способ провернуть такой тест.
У нас в организации есть обязательное правило оформления исходников, которое звучит так:
Порядок объявления С-функций должен совпадать с порядком определения С-функций.
В этом тексте представлен алгоритм работы консольной программы, которая автоматически выявляет нарушения этого странного правила.
В некоторых компаниях есть внутренние требования к стилю оформления исходных кодов на Си.
В этом тексте я показал как можно интегрировать проверку стандарта оформления исходных кодов в общий процесс сборки программы, так чтобы вместе с бинарём получить и отчет с указанием мест нарушений.
Существует старинная народная логическая игра. Называется быки и коровы. Её ещё называют mastermind.
В этом тексте я представил мой алгоритм для поиска решения в этой игре. Я назвал этот метод: Матрица возможных решений.
Суть алгоритма покажу в частном виде, то есть на примере.
В этом тексте я намерен выяснить, как быстро меняется частота несущей спутников GPS в результате эффекта Доплера.
Также намерен выяснить в каких диапазонах стоит ожидать варьирование значения несущей частоты для GPS спутников и почему. Задачу буду решать в упрощенном виде, численно.
Для решения этой задачи достаточно обыкновенной школьной математики и физики.
Прошивки часто пишут в Eclipse.
В Eclipse есть такая возможность как серая дымка неиспользуемых сейчас кусков кода. Якобы то, что не используется в коде визуально становится серой зоной отчуждения.
Именно этот аргумент огромная fun база Eclipse плагинов и приводит в качестве главного за Eclipse плагины.
В этом же тексте я написал как активировать эту пресловутую опцию даже при сборке сторонними скриптами. Причем любыми.
В этом тексте я собрал самые странные правила и рекомендации оформления исходных кодов, которые только попадались мне на работе в разных реальных компаниях.
Вот буквально несколько настоящих примеров из жизни. Парад нелепости.
В этом тексте вы узнаете, что общего между I2S трансивером и оладьями.
Да... Именно так. А также зачем программисту микроконтроллеров конвейеры и цифровые фильтры.
В тексте изложено про то, как источать звук при помощи I2S + DMA.
Есть такая тема, как автоматическое выравнивание отступов в исходных текстах программ на Си или С++. Притом для этого есть специальные утилиты. Например clang-format или GNU indent.
В этом тексте я написал, как встроить процесс выравнивания исходных кодов прямо в систему сборки проекта.
Цель данного текста- показать, как интегрировать clang-format в процесс сборки прошивки. Просто в одно касание и выровнять код, и собрать бинари.
В этом тексте я написал про то, как самому написать System Software уровня HAL для ARM Cortex-M4 совместимого микроконтроллера.
Как отлаживать такую работу и на что обратить внимание при запуске I2S на Artery MCU.
Программа это реализация алгоритма. А алгоритм это упорядоченная последовательность действий. Поэтому очень большое значение имеет правильный порядок исполнения программы.
В этом тексте я написал как автоматически выявить правильную последовательность инициализации
Существует одна остроумная настольная игра, называется Set. Это игра на внимание.
В этом тексте я показал, как я сконструировал автоматический решатель, чтобы всегда выигрывать в игру Set!
В программировании микроконтроллеров на выходе получается довольно много артефактов. Всё это надо как-то связать и заточить в архив, чтобы всегда можно было ассоциировать *.hex с нужным для него *.map и *.elf.
Логичным шагом является архивация всех этих файликов в *.tar архив. Один архив очень удобен при транспортировке программного обеспечения.
В этом тексте я написал как это можно провернуть средствами утилиты GNU Make.
В очередной тестировочной электронной плате появилась нужда выставлять напряжения на клеммах.
Существует очень остроумный способ собрать DAC используя PWM сигнал и аналоговый RC фильтр. На выходе будет желаемое напряжение. Причем, уровнем этого напряжения можно управлять цифровым образом из программы в микроконтроллере.
В этом тексте я написал как мне это удалось.
В программировании микроконтроллеров приходится определять порядок инициализации прошивки. Порядок тут всегда имеет значение.
Дело в том, что прошивка состоит из набора программных компонентов. Каждый компонент вызывает функции из других программных компонентов. Так происходит пере использование кодовой базы.
Чтобы всё это работало надо соблюдать правильный порядок инициализации.
В этом тексте я представил формальный алгоритм определения этого порядка.
По сути это топологическая сортировка ориентированного графа зависимостей программных компонентов.
В этом тексте я написал о некоторых подходах к организации кода для микроконтроллеров.
Основная идея - массив наша основная скрепа.
Главные достоинства представленной архитектуры - это простота поддержки, сопровождения и масштабирования кодовой базы.
В программировании микроконтроллеров на Си часто приходится писать драйверы для умных и навороченных ASIC чипов с управлением по I2C/SPI/MDIO интерфейсам.
Обычно перед запуском эти чипы надо правильным образом сконфигурировать.
Такие чипы всегда оперируют с реальными физическими величинами. Одновременно с этим ячейки памяти этих ASIC чипов - дискретные, двоичные. Поэтому все производители микросхем кодируют эти переменные бинарными кодами разной разрядности.
В этом тексте я показал как можно делать интерпретаторы этих величин.
Аудио кодек по сути это цифро-аналоговое устройство, где есть пара ADC + DAC. На входе обычно есть сумматор на операционных усилителях для подмешивания аналогово сигнала с разных проводов, есть еще аналоговые усилители. Высокоскоростной многоканальный интерфейс: I2S или TDM. И интерфейс I2C для того чтобы всем этим добром управлять.
В этой заметке я написал о своём опыте работы с ASIC аудиокодеком NAU8814.