Pull to refresh
110
58.1

Embedded SW/Firmware Engineer

Send message

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

Level of difficultyEasy
Reading time8 min
Views4.1K

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

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

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

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

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

Level of difficultyEasy
Reading time5 min
Views1.6K

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

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

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

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

Читать далее
Total votes 6: ↑4 and ↓2+2
Comments23

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

Level of difficultyEasy
Reading time10 min
Views3.3K

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

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

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

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

Level of difficultyEasy
Reading time4 min
Views5.8K

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

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

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

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

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

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

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 time7 min
Views1.9K

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

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

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

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

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

Level of difficultyEasy
Reading time7 min
Views2.8K

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

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

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

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

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

Level of difficultyEasy
Reading time5 min
Views2.9K

Как известно канальные 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
Views4.9K

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

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

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

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

Level of difficultyEasy
Reading time6 min
Views6K

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

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

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

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

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

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

Level of difficultyEasy
Reading time21 min
Views4.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.7K

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

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

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

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

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

Level of difficultyEasy
Reading time6 min
Views4.1K

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

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

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

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

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

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

Зачем Программисту Микроконтроллеров Численные Методы?

Level of difficultyEasy
Reading time4 min
Views8.7K

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

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

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

Читать далее
Total votes 21: ↑19 and ↓2+20
Comments33

Изометрическое Черчение в Inkscape

Level of difficultyEasy
Reading time3 min
Views9.4K

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

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

Редакторы 3D черчения как правило платные. При этом есть бесплатные программы для 2D черчения. В некоторой степенью работать на плоскости удобнее, чем теряться в 3D комнате.

В этом тексте представлены приёмы для 3D черчения в 2D редакторе Inkscape.

Читать далее
Total votes 15: ↑11 and ↓4+12
Comments40

Как Чинить Программные Ошибки?

Level of difficultyEasy
Reading time6 min
Views3.7K

В программировании микроконтроллеров регулярно приходится занимаются починкой bug(ов).

При этом все bug(и) уникальные. Поиск причины каждой конкретной осечки это скорее искусство. Починка программ сродни работы детектива.

Есть ли универсальные приемы того как искать причину программных ошибок?

Считаю, что да. Подробности в тексте...

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

Разбор примера BLE Audio от Nordic Semiconductor (или переходник I2S->BLE-Audio)

Level of difficultyMedium
Reading time16 min
Views2.2K

Обзор технологии беспроводной передачи данных BLE 5.3.
Представлен разбор примера Ble Audio от Nordic Semiconductor для микроконтроллера nRF5340. Это пример передачи звука по Bluetooth 5.3.

Читать далее
Total votes 7: ↑6 and ↓1+6
Comments2

Зачем Программисту Микроконтроллеров Математическая Статистика? (или так ли хороши UWB трансиверы?)

Level of difficultyEasy
Reading time5 min
Views6.9K

Настал день, когда мне для работы программистом микроконтроллеров наконец пригодилась математическая статистика из ВУЗ(овского) курса по теории вероятностей.

Есть очень интересная технология для автоматического радиоизмерения расстояния. Технология основана на UWB трансиверах. Позволяет измерять время пролёта радиоволны.

В этом тексте написал как я исследовал измерения расстояния, при помощи ASICа UWB трансивера DWM1000.

Читать далее
Total votes 12: ↑12 and ↓0+12
Comments23

Как собрать Си программу в OS Windows

Level of difficultyEasy
Reading time9 min
Views11K

Иногда возникает ситуация, когда надо что-то посчитать согласно сложному алгоритму прямо на LapTop PC. При этом сам алгоритм написан на Си.

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

Да всё, что угодно! То есть Вы хотите использовать язык Си как гибкий и быстрый калькулятор в Windows.

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

Читать далее
Total votes 21: ↑8 and ↓13-5
Comments56

Information

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