All streams
Search
Write a publication
Pull to refresh
179
143.9

Embedded SW/Firmware Engineer

Send message

Декодирование IR сигнала с TV (или исследование пультовых лучей)

Level of difficultyEasy
Reading time7 min
Views5.8K

В этом тексте я написал про то как подключить к микроконтроллеру инфракрасный приёмник.

Как просто и легко распознавать сигнал с TV пульта.

Читать далее

ARM Cortex-M: пуск Memory Рrotection Unit (MPU)

Level of difficultyEasy
Reading time8 min
Views3.4K

В ARM Cortex-M (Arm v7-M) процессорах есть очень полезный блочок. Называется MPU (Memory Рrotection Unit). Попробуем разобраться что это такое и зачем нужно. .

Читать далее

Утилита CANcat (или CAN-Мессенджер)

Level of difficultyEasy
Reading time4 min
Views5.5K

Недавно я купил себе CAN-трансивер USB2CANFD_V1 и с удивлением обнаружил насколько же простой и лаконичный протокол заложили разработчики в прошивку STM32G0B1CBT6. Это протокол SLCAN. По сути serial CLI. И это оказалось очень кстати, ведь в программировании микроконтроллеров порой приходится работать с UDS протоколом. Как известно, UDS протокол работает поверх сетевого протокола ISO-TP. В этом тексте я написал под SLCAN простую отладочную утилиту для отладки процесса передачи данных по протоколу ISO-TP (ISO 15765-2).

Читать далее

Покраска Cтека (Stack Painting)

Level of difficultyEasy
Reading time5 min
Views2.1K

В процессорах ARM Cortex‑M стек растет от большего адреса к меньшему. То есть вниз. В этом тексте я написал как оценивать расходование стековой памяти прямо во время исполнения программы на микроконтроллере. Считать израсходованный стек можно определив соотношение непрерывно прописанных нулей к ненулевым значениям в диапазоне стековой памяти.

Читать далее

Электрический стол (или Зачем нужны ARM Cortex-M0)

Level of difficultyEasy
Reading time6 min
Views6.3K

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

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

В 2024 я купил себе в кабинет для работы стол с подъемной столешницей. Спустя год электроника подъёма внезапно перестала работать. Произошел полный отказ. Семи-сегментный индикатор стал показывать непонятный токен rE5. Кнопки перестали слушаться. Столешница застыла под потолком.

Я не знал, что мне делать. Пришлось разбираться, что же это такое за шайтан машина: электрический стол.

Читать далее

Обзор USB-CAN переходника USB2CANFD_V1

Level of difficultyEasy
Reading time6 min
Views9.2K

В этом тексте я произвел обзор широко распространенного переходника с USB на CAN? который называется USB2CANFD V1.

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

Читать далее

Медианный фильтр на двух бинарных кучах

Level of difficultyEasy
Reading time21 min
Views5.3K

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

В этом тексте я произвел разбор решения LeetCode задачи 480. Sliding Window Median в контексте реализации на языке программирования Си.

Читать далее

CAN-шина (Теория)

Level of difficultyEasy
Reading time12 min
Views16K

Вэтом тексте изложены базовые теоретические основы по CAN шине безотносительно к конкретному микроконтроллеру.

CAN — это двухпроводный, дифференциальный, последовательный, полудуплексный интерфейс для передачи бинарных данных между электронными платами (PCB). В качестве кабеля чаще всего применяют одну экранированную витую пару проводов с именами: CAN_L и CAN_H.

Читать далее

Подсветка колес велосипеда лазерным лучом (или Светопреставление)

Level of difficultyEasy
Reading time4 min
Views11K

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

Те кто катаются на велосипеде не раз ездили в темноте. В таких случаях надо как-то предупреждать окружающих пешеходов о приближении велосипеда. Ставить фары - классическое решение. Но фары быстро сажают батарею.

Я решил пойти другим путем. Как-то раз я обратил внимание на фотолюминесцентные наклейки. Фотолюминесцентные вещества - это такие вещества, которые заряжаются светом, а затем источают свет в темноте. У меня была рядом фиолетовая лазерная указка и я заметил, что лазер охотно заряжает такие наклейки.

Читать далее

Обзор USB-CAN переходника USBCAN-II C

Level of difficultyEasy
Reading time5 min
Views7K

В программировании микроконтроллеров часто приходится работать с CAN шиной.
В этом тексте я произвел обзор USB-CAN переходника USBCAN-II C.

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

В этом тексте я написал про достаточно хороший переходник с USB на CAN, который не раз выручал меня при отладке прошивок с CAN-трансивером. Называется изделие USBCAN-II C. Вот он перед вами.

Читать далее

ARM Cortex-M: Исполнение кода из RAM памяти

Level of difficultyEasy
Reading time6 min
Views5.2K

В программировании ARM Cortex-M микроконтроллеров обычно код исполняется из on-chip NOR Flash памяти.

Однако иной раз надо разместить Си-функции в RAM памяти.

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

Читать далее

Пуск Беспроводной CLI на Микроконтроллере

Level of difficultyEasy
Reading time6 min
Views4.9K

Иной раз возникает такая ситуация, что надо получить доступ к устройству висящему под потолком.

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

Читать далее

Пуск LittleFS (NVRAM с запретом до-записи flash)

Level of difficultyEasy
Reading time16 min
Views1.8K

Надо запустить NVRAM на микроконтроллере, где нет возможности дописывать интервалы памяти.

В этом тексте я показал как организовать NVRAM на основе широко распространенного программного компонента LittleFS.

Читать далее

Утилита R

Level of difficultyEasy
Reading time4 min
Views4.6K

В программировании часто приходится писать программные компоненты, которые, в общем очень похожи друг на друга по своей структуре и API.

В заметке я представил простую утилиту r.exe для авто-замены токенов в файлах и названиях файлов.

Читать далее

FC7300F8MDT: Lockstep (или как МК выявляет сбои)

Level of difficultyEasy
Reading time6 min
Views2K

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

Происходит избыточность (дублирование), которое позволяет обнаруживать и исправлять ошибки: выходные данные операций Lockstep можно сравнить, чтобы определить, произошла ли ошибка.

Читать далее

Задача о пересечении интервалов (или зачем программисту MК стабильная сортировка)

Level of difficultyEasy
Reading time7 min
Views7.5K

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

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

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

Читать далее

Настройка SSH для коммитов в репозиторий

Level of difficultyEasy
Reading time4 min
Views3K

Итак вам надо клонировать репозиторий с компанейского репозитория и git просит какие-то непонятные пароли.
Знакома ситуация?

В этой заметке я написал как настроить ssh ключи.

Читать далее

Задача о Выборе Билетов

Level of difficultyEasy
Reading time6 min
Views1.8K

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

Я решил положить этому конец и распетлять задачу при помощи ЭВМ.

Постановка задачи

Надо доехать из города A в город C. При этом надо совершить пересадку в городе B. На сайтах есть множество билетов в направлении A->B и B->C. Надо выбрать два билета так чтобы:

1--минимальное время пересадки

2--минимизировать стоимость поездки

3--минимизировать общее время в пути

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

Читать далее

Определение Аварии по MEMS Акселерометру

Level of difficultyEasy
Reading time6 min
Views1.7K

В настоящее время акселерометры встраивают куда только можно: в часы, автомобили, самокаты, LapTop-ы и прочее.

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

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

Читать далее

Цитаты про программирование и разработку в общем

Level of difficultyEasy
Reading time5 min
Views4.2K

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

Читать далее
1
23 ...

Information

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