Обновить
233.59

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

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

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

Чтение и запись переменных из ПЛК по Modbus в C#-приложении

Уровень сложностиСредний
Время на прочтение20 мин
Охват и читатели2.7K

Modbus — это открытый и очень распространённый протокол обмена данными в промышленной автоматизации. Он работает по модели master–slave: мастер (например, PC-приложение) запрашивает данные у ведомого устройства (ПЛК), получая или записывая значения регистров.

На практике Modbus кажется простым — всего лишь массив 16-битных регистров. Но как только возникает задача читать типизированные переменные, поддерживать несколько проектов в одном ПЛК, минимизировать количество запросов и безопасно работать с соединением, всё быстро усложняется.

В этой статье я описываю реальный подход, который использовал для чтения и записи переменных из ПЛК и отображения их в приложении на C#.

Читать далее

Новости

Граничные вычисления в коммерческой логистике

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели4.7K

Задачи в нашей небольшой команде разделены строго: Лев отвечает за аппаратную часть, схемотехнику и проект в целом, а Марк — за инженерию данных, разметку виброакустических датасетов и алгоритмы каскадной фильтрации.

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

Читать далее

Пуск DWT Таймера на ARM Cortex-M (или Ядерный Таймер)

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

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

В ARM Cortex-M процессорах помимо SysTick есть еще один 32 битный таймер по имени DWT. Этот таймер увеличивается на 1 каждый тик ядра.

Как же воспользоваться этим ядерным таймером?

Читать далее

Как я строю адаптивную модель управления отоплением на ESP32

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

4 дня логов из Telegram, 29 погодных параметров, куча ложных корреляций — и одна формула в конце. Как я с помощью Claude Opus разобрался, почему котёл работает неэффективно, и что с этим делать.

Читать далее

Преобразователь сопротивление-длительность, или будни самогонщика

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

Приходит Петька к Василь Иванычу.

- Василь Иваныч, беда ! Начальник из Москвы приехал, аппарат в дивизии требует сократить !

- Ты вот что Петька. Главное змеевик спрячь. Аппарат мы с тобой потом из любой кастрюли сделаем.

От меня никакое начальство сократить аппарат не требует. Стоит себе булькает. Меня радует, и друзей когда в гости приходят. А вот немного его автоматизировать, и усовершенствовать, чтобы чуть облегчить себе жизнь, а так же чисто науки ради, что-то вдруг захотелось... Да и праздник скоро, 19-е марта. День самогонщика России https://rdshop.ru/articles/povod/3/19 . Интересно ? И праздник, и самогон, и автоматизация ? Тогда милости прошу под кат. Думаю полезным будет не только собратьям по зелёному змию !

Ну, вздрогнули !

Добавляем рекавери в Xiaomi Watch S1

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели9.5K

В умных часах Xiaomi используется весьма необычный процессор BES2500BP, о котором почти нет публичной документации. Однако разбор OTA-прошивки неожиданно показал знакомую архитектуру — внутри скрывается ядро STM32U5 с FreeRTOS. Это позволило провести полноценный реверс системы, разобраться в механизме загрузчика и диагностировать критическую проблему.

В статье показаны техники, как удалось отследить падение в HardFault, понять логику загрузчика и разработать собственный механизм Recovery

Если вам интересен reverse engineering прошивок, архитектура SoC, внутренняя структура смарт-часов и практические методы восстановления устройств, прошу под кат

Читать далее

Управление предпусковым подогревателем Webasto

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели12K

Добрый день, в контексте моего хобби по схемотехнике и программированию микроконтроллеров появилась идея реализовать устройство для дистанционного запуска предпускового котла Webasto, в моем случае это "Webasto Thermo Top Evo 5". Вероятно предложенный материал подойдет и для реализации устройств управления для схожих отопителей данной марки работающих по протоколу W-bus.

Читать далее

Способы повышения надежности встраиваемого ПО

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели10K

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

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

Читать далее

«Создание встраиваемых систем». Обзор книги

Время на прочтение7 мин
Охват и читатели10K

Как только я узнал, что книга Making Embedded Systems 2nd Edition (русская версия: «Создание встраиваемых систем. Паттерны проектирования отличных программ. 2-е издание») доступна для предзаказа, я не раздумывая отправился на Amazon и раскошелился за неё.

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

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

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

Просмотрев на сайте O'Reilly предметный указатель и выложенные для просмотра главы, я обнаружил, что такой «конфигурационной» главы в книге нет. Также в предисловии прямо рекомендовалось не прыгать по книге от главы к главе, а проработать её всю по порядку.

Читать далее

Внутри Intel 1405: фото кристалла памяти на регистре сдвига (1970)

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

В 1970 году 512 бит памяти были инженерным компромиссом, а ожидание «своего» бита — нормальной частью работы системы. В этой статье — разбор микросхемы Intel 1405 с фотографиями кристалла, вскрытого вручную, и подробным анализом того, как устроен регистр сдвига на уровне транзисторов и поликремниевых дорожек. Заодно посмотрим, почему такая память оказывалась дешевле статического ОЗУ, как она применялась в Datapoint 2200 и зачем для неё понадобился отдельный мощный драйвер тактовых сигналов. Это взгляд внутрь эпохи, когда архитектурные решения буквально были видны под микроскопом.

Заглянуть внутрь

Структуры данных на практике. Глава 6: Стеки и очереди

Время на прочтение9 мин
Охват и читатели5.7K

«Простота — требование, необходимое для обеспечения надёжности», — Эдсгер Дейкстра

Невидимая структура данных

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

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

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

Переполнение стека? Очередь должна была находиться в куче, а не в стеке.

Проблема заключалась не в самой очереди, а в том, как она была реализована. Для очереди использовался связанный список, и каждый вызов malloc() выполнял распределение из пула памяти, делившего пространство со стеком. Под нагрузкой очередь разрасталась, пул фрагментировался и рано или поздно стеку не оставалось места для роста.

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

Читать далее

Обзор Преобразователя USB-CAN от Marathon

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

В этом тексте я попробовал выполнить обзор преобразователя с USB на CAN.

В этот раз у меня на столе особый экземпляр: переходник с USB на CAN от фирмы Marathon. Полное название CAN-bus-USB Версии 4.0. Он же ГКМН.468351.017-03.

Читать далее

Видеорежимы в восьмибитных компьютерах. Coolsystem — Часть 2

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели9.6K

В данной статье кратко рассмотрены видеоконтроллеры для следующих ретро-компьютеров: ZX Spectrum, Вектор 06Ц, Commodore 64, Commodore PET, Микроша, Радио-86РК, БК-0010, Агат (модели 7 и 9) и Апогей БК-01Ц.

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

Читать далее

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

Мир снов, сгенерированный компьютером: виртуальная реальность для процессора 286

Время на прочтение12 мин
Охват и читатели12K

«Что есть "реальность"? И как определить её? Весь набор ощущений: зрительных, осязательных, обонятельных — это сигналы рецепторов, электрические импульсы, воспринятые мозгом.» — Морфеус, фильм «Матрица»

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

Моим первым компьютером был 286 с 1 МБ ОЗУ и жёстким диском на 50 МБ (если я правильно помню). Поэтому я решил взять процессор 286 и попробовать симулировать остальную часть компьютера вокруг него. Или хотя бы сделать так, чтобы он мог запускаться и выполнять какой-то простой ассемблерный код.

Два года назад я купил два процессора Harris 80C286-12. Мои воспоминания довольно туманны, но кажется, буква C в их маркировке важна, потому что она означает меньшую чувствительность к точности таймера (12 в конце означает, что процессор предпочитает работать на 12 МГц), и что на нём даже допустимо пошаговое выполнение.

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

Читать далее

Мои самодельные программаторы

Время на прочтение3 мин
Охват и читатели18K

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

Читать далее

Квантование на Триггерах Шмитта

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

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

Это гистерезисный фильтр на триггерах Шмитта.

Читать далее

Автономный радиодатчик температуры на солнечной батарее

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

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

Читать далее

Хакинг бытовой техники: одна шина, чтобы управлять всеми

Время на прочтение12 мин
Охват и читатели13K

Двое реверс-инженеров пробуют разобраться, почему в старой стиральной машине Miele перестал работать отжим. Устранить неполадку им так и не удается — зато они умудряются отреверсить закрытый диагностический протокол и вытащить прошивку управляющей платы. А затем — написать утилиту, которая делает то же, что и проприетарный сервисный софт Miele, только без лицензий и посредников.

Детали этого эксперимента мы подробно разобрали в прошлой статье. Здесь история могла бы закончиться — но одной стиралки исследователям оказалось мало. 

Дальше они вскрыли посудомойку BSH, подключились к шине обмена данными D-Bus и нашли механизм доступа к памяти, позволяющий выгружать прошивку с любых устройств BSH через эту шину. А к финалу исследования и вовсе ударились в откровенный инженерный троллинг, научив облачное приложение BSH управлять техникой бренда-конкурента.

Продолжаем разбор доклада Hacking Washing Machines с конференции 39C3 и смотрим, как попытка разобраться в логике одной капризной стиралки превращается в операцию по стыковке двух закрытых экосистем бытовой техники.

Читать далее

Интеграция утилиты Artistic Style в скрипт сборки прошивки

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

Есть утилита для автоматического выравнивания отступов в исходных кодах. Называется astyle.exe.

В этом тексте я покажу, как работать с утилитой Astyle.

Читать далее

А вы уже подали заявку в «Железо»? Рассказываем о нашей номинации в «Технотексте» и призах за лучшие статьи

Время на прочтение5 мин
Охват и читатели6.5K

Конкурс лучших статей Хабра «Технотекст-8» в разгаре. Подать заявку можно до 17 апреля 2026 года включительно. 

Уже третий год YADRO выступает хранителем номинации «Железо: проектирование и технологии производства». Сегодня расскажем, какие статьи ждем и что за призы подготовили для победителей (спойлер: на этот раз за 1 и 2 место вручим комплект из 3D-принтера, платы, цифрового осциллографа и не только). Заодно вспомним статьи, которые вышли в топ в прошлом году, — сможете посмотреть примеры и усилить свои работы. Погнали!

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