Обновить
128K+

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

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

243,18
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности
Формат публикации

Портируем прошивку PCAN на китайскую плату

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

В данном тексте я выполнил обзор широко известного open source проекта прошивки для PCAN-Pro. Код которой лежит на Github. Мне удалось портировать и завести прошивку на покупной учебной отладочной плате JZ-F407VET6.

В каждой разработке с CAN нужны средства отладки. Я узнал, что в интернете есть открытый проект прошивки для культового прибора PCAN и попробовал его портировать на учебную отладочную плату JZ-F407VET6.

Читать далее

Поддержка старого embedded-проекта в VS Code

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

Как-то раз я начал работать с одним большим проектом для микроконтроллера. Как многие legacy-проекты в embedded, он привязан к старой версии IDE. В моем случае это оказался IAR 7. Эта среда обладает хорошими отладочными средствами, но работать с кодом в ней не очень комфортно: отсутствует много привычных комбинаций клавиш (Ctrl + точка, например), нет темной темы, скромная подсветка синтаксиса.

Со временем я стал все больше пользоваться VS Code для работы с кодом, а для проверки работоспособности переключался в IAR. Тогда я задумался, можно ли перенести основную работу над проектом в VS Code? Достоинств у редактора много: приятный настраиваемый интерфейс, интегрированный Git, расширения на любой вкус и задачу. Главный нюанс состоял в том, что проект должен собираться компилятором IAR, ибо написан он был строго под него.

Читать далее

ESP32 для начинающих: от логических микросхем к умному железу

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

В предыдущей статье “Первый шаг к микроконтроллерам: введение в цифровые схемы” вы познакомились с логическими микросхемами на примере серии 155 и собранных на них простых конструкций. Но чтобы сделать более или менее сложную схему, потребуется много таких микросхем. Для внесения изменений в логику работы придётся перепроектировать и перепаивать схему, а то и создавать её заново.

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

Вокруг вас много «умных» вещей со встроенными микроконтроллерами. Это электрические чайники, стиральные машины и кондиционеры, детские игрушки, устройства умного дома. 

Для подключения внешних устройств у микроконтроллеров имеются линии ввода-вывода общего назначения General-Purpose Input/Output (GPIO). GPIO обычно используют для цифровых сигналов. В некоторых микроконтроллерах есть встроенные АЦП и ЦАП для работы с аналоговыми сигналами, но их точности иногда недостаточно — тогда применяют внешние модули. 

К порту GPIO можно подключать как простые устройства — кнопки и светодиоды, таки и сложные: дисплеи и радиомодули. Некоторые из них можно соединить с GPIO напрямую, для других нужны дополнительные модули. Например, с помощью реле можно управлять мощными нагрузками, а через специальные интерфейсные модули — различными электродвигателями. 

Но возможности современных микроконтроллеров не ограничиваются только обработкой сигналов. С их помощью обмениваются данными по сети, используя Wi-Fi и Bluetooth, создают веб-серверы и точки доступа (хот-споты) для подключения мобильного телефона к сети Wi-Fi вашего устройства. Через Wi-Fi, созданный в рамках хот-спота микроконтроллера, вы можете управлять устройством независимо от наличия интернета.

Читать далее

Разработчик подключил AI‑агента к 32-летнему Jeep Cherokee для диагностики

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

Разработчик под никнеймом MZULALI опубликовал проект xj‑scanner для диагностики Jeep Cherokee 1994 года выпуска с помощью AI‑агентов. С его помощью к автомобилю можно подключить Claude Code, Codex или другого агента, считывать ошибки, следить за показаниями датчиков и вести историю поездок.

Читать далее

Составное устройство USB на AT32F403A. Часть 2: Виртуальный COM‑порт и его доработки

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

В предыдущей части цикла мы создали виртуальный COM‑порт USB на базе микроконтроллера AT32F403ACGT7 производства компании Artery Technology.

В этой части мы проведём анализ сгенерированного кода с помощью официальной документации на класс устройств USB, предназначенных для передачи данных по последовательным интерфейсам, а затем дополним функциональность нашего виртуального COM‑порта.

Читать далее

Частотомер с БИХ-фильтром НЧ в 1 Кбайте на ATtiny13 и на что способен этот «малыш»

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

Появилась необходимость сделать частотомер для настройки бензинового генератора. Т.е. сама по себе задача простая: измерить частоту синусоидального напряжения в пределах 40..70 Гц с точностью около ±0.1 Гц, но при условии больших шумов и искажений, которые возникают при работе генератора. Для этого уже сделаны много вариантов приборов, но был «спортивный интерес» и азарт. На макетке был установлен один из самых простых и легких микроконтроллеров ATtiny13.

Читать далее

Ladder на экране 0.96", часть 2: как это устроено внутри

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

В первой части я рассказал об AtsPLC - контроллере на ESP8266, который программируется на языке ladder прямо на нем самом: на OLED 128x64 и тремя кнопками. А во время работы эта же схема показывает состояние процесса.

Первая часть: Ladder на экране 0.96": программирую ПЛК тремя кнопками

Теперь расскажу, как это сделано. Речь пойдет об ESP8266, у которого всего около 80 КБ оперативной памяти, о FreeRTOS и о C++.

Читать далее

Экономим энергию на ESP32-P4: эксперименты с Light‑sleep, Deep‑sleep и периферией CrowPanel

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

Последнее время всё чаще сталкиваюсь в HMI проектах с панелями на базе ESP32-P4, и это довольно удобно: экран подключен, сенсор работает, связь есть. Можно сразу же делать интерфейс и приложение. В один момент появилась задача обеспечить работоспособность CrowPanel (Elecrow) от батареи, и началось интересное.

Замер мультиметром показал около 600 мА потребления панели при яркости 60%. Если грубо прикинуть, то на аккумуляторе 1000 мАч будет меньше 2 часов.

Хотелось бы больше, поэтому решил разобраться, что можно сделать: понизить частоту, выключить подсветку и периферию, отправить Р4 в сон. Заодно выяснить, где заканчиваются возможности прошивки, и начинается схемотехника.

Забегая вперед: в одном из проверенных сценариев ток удалось снизить с 335,9 до 96,7 мА, на 71,2%. Потом на существенно модифицированной плате получилось увидеть и 6,5 мА. Но это уже отдельный исследовательский эксперимент, а не готовый режим с пробуждением по касанию. Ниже — как я до этих цифр дошёл и что из них можно применить на практике.

Читать далее

Качественная анимация на микроконтроллере с оптимизацией, через мои костыли:

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

Привет, Хабр! Возникла необходимость сделать анимации для TFT дисплея под управлением ESP32. Учитывая общую нагрузку на МК и требования к «живости кадра», выбор пал на UI-анимацию на базовом драйвере, без тяжелых библиотек в противовес GIF-спрайтам и иже с ними.

Тогда я ещё не знал во что ввязываюсь...

Аппаратные потоки на китайском микроконтроллере

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

Многоядерные микроконтроллеры уже обыденность. Первый многоядерный микроконтроллер — TMS320C80 — был выпущен фирмой Texas Instruments более 30 лет назад. Два ядра есть и у микроконтроллера ESP32, столь любимого пользователями Хабра и не только.

В автомобилестроении многоядерные микроконтроллеры также получают широкое распространение. К примеру, в обозначении микроконтроллера китайской фирмы FlagChip FC7300F8MDT буква T означает, что внутри SoC‑а находятся аж три процессорных ядра ARM Cortex‑M7.

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

Читать далее

Как я научил Arduino UNO Q играть в шахматы на настоящей доске — без распознавания фигур

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

Хотите играть в шахматы за настоящей доской, но с компьютерным соперником, который сам анализирует позицию и подсказывает ходы? В этом проекте автор подключил веб‑камеру к Arduino UNO Q и научил плату отслеживать партию без распознавания самих фигур. В статье разбирается, как устроен алгоритм определения ходов, как интегрировать Stockfish и собрать собственную систему с шахматным тренером.

Собрать шахматиста

Частотомер с БИХ‑фильтром НЧ в 1 Кбайте на ATtiny13 или как запрячь одну лошадь в три телеги

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

Появилась необходимость сделать частотомер для настройки бензинового генератора. Т.е. сама по себе задача простая: измерить частоту синусоидального напряжения в пределах 40..70 Гц, но при условии больших шумов и искажений, которые возникают при работе генератора, с точностью около ±0.1 Гц.

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

Пожалуй, в рамках одной статьи не получится рассказать обо всем проекте. Прибор получился весьма нагруженный:
а) динамическая индикация на одном сдвиговом регистре 74HC164 на 3-х пинах;
б) ФНЧ с применением 2-х каскадного БИХ‑фильтра (фильтр с бесконечной импульсной характеристикой или IIR‑фильтр от англ. Infinite Impulse Response) — это линейный цифровой или электронный фильтр, в котором выходной сигнал зависит не только от текущих и прошлых входных значений, но и от предыдущих значений самого выхода);
в) аппроксимация точки перехода синусоиды через 0 (для увеличения точности до ±0.1Гц);
г) счетчик и табличный преобразователь для получения частоты со сглаживанием результата на 32 измерениях;
д) температурная подстройка частоты внутреннего RC‑генератора при помощи датчика ds18b20.

Читать далее

Forth: Как найти и отделить самую правую единицу в двоичном числе

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

Листая одну старую книжку по древнему языку программирования Форт [1], я наткнулся на такой фрагмент, в котором меня заинтересовало слово LAST1

Читать далее

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

Промышленный контроллер на АМУР MIK32

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

В разные периоды я тестировал свою среду разработки, компилятор и рантайм на разных МК — от STM32G030 до FPGA Altera Cyclone 4. Минимальные требования к рантайму — это 5 КБ ОЗУ и не менее 32 КБ Flash, либо 3000 LUT, если это FPGA. Мой основной тестовый стенд — это системы с относительно ограниченными ресурсами. Не 8-битные микроконтроллеры, но и не обязательно ESP32. ОЗУ от 12–20 КБ — это уровень, на базе которого можно создать настоящий ПЛК с вытесняющей многозадачностью, заменой кода на лету, RS-485 и онлайн-отладкой.

Читать далее

Динамические списки GPIO-линий: пакетные операции с группами выводов на современном C++

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

GPIO-линии - это базовая периферия любого микроконтроллера и первое с чего начинают знакомство с новым МК. Чего может быть проще помигать светодиодом. Библиотеки производителей МК, также как и сторонние, обычно предоставляют функции записи одной линии типа HAL_GPIO_WritePin, digitalWrite, либо же запись всего порта. А часто требуется управлять сразу группой разрозненных GPIO-линий: светодиодная лента, 7-сегментный индикатор, параллельная шина данных, матричная клавиатура и т.д.

С конфигурированием GPIO-линий дела обстоят не лучше, нужно заполнять поля неудобных структур в HAL-подобных библиотеках, и часто конфигурирование по одному пину - громоздко, неудобно, много однообразного copy-paste кода.

В этой статье представлен новый метод работы с GPIO для микроконтроллеров, который сочетает возможность динамического создания групп GPIO линий и хорошую оптимизацию для групп заданных на этапе компиляции, на примере Российского МК К1921ВГ015.

Читать далее

Файловая система на микросхеме SPI NOR Flash w25q16j

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

В этом тексте я попробовал научиться пользоваться микросхемой w25q16j. Это энергонезависимая 133MHz SPI Nor flash память объемом 2 MByte.

Поддерживает QSPI и исполнение прошивок из SPI (XIP).

Далее будет перевод даташита с английского на русский и некоторые комментарии со стороны разработчика проивки.

Читать далее

Ladder на экране 0.96": программирую ПЛК тремя кнопками

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

Я сделал контроллер на ESP8266, который можно программировать прямо на нем самом: на маленьком экране OLED 0.96" и всего тремя кнопками.

Программа пишется на языке Ladder Diagram. А во время работы эта же схема показывает, что происходит с процессом: какие контакты замкнуты, какие значения на входах, что включено на выходах. Компьютер для этого не нужен.

Читать далее

Разработка IDE для ПЛК. Механика печатной машинки для графики бесконечных вложений электроцепей

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

Как ИИ проигрывает человеку. Это непопулярная тема в эпоху хайпа вокруг нейросетей, ведь принято считать, что они «заменят человека». Скажу сразу: я не типичный инженер. По второму диплому я преподаватель живописи и графики. Моя биография — это не только запах гари и припоя, но и запах масла, титановых белил и кадмиевых красок в старых паркетных аудиториях. Гипсовая анатомия, драпировки, подсохшие цветы в керамике — хорошо знакомо художникам.

Чем я занимаюсь можно посмотреть

Читать далее

Что Rust изменил в разработке прошивки NanoVNA

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

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

При разработке NanoVNA-X-BM (bare metal) мне пришлось разобраться, какие ошибки можно запретить через интерфейсы, что проверять на ПК и для чего всё равно нужен настоящий board.

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

Читать далее

RISCованный полёт: порт AM32 на К1921ВГ5Т

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

Портируем AM32 на отечественный RISC-V микроконтроллер К1921ВГ5Т. Разбираемся с PWM, тактированием, PLIC и DMA, а по пути чиним SDK и подруживаем J-Link с OpenOCD. Пока работает PWM-управление мотором; DShot оставили на будущее.

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