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

Программирование микроконтроллеров *
Учимся программировать микроконтроллеры
Собираем демо чемодан из подручных остатков к выставке WBCE2025
Это краткая история о том, как за пару вечеров с помощью россыпи мелочевки с алиэкспресс, термопистолета и WAGO-вских клемм собрать демонстрационный чемодан к выставке.
Статический Анализ С-кода
Существуют бесплатные статические анализаторы для Си кода. Среди них splint и cppcheck.
Статический анализатор - это такая консольная программа, которая проверяет исходные коды до компиляции. Своего рода автоматическая инспекция программ.
В этом тексте я представил инструкцию про то, как интегрировать статический анализ кода в общий скрипт сборки проекта.
Суть этой короткой заметки в том, чтобы показать, как просто и лаконично происходит подключение разнообразных статических анализаторов к проекту, который собран скриптами сборки GNU Make.
Дискретные тригонометрические функции, машинный эпсилон и автоматическое дифференцирование

Попалась мне недавно статья Синус, косинус, квадратный корень FixedPoint. Автор размышляет как можно не затратно рассчитывать координаты и углы в микроконтроллере. Попробовал я подсказать автору пару аппроксимаций, но он оказался разговорчив только на тему "упадка автоматизации в РФ", а по делу как то не сложился диалог. Посмотрел, такие статьи не редкость. Например, очень хорошая статья Как посчитать синус быстрее всех на Xабре. В общем разгрузил себе голову на майских праздниках от главного хобби - геометрической алгебры.
В процессе изучения всего этого, возник у меня вопрос - а зачем вообще нужно аппроксимировать sin,cos, arctan и еще и в привязке к числу в двоичной системе, если есть декартовы координаты?
Из ответа на этот вопрос родилась идея этой статьи. Будет длинно, но если на примере подробно разбираться с работой машинного эпсилон и автоматическим дифференцированием, короче не получится. Следите за мыслью по ходу изложения. Начну с главного тезиса, и разверну по шагам как это работает на примере операций с единичной окружностью.
Автоматическим дифференцированием можно назвать любую конечную разность, например dy=(y(x+ε)-y(x-ε))/(2*ε). Разность взята центральная, так как она дает меньшую погрешность.
ε это машинный ноль. За счет округления до младшего бита его главное свойство: ε^2=0.
Эта статья по сути не более, чем описание основных моментов идеи. И если у кого то появится желание поставить эту идею на строгие математические рельсы, с удовольствием готов поучаствовать. Кто в этом случае опубликует финальную версию мне искренне не важно.
Спидометр для электромопеда на микроконтроллере PIC16F628A

Привет, Хабр! Несколько лет назад у меня был самодельный 48-вольтовый электромопед на свинцово-кислотных аккумуляторах, переделанный из Риги-12.
Для него был разработан специальный спидометр, смонтированный вместо крышки бензобака, переделанного в отсек для электроники. Во время движения прибор показывал скорость, а на остановке — пройденный путь.
На примере этой несложной поделки я расскажу и покажу вам последовательность разработки и воплощения любительского микроконтроллерного устройства.
Код, который светится: архитектура минималистичных световых скетчей

Микроконтроллеры, светодиоды, и немного кода — вот и вся палитра для минималистичного цифрового искусства. В статье подробно рассказывается, как выстроить архитектуру крошечных, но выразительных световых анимаций с использованием C++, платформы STM32 и адресных светодиодов WS2812. Немного философии, немного инженерии — и свет оживает по команде вашего кода.
Можно потратить годы, чтобы написать красивый рендерер. А можно взять 8 строк кода, светодиодную ленту и микроконтроллер, чтобы ночью на стене заиграла световая поэма. Эта статья — про второй путь.
Код, который светится, не имеет интерфейса, не показывает графику на экране и не заботится о фреймрейте. Его задача — свет. Живой, дышащий, мерцающий свет. В идеале — чтобы всё это поместилось в пару килобайт памяти и не жрало больше миллиампера на эффект.
Измерение собственного напряжения питания микроконтроллера
Началось все с того, что при проектировании своего устройства на микроконтроллере 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

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

Здесь описывается очень простой (возможно, самый простой в мире) самодельный однолучевой горизонтальный инфракрасный счётчик (людей) на Arduino. Его сенсорная система содержит лишь инфракрасный светодиод, фотодиод, биполярный транзистор и три резистора. Руководствуясь описанием, счётчик сделать совсем легко.
Но будьте бдительны: в описание я заложил мелкие гадости. А куда и какие - не хочу заранее сообщать. Долой скуку! Да здравствуют приключения!
Как и в обычном квесте, реальной опасности здесь никакой нет. Даже если вы не заметите заложенные “мины”, и всё сделаете в точности так, как тут коварно предложено, струйка дыма из самоделки не пойдёт. Ни один её элемент вообще никак не пострадает. Обещаю. При любом раскладе в итоге удастся без потерь наставить это изделие на путь истинный. (На пути истинном оно прекрасно работает. Проверено.)
От всего этого вы получите большое удовольствие и нужные на практике навыки.
Итак, начинаем!
Обработка аудио на ESP32

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

Проект сделан для брата, который любит слушать музыку, но не всегда оценивает свою силу и выводит из строя обычные магазинные плееры на USB флешках.
Одноплатный компьютер Z80 черпает вдохновение у Пикассо
Пикассо и микропроцессор Z80 — это не две вещи, о которых мы часто думаем одновременно. Один — это знаменитый художник, родившийся в 19 веке, а другой — популярный ЦП, который помог запустить движение микрокомпьютеров. И все же последний вдохновил создание компьютера, основанного на первом. Познакомьтесь с RC2014 Mini II Picasso!
Как рассказывает [concretedog], по сути, вы смотрите на RC2014 Mini II. Это одноплатный ретрокомпьютер Z80, который можно использовать для выполнения интересных задач, таких как запуск BASIC, Forth или CP/M. Однако интересное начинается с компоновки. Это та же основная схема, что и у RC2014, но она получила довольно художественный стиль. Микросхемы расположены в разных направлениях, как и пассивные компоненты; даже некоторые резисторы «танцуют» друг над другом. Набор также является ограниченной серией, и каждый комплект имеет уникальное сочетание цветов для шелкографии, разъемов и светодиодов. Для заинтересованных доступны наборы через Z80Kits .
Всем нравится хороший художественный дизайн печатных плат, приятно видеть, как дизайнеры RC2014 напоминают нам, что компоненты не обязательно должны располагаться на жесткой сетке; они тоже могут танцевать, колебаться и «падать» повсюду, как глаза или нос на классическом произведении Пикассо.
Однако это странно; в каком-то смысле, несмотря на вдохновение Пикассо, всё это выглядит явно в духе 1990-х. В любом случае, если вы создаете какие-либо подобные необычные сборки, вдохновленные Пикассо или любым другим испанским мастером, не стесняйтесь сообщить об этом в интернете.
Ближайшие события
АОН. Оживляем раритетный телефон из девяностых
Многие из нас помнят три самых популярных девайса производства кооперативов: конвертеры PAL->SECAM, компьютеры ZX Spectrum и телефоны с АОН. Последние появились где-то в конце восьмидесятых, а к середине девяностых были широко распространены и встречались практически у всех. Вокруг этих девайсов было своё сообщество, у них были свои любители и свои разработчики, прямо как у отечественных персональных компьютеров на схожей элементной базе.
В современных телефонных сетях такие АОНы уже давно не работают, да и городских телефонов сейчас уже у многих в принципе нет. Самое подходящее время для того, чтобы раздобыть такой телефон и немного поиграться.

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

Применение двухполупериодного активного выпрямителя в схеме многоканального измерителя тока.
Делюсь идеей построения измерителя токов.
Настройка ToolChain-а Cборки Прошивок для MIK32 (MIK32 + C+ GCC + GNU Make + OpenOCD)
В этом тексте я написал про то, как настроить рабочее окружение для разработки на российском микроконтроллере MIK32 (K1948BK018).
Релиз WB-Cloud On-Premise, Алиса из коробки и другие новости от Wiren Board

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

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

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

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