Обновить
252.45

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

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

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

Как запрограммировать ad936x

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

В статье рассматривается процесс создания программы для инициализации и управления микросхемой ad9363. Описанный подход применим для всего семейства ad936x. Всё реализовано под клон ADALM-Pluto с помощью Vivado 2021 и Vitis 2021 на Си.

Читать далее

Новости

Выступил отрицателем AI на конференции SNUG Silicon Valley

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

AI - не микроархитектор, не проектировщик и не верификатор. Это все-лишь гламурный поисковик уже решенных и опубликованных задач. Именно такой вывод следовал из предоставленных мною на конференции SNUG Silicon Valley 2026 фактов как десятки студентов мучали ИИ чтобы решить мои задачки. Одну задачку ИИ решил лишь через полгода после выкладывания решений в интернет, другую за два месяца, потом пошла третья. При этом задачки были довольно банальные - мы в Самсунге даем делать такие статические конвейеры с контролем потока данных практикантам.

Вот постер, сопровождающий мою статью:

Читать далее

Сам себе шедулер (scheduler) — планировщик

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

Это мой развернутый ответ на тему организации программных таймеров который я обещал в комментариях (ссылка на комментарии будет ниже).

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

Читать далее

Как построить открытую АСУТП. Создание пользовательских типов данных

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

Как создавать пользовательские типы данных в открытой АСУТП? Зачем объединять скорость, температуру и статус двигателя в одну переменную?

В ИТ-команде «Северстали» мы занимаемся разработкой компонентов для открытой АСУТП. В этой статье разберём, как создавать и применять пользовательские типы данных в нашей среде разработки Flogic. 

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

Читать далее

Почему промышленная робототехника выбирает полную интеграцию ROS2

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

От «ROS рядом с проприетарными роботами» к «ROS внутри робота»: зачем промышленной робототехнике полная интеграция. Это особенно важно в связи с санкциями и импортозамещением, так как позволяет построить свою открытую-совместимую экосистему и стандарты на базе ROS2, от чего выиграют и российские производители роботов и интеграторы и заказчики и государство. Как бонус мы получаем бесплатное с открытым исходным кодом программное обеспечение написанное всем миром в виде ROS2 пакетов.

Читать далее

Индуктивная связь

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

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

Читать далее

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

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

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

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

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

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

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

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

Читать далее

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

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

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

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

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

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

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

Читать далее

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

В данной статье кратко рассмотрены видеоконтроллеры для следующих ретро-компьютеров: 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 МГц), и что на нём даже допустимо пошаговое выполнение.

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

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