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

Программирование микроконтроллеров *

Учимся программировать микроконтроллеры

Сначала показывать
Порог рейтинга
Уровень сложности

О переходе на QingKeV4. Тесты CoreMark в разных областях флэша для СH32V2/V3 и что же такое non-zero wait

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

Про внешний SPI флэш внутри чипов WCH уже везде написали, ситуацию с реальным объемом я описывал. Но какая там скорость и как она влияет на производительность системы? WCH на эту тему неоднократно высказывался, правда по китайский и в ответах саппорта на wch.cn:) Общий смысл того, что мне поведал Google переводчик: для кода используйте кэшируемый флэш zero‑wait, все остальное это для пользовательских данных, но если вы уж прям не влезаете в zero-wiat, то можно и в non zero-wait залезть. Крайне содержательно. Чтобы окончательно раскрыть тему, я вооружился тестами производительности CoreMark и в целом получил ответы на 2 своих главных вопроса: какая частота доступа к физическому SPI флэшу и как стратегия его применения в реальных проектах. Сейчас расскажу.

Далее

Собираем демо чемодан из подручных остатков к выставке WBCE2025

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

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

Читать далее

Статический Анализ С-кода

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

Существуют бесплатные статические анализаторы для Си кода. Среди них splint и cppcheck.

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

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

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

Читать далее

Дискретные тригонометрические функции, машинный эпсилон и автоматическое дифференцирование

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

Попалась мне недавно статья Синус, косинус, квадратный корень FixedPoint. Автор размышляет как можно не затратно рассчитывать координаты и углы в микроконтроллере. Попробовал я подсказать автору пару аппроксимаций, но он оказался разговорчив только на тему "упадка автоматизации в РФ", а по делу как то не сложился диалог. Посмотрел, такие статьи не редкость. Например, очень хорошая статья Как посчитать синус быстрее всех на Xабре. В общем разгрузил себе голову на майских праздниках от главного хобби - геометрической алгебры.

В процессе изучения всего этого, возник у меня вопрос - а зачем вообще нужно аппроксимировать sin,cos, arctan и еще и в привязке к числу в двоичной системе, если есть декартовы координаты?

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

Автоматическим дифференцированием можно назвать любую конечную разность, например dy=(y(x+ε)-y(x-ε))/(2*ε). Разность взята центральная, так как она дает меньшую погрешность.

 ε это машинный ноль. За счет округления до младшего бита его главное свойство: ε^2=0.

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

Читать далее

Спидометр для электромопеда на микроконтроллере PIC16F628A

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров6.1K


Привет, Хабр! Несколько лет назад у меня был самодельный 48-вольтовый электромопед на свинцово-кислотных аккумуляторах, переделанный из Риги-12.

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

На примере этой несложной поделки я расскажу и покажу вам последовательность разработки и воплощения любительского микроконтроллерного устройства.
Читать дальше →

Код, который светится: архитектура минималистичных световых скетчей

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

Микроконтроллеры, светодиоды, и немного кода — вот и вся палитра для минималистичного цифрового искусства. В статье подробно рассказывается, как выстроить архитектуру крошечных, но выразительных световых анимаций с использованием C++, платформы STM32 и адресных светодиодов WS2812. Немного философии, немного инженерии — и свет оживает по команде вашего кода.

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

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

Читать далее

Измерение собственного напряжения питания микроконтроллера

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

Началось все с того, что при проектировании своего устройства на микроконтроллере ATtiny 85, которое должно было работать от встроенного li‑ion аккумулятора, я изначально не задавался целью измерения заряда АКБ, поскольку в этом не было необходимости. Однако, собрав все устройство на печатной плате, я подумал над тем, почему бы не добавить такую возможность.

Прочитав в Интернете, как это можно было реализовать, стало ясно, что сделать это вряд ли удастся, поскольку все порты PB[0:5] уже были заняты и, следовательно, не было возможности применения АЦП с аналогового пина (при чем порт PB0 я не мог настроить на вход опорного напряжения AREF - он должен был использоваться как управляющий выход).

Долгое изучение состояния регистров АЦП в datasheet на ATTiny 85 привело меня к следующей идее: в качестве опорного напряжения может быть выбрано само напряжение питания VCC (биты REFS [0:2] регистра ADMUX установлены в 0), а в качестве измеряемого ‑ напряжение VBG с внутреннего стабилизатора в 1.1В (биты MUX [3:0] регистра ADMUX установлены соответственно в 1100). То есть, для измерения напряжения питания не нужно ничего, кроме, собственно, самого питания VCC!

Читать далее

Зачем программисту дизассемблер в 2025: отладка на слепую под редкие MCU

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

Даже в 2025 году, когда вокруг нейросети, автогенерация кода и IDE с предиктивным интеллектом, работа с редкими микроконтроллерами всё ещё может обернуться настоящим хардкором. Особенно, если речь идёт о «слепой» отладке без отладчика, когда в арсенале только прошивка, HEX-файл и пара байтов на выводе. В этой статье — личный опыт, много хардкора, дизассемблирование вручную и поиск глюка в 2 КБ бинаря.

Когда говорят «отладка», в 2025 году чаще всего имеют в виду жмяк на F5 в Visual Studio Code или лог с CI/CD. Но в embedded-мире, особенно если ты копаешься в системах с 8-битным контроллером 2006 года выпуска, это слово может означать кое-что пострашнее. Например — «прошивка вылетает на 4-й секунде, данных в UART нет, отладочного интерфейса нет, документации почти нет, а заказчик просит сделать "как раньше работало"». И вот тут начинается старый добрый reverse engineering.

Читать далее

Простейший инфракрасный счётчик на Arduino. С мелкими гадостями

Время на прочтение6 мин
Количество просмотров3.7K

Здесь описывается очень простой (возможно, самый простой в мире) самодельный однолучевой горизонтальный инфракрасный счётчик (людей) на Arduino. Его сенсорная система содержит лишь  инфракрасный светодиод, фотодиод, биполярный транзистор и три резистора.  Руководствуясь описанием, счётчик сделать совсем легко.

Но будьте бдительны: в описание я заложил мелкие гадости. А куда и какие - не хочу заранее сообщать. Долой скуку! Да здравствуют приключения!

Как и в обычном квесте, реальной опасности здесь никакой нет. Даже если вы не заметите заложенные “мины”, и всё сделаете в точности так, как тут коварно предложено, струйка дыма из самоделки не пойдёт. Ни один её элемент вообще никак не пострадает. Обещаю. При любом раскладе в итоге удастся без потерь наставить это изделие на путь истинный. (На пути истинном оно прекрасно работает. Проверено.)

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

Итак, начинаем!

Читать далее

Обработка аудио на ESP32

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

В этой статье я хочу поделиться своим опытом портирования проекта распознавания музыкальных жанров аудиозаписей на ESP32-C3. Исходный проект взят из репозитория книги TinyML-Cookbook_2E.
При анализе речи или других звуков важно выделить такие характеристики, которые отражают строение сигнала, но при этом не зависят от конкретных слов, громкости и других мешающих факторов. Для этого используют cepstrum, mel-cepstrum и MFCC - это шаги преобразования, которые переводят звук в удобную для анализа форму.

Читать далее

Быстрое приближённое умножение и деление чисел с плавающей точкой

Уровень сложностиСложный
Время на прочтение27 мин
Количество просмотров6.8K

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

Читать далее

Плеер для слабовидящих на ESP32

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

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

Читать далее

Одноплатный компьютер Z80 черпает вдохновение у Пикассо

Уровень сложностиСредний
Время на прочтение1 мин
Количество просмотров23K

Пикассо и микропроцессор Z80 — это не две вещи, о которых мы часто думаем одновременно. Один — это знаменитый художник, родившийся в 19 веке, а другой — популярный ЦП, который помог запустить движение микрокомпьютеров. И все же последний вдохновил создание компьютера, основанного на первом. Познакомьтесь с RC2014 Mini II Picasso!

Как рассказывает [concretedog], по сути, вы смотрите на RC2014 Mini II. Это одноплатный ретрокомпьютер Z80, который можно использовать для выполнения интересных задач, таких как запуск BASIC, Forth или CP/M. Однако интересное начинается с компоновки. Это та же основная схема, что и у RC2014, но она получила довольно художественный стиль. Микросхемы расположены в разных направлениях, как и пассивные компоненты; даже некоторые резисторы «танцуют» друг над другом. Набор также является ограниченной серией, и каждый комплект имеет уникальное сочетание цветов для шелкографии, разъемов и светодиодов. Для заинтересованных доступны наборы через Z80Kits .

Всем нравится хороший художественный дизайн печатных плат, приятно видеть, как дизайнеры RC2014 напоминают нам, что компоненты не обязательно должны располагаться на жесткой сетке; они тоже могут танцевать, колебаться и «падать» повсюду, как глаза или нос на классическом произведении Пикассо.

Однако это странно; в каком-то смысле, несмотря на вдохновение Пикассо, всё это выглядит явно в духе 1990-х. В любом случае, если вы создаете какие-либо подобные необычные сборки, вдохновленные Пикассо или любым другим испанским мастером, не стесняйтесь сообщить об этом в интернете.

Читать далее

Ближайшие события

АОН. Оживляем раритетный телефон из девяностых

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров8.1K
Приветствую всех!

Многие из нас помнят три самых популярных девайса производства кооперативов: конвертеры PAL->SECAM, компьютеры ZX Spectrum и телефоны с АОН. Последние появились где-то в конце восьмидесятых, а к середине девяностых были широко распространены и встречались практически у всех. Вокруг этих девайсов было своё сообщество, у них были свои любители и свои разработчики, прямо как у отечественных персональных компьютеров на схожей элементной базе.

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



Итак, в сегодняшней статье поговорим про то, как работали такие девайсы. Заодно рассмотрим парочку их представителей, увидим их в работе и заставим их что-то отображать спустя столько лет после ухода в историю «тех» АТС. Традиционно будет много интересного.
Читать дальше →

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

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

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

Делюсь идеей построения измерителя токов.

Читать далее

Настройка ToolChain-а Cборки Прошивок для MIK32 (MIK32 + C+ GCC + GNU Make + OpenOCD)

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

В этом тексте я написал про то, как настроить рабочее окружение для разработки на российском микроконтроллере MIK32 (K1948BK018).

Читать далее

Релиз WB-Cloud On-Premise, Алиса из коробки и другие новости от Wiren Board

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

На WBCE 2025 Александр Дегтярев, руководитель отдела интеграций, представил обзор ключевых обновлений в экосистеме компании. Мы уже публиковали доклад Евгения Богера об  аппаратных новинках, а также рассказали о самых интересных стендах выставки. Сейчас очередь за софтом, а конкретнее облаком, которое превращает Wiren Board в законченную платформу для автоматизации.

Облачные сервисы в последнее время стали важной частью предложения Wiren Board. В статье мы рассмотрим, что здесь появилось нового.

Читать далее

Когда хочется портировать старые игры, но нет ни сил, ни времени: запускаем отсекатель лучей на RISC-V RV32I

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

Всех, кто работает с софт-ядрами, наверное, можно разделить на две категории: первые хотят запустить на своем ядре Linux, вторые — DOOM. Я отношусь ко второй: идея запустить DOOM на ядре YRV, что я синтезирую на отладках, любезно предоставленных FPGA-Systems.ru, преследует меня постоянно и не дает спать.

Как запустить DOOM с ходу, непонятно, ведь у меня все-таки некоммерческий микроконтроллер. Поэтому начну с подготовительного упражнения, чтобы понять, что возможно реализовать на аппаратной части. Когда мы говорим про DOOM, то вспоминаем другие игры любимой компании id Software — Wolfenstein 3D, Catacomb 3D и Hovertank 3D. В них все начинается с алгоритма отсечения лучей (raycasting), с которым и будем поработать. С raycasting можно получить и doom-образный геймплей, надо лишь улучшить разрешение и текстуры.

Читать далее

PicoCalc: назад в Бейсик

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

Изобретательные китайские товарищи из ClockworkPi недавно анонсировали выход нового устройства. Если предыдущий продукт, uConsole, базировался на RaspberryPi CM4 и работал под управлением Linux, то данный продукт, во-первых, более концептуальный, во-вторых, в силу концепции, менее производительный, и в-третьих, что важно, приехал в РФ гораздо быстрее, примерно за месяц.

Читать далее

Evertop: ультра-экономичный ПК на солнечной батарее

Время на прочтение5 мин
Количество просмотров6.7K

Evertop — это портативный ПК, эмулирующий IBM XT с процессором 80186 и 1МБ RAM. На нём можно запускать DOS, Minix и некоторые другие ОС из 80-х. Можно запустить и Windows до версии 3.0. Благодаря мощному и при этом экономичному микроконтроллеру, E-Ink дисплею, батареям на 10 000 мАч и реализации исключительных мер энергосбережения, он может работать на одном заряде до сотен и даже тысяч часов. Прибавьте сюда встроенную солнечную батарею и вы сможете использовать его бесконечно в условиях отсутствия сети, не беспокоясь о подзарядке.
Внутри много фото