Pull to refresh
115
32

Embedded SW/Firmware Engineer

Send message

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

Level of difficultyEasy
Reading time16 min
Views1.9K

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

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

Читать далее
Total votes 9: ↑6 and ↓3+6
Comments6

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

Level of difficultyEasy
Reading time7 min
Views3K

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

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

Читать далее
Total votes 9: ↑6 and ↓3+7
Comments24

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

Level of difficultyEasy
Reading time7 min
Views1.8K

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

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

Читать далее
Total votes 12: ↑11 and ↓1+16
Comments18

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

Level of difficultyEasy
Reading time4 min
Views1.4K

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

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

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

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

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

Level of difficultyEasy
Reading time8 min
Views9.5K

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

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

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

Читать далее
Total votes 15: ↑13 and ↓2+18
Comments181

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

Level of difficultyEasy
Reading time14 min
Views5.4K

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

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

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

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

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

Читать далее
Total votes 14: ↑13 and ↓1+19
Comments50

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

Level of difficultyEasy
Reading time9 min
Views7.1K

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

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

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

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

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

Level of difficultyEasy
Reading time5 min
Views1.8K

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

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

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

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

Читать далее
Total votes 7: ↑4 and ↓3+1
Comments31

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

Level of difficultyEasy
Reading time10 min
Views3.6K

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

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

Читать далее
Total votes 18: ↑15 and ↓3+17
Comments17

Гидротаранный Насос

Level of difficultyEasy
Reading time4 min
Views6.4K

Существует такое остроумное приспособление как гидротаранный насос. Его ещё называют гидро ударный насос или hydraulic ram.

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

Это, пожалуй, единственный в технике пример, когда гидроудар приносит пользу, а не вред.

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

Читать далее
Total votes 23: ↑22 and ↓1+29
Comments22

Зачем Программисту Микроконтроллеров Линейная Алгебра (или Как Найти Угол Между Векторами?)

Level of difficultyEasy
Reading time7 min
Views12K

В программировании микроконтроллеров часто возникает задача найти угол между векторами.

Это всяческие встраиваемые системы, где есть подвижные, вращающиеся детали: PTZ камеры, поворотные платформы для радаров, турели, ветрогенераторы, солнечные панели, SDR обработка и прочее.

В данном тексте я приведу простое и понятное решение задачи вычисления угла между векторами на языке программирования Си.

Читать далее
Total votes 21: ↑18 and ↓3+21
Comments105

Зачем Программисту Микроконтроллеров Диофантовы Уравнения

Level of difficultyEasy
Reading time4 min
Views12K

Школьные уроки математика не прошли даром.

Вот, настал день, когда впервые пришлось решить на работе Диофантовое уравнение.

Читать далее
Total votes 21: ↑20 and ↓1+23
Comments60

Почему Сборка с Помощью Есlipse ARM GCC Плагинов это Тупиковый Путь

Level of difficultyEasy
Reading time8 min
Views2.1K

В программировании микроконтроллеров часто используют Eclipse с плагинами.
Главным образом от незнания языков скриптов сборки (Make, Cmake, Ninjia и т п).

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

И как можно частично компенсировать недостатки Eclipse с плагинами.

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

Автоматическая Генерация Конфигураций для Make Сборок (или Лучшее Программирование — Конфигурирование)

Level of difficultyEasy
Reading time7 min
Views3.2K

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

Проблема в том, что конфигов становится так много, что можно нечаянно забыть какой-то важный конфиг.

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

Читать далее
Total votes 10: ↑8 and ↓2+6
Comments13

Обзор Протокола ISO-TP [ISO 15765-2]

Level of difficultyEasy
Reading time5 min
Views3.5K

Как известно канальные CAN пакеты могут быть размером максимум 8 байт. Одновременно с этим, с более высоких уровней модели OSI могут поступить запросы передать огромные пакеты  [ jumbo frame(ы) ]. Как же разрешить это противоречие?

Эту ситуацию призван распетлять протокол ISO-15765-2 (или попросту ISO-TP ).

В этом тексте я выполнил обзор протокола ISO-TP.

Читать далее
Total votes 9: ↑7 and ↓2+8
Comments23

Обзор Переходника USB-CAN (SYS TEC USB-CANmodul1)

Level of difficultyEasy
Reading time4 min
Views5.6K

Как известно, в широкой продаже не существует компьютеров с интерфейсов CAN. Зато во всех настольных компьютерах и LapTop(ах) есть USB. В связи с этим для отладки оборудования с CAN нужны всяческие переходники USB-CAN.

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

Читать далее
Total votes 5: ↑3 and ↓2+1
Comments23

Датчик объёма на основе резонанса Гельмгольца (микрофон = датчик объёма)

Level of difficultyEasy
Reading time6 min
Views6.2K

Что общего между скрипкой и крылатой ракетой ФАУ-1?

Ответ прост - резонатор Гельмгольца.

На основе физических эффектов можно создавать различного рода датчики.

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

Читать далее
Total votes 27: ↑26 and ↓1+34
Comments31

ToolChain: Настройка сборки прошивок для микроконтроллеров Artery из Makefile

Level of difficultyEasy
Reading time22 min
Views5.1K

Настало время освоить очередное семейство микроконтроллеров: от компании Artery Technology.

Компания Artery Technology уже возвела полноценную экосистему для своих процессоров. Есть фирменные отладочные платы, программаторы, документация, исходные коды MCAL и даже кодо генераторы.

В этом тексте я представил пошаговую инструкцию того как запрограммировать микроконтроллер Artery.

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

Обзор Датчика Ультрафиолетового Излучения LTR-390UV-01

Level of difficultyEasy
Reading time5 min
Views2.9K

Существует ASIC чип LTR390. Это датчик ультрафиолетового излучения.

Я разрабатываю Солнечный навигатор. Признаком присутствия естественного света у поверхности Земли может как раз служить факт наличия ультрафиолетовых лучей. Поэтому и пришлось разбираться как подключить датчик УФ к микроконтроллеру.

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

Читать далее
Total votes 11: ↑10 and ↓1+10
Comments8

Автоматическое Обновление Версии Прошивки

Level of difficultyEasy
Reading time6 min
Views4.3K

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

Какие-то сборки уходят в релиз, а какие-то в циркулируют на разных электронных платах внутри предприятия.

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

Проблема в том, что вручную обновлять номер версии прошивки очень утомительно.

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

Подробности...
Total votes 14: ↑7 and ↓7+3
Comments51

Information

Rating
179-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