Обновить
128K+

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

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

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

О Raspberry Pi Pico, RP2040 и Baremetal

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

В этой статье пойдет речь о первом поколении микроконтроллеров от Raspberry Pi Foundation — RP2040 на основе двух ядер ARM Cortex‑M0+, и о плате, которая базируется на этом чипе — Raspberry Pi Pico. Статья призвана облегчить понимание некоторых принципов работы RP2040 и микроконтроллеров в целом.

Читать далее

Новости

Калвиаутра путает калвиши: один байт изменил всё

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

Пришла моя долгожданная плата EC для клавиатуры Agar Mini. Собрал, начал пользоваться, но вот что-то слишком много опечаток. Думал, повожусь с настройками, да не тут-то было — приключение растянулось на 7 часов.

В статье о том, что такое EC, как отдебажить проблему и внести фикс в прошивку. Не обошлось и без реверс-инжиниринга.

Все опечатки неслучайны.

Читать далее

Эмулятор CD-ROM из Raspberry Pi Pico W, использующий образы из сети

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

В одной из своих статей я уже рассказывал, как из Raspberry Pi Pico сделать USB CD-ROM. Так как размер флеш-памяти Pico ограничен, поместить что-то серьёзное в образ, который будет находиться во флеш-памяти невозможно. Можно попробовать разместить образ на флеш-карте и использовать модуль для неё, но я нашёл более интересное с точки зрения используемых технологий решение. Эмулировать образ, который находится в интернете. Образа многих дистрибутивов Linux доступны для загрузки с сайта.

Читать далее

Диктофон на микроконтроллере (WM8731 + I2S + STM32 + SDIO + FAT16)

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

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

Перечислены особенности разработки звукозаписывающей аппаратуры и типичные трудности разработки диктофонов.

Читать далее

Проигрыватель WAV файлов на STM32

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

В этом тексте я показал как можно разработать прототип музыкального проигрывателя на основе микроконтроллера STM32F407VG и аудио кодека WM8731. Показал как спроектировать прошивку проигрывателя wav файлов на основе I2C, I2S, DMA, SDIO и FatFs.

Читать далее

Антенный ротатор на PTZ 3050DZ

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

Недавно попалось на глаза поворотное устройство для видеокамер PTZ 3050DZ, которое заинтересовало меня невысокой стоимостью и приличным заявленным весом поворачиваемой видеокамеры в 10 килограмм. Подумалось, что оно вполне может подойти для использования с небольшими спутниковыми антеннами. По ходу дела пришлось смастерить для него еще и дистанционное управление с применением модулей LoRa. Жмите кнопку ниже, чтоб узнать подробности.

Читать далее

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

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

Наш сетевой драйвер терял пакеты. Не время от времени, а постоянно. На пропускной способности линии с 64-байтными пакетами мы теряли 31% всего трафика.

В качестве оборудования использовался Ethernet-контроллер на 1 Гбит/с на SoC RISC-V. В спецификациях говорилось, что он может справляться со скоростью проводного трафика. Движок DMA работал корректно. Обработчик прерываний срабатывал вовремя. Тем не менее, пакеты исчезали.

Я начал с очевидного подозреваемого: очереди получения. Реализация выглядела вполне логично — простой связанный список с указателями на голову и хвост. Под нагрузкой (64-байтные пакеты на пропускной способности линии) драйвер терял 31% пакетов! При профилировании обнаружилась причина проблемы: производительность убивали связанный список и спин-блокировки.

Я переписал драйвер, использовав кольцевой буфер без блокировок. Результаты: потеря 31% пакетов превратилась в 0,12% — улучшение в 258 раз!

В этой главе мы поговорим о структуре очередей для драйверов устройств.

Читать далее

Zynq 7000. Переносим I2C Master Controller. Работа над ошибками и утилиты userspace

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

В прошлой статье мы собрали готовый образ Linux и запустили I2C Master Controller который живет в ПЛИС и управляется драйвером предоставляющим в ОС доступ к нему как типовому I2C-контроллеру. В этой, заключительной части из общей серии статей, я хотел бы филигранно отшлифовать все мелкие недочеты и привести примеры утилит, которые могли бы отправлять нужные нам данные на I2C OLED-дисплей SSD1306, например температуру кристалла, время или что-нибудь еще. 

Всем кому интересна тема - го под кат! :)

Читать далее

Российский микроконтроллерный блок управления судовыми преобразователями частоты. Часть 3

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

Статья посвящена микроконтроллерным системам управления преобразователями частоты для электродвигателей переменного тока. Рассматриваются различные варианты структуры и конструкции систем управления преобразователями частоты. Приводится техническое описание российского микроконтроллерного блока управления БУПЧ, который входит в состав преобразователей частоты для судовых систем электродвижения концерна «Русэлпром»: его состав, устройство, технические характеристики, преимущества и недостатки по сравнению с западными аналогами. Рассматривается специальное сервисное программное обеспечение, которое существенно сокращает время тестирования и отладки основного программного обеспечения для БУПЧ, уменьшает вероятность ошибок в нем, способных привести к аварийным ситуациям, позволяет проверить правильность работы БУПЧ и преобразователя частоты, а при возникновении ошибок – быстро определить их причины. 

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

Третья часть статьи

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

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

Наш загрузчик оказался слишком медленным. Требование было чётким: загружаться менее чем за 500 миллисекунд. Показатели оставались не менее чёткими: 720 миллисекунд. Мы отставали от нужного значения на 44%.

Это требование не было «мягким». Загрузчик должен был работать в промышленном контроллере, обязанном реагировать вскоре после включения питания. Каждая секунда времени загрузки — это потерянная продуктивность. В спецификации к изделию был указан максимум в 500 мс. Мы обязаны были их обеспечить.

Задача загрузчика была простой:

1. Инициализировать оборудование (UART, SPI, DDR-контроллер)

2. Загрузить ядро из флэш-памяти

3. Спарсить дерево устройств

4. Перейти ко точке входа ядра

Реализация казалась логичной: стандартные структуры данных из библиотеки C. Проблема выявилась при профилировании: 45% времени загрузки тратилось на malloc/free! В загрузчике всего с 64 КБ ОЗУ динамическое распределение роняло производительность.

Читать далее

Структуры данных на практике. Глава 16: Фильтры Блума и вероятностные структуры данных

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

Наш веб-краулер потреблял 128 МБ ОЗУ только на отслеживание посещённых URL. На встраиваемом устройстве с 256 МБ это была половина всей памяти.

Задача краулера была простой: отслеживать посещённые URL, чтобы не краулить одну и ту же страницу дважды. После обработки 1 миллиона URL (средняя длина 80 байт) хэш-таблица, в которой хранились эти URL, разрослась до 96 МБ плюс оверхед.

«Можем ли мы обменять точность на память? Нас вполне устроит несколько дублированных операций, если это позволит сэкономить большой объём памяти», — сказал мне мой менеджер во время ревью кода.

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

Читать далее

Мы не выравниваем железо — мы выравниваем реальность: как превратить любой лазерный гравер в прецизионный фотоплоттер

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

Если вы хоть раз пытались сделать печатную плату сложнее «мигалки на светодиоде», вы знаете цену «геометрического ада».

ЛУТ (лазерно-утюжная технология) — это лотерея. Классический фотометод требует идеального шаблона, а профессиональный фотоплоттер стоит как подержанный автомобиль. Казалось бы, решение на поверхности: взять доступный китайский лазерный гравер за $100 и вперёд. Но тут начинается новый «ад»: оси изначально кривые, реальный шаг моторов живёт своей жизнью, а заготовка почти всегда лежит на столе с перекосом в пару градусов. Малейшее отклонение — и прецизионный Gerber превращается в бесполезный кусок текстолита.

Я решил эту проблему иначе. Зачем часами юстировать механику, если можно переложить всё на математику и нейросети?

Представляю LPP-Laser — флагманское направление открытой модульной платформы LPP (Linear Path Platform). Система не требует от станка совершенства. Она просто «натягивает» ваш проект на реальность.

Читать далее

Двухканальный термостат на ATtiny2313: выжимаем максимум из кристалла на чистом ассемблере

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

Всем привет!

Недавно я опубликовал свою первую статью про восстановление легендарного компьютера: «Воскрешение „Пентагона-128“ из пепла и безвейтовый контроллер клавиатуры и джойстиков на ATmega8 своими руками». Честно скажу, то, как её встретили — лайки, добавления в закладки и первые подписки на меня — очень сильно воодушевило. По свежим следам и на этой волне вдохновения я сразу же решился опубликовать ещё одну свою разработку. На этот раз — девайс полностью самостоятельный, а все схемы, платы и файлы прошивок я отдаю в открытый доступ.

Сразу оговорюсь: к Спектруму это устройство отношения не имеет. Это универсальный контроллер климата, разработанный мной довольно давно. Он успешно и активно эксплуатируется в реальных условиях уже более 10 лет (причем не только мной), так что жесткое «альфа- и бета-тестирование» временем прибор прошел на отлично.

Устройство можно одинаково успешно применять в двух разных сценариях:

Читать далее

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

Метеобрелок своими руками

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

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

Перейти к статье

Как мы сделали простой мониторинг загрузки станков через Zigbee-сеть: open source стек без кабелей и вендорлок

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

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

Читать далее

Российский микроконтроллерный блок управления судовыми преобразователями частоты. Часть 2

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

Статья посвящена микроконтроллерным системам управления преобразователями частоты для электродвигателей переменного тока. Рассматриваются различные варианты структуры и конструкции систем управления преобразователями частоты. Приводится техническое описание российского микроконтроллерного блока управления БУПЧ, который входит в состав преобразователей частоты для судовых систем электродвижения концерна «Русэлпром»: его состав, устройство, технические характеристики, преимущества и недостатки по сравнению с западными аналогами. Рассматривается специальное сервисное программное обеспечение, которое существенно сокращает время тестирования и отладки основного программного обеспечения для БУПЧ, уменьшает вероятность ошибок в нем, способных привести к аварийным ситуациям, позволяет проверить правильность работы БУПЧ и преобразователя частоты, а при возникновении ошибок – быстро определить их причины.

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

Вторая часть статьи

Доказательство недоказуемого или о светофоре Ангера замолвите слово

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

Исполним обещанное в [1], где упомянута задача о светофоре Ангера [2]. Она интересна формулировкой, которая заметно отличается от аналогичных задач, и утверждением, что более компактного решения, чем предложенное автором монографии, не существует.

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

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

А начнем мы с реализации светофора в исходной формулировке, хотя и в рамках другой формальной модели [3].

Читать далее

ROP Level 1 в GD32F4: «А метлой дверь подпёр?» Или как нежно слить защищенную прошивку через программатор

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

«Граждане новосёлы! Внедряйте культурные навыки!» Пока вы зашиваете коммерческие алгоритмы в кремний и надеетесь на ROP Level 1, где-то в лаборатории уже корабли бороздят просторы народного театра!

Автор статьи официально заявляет, что не несёт ответственности за разбитые коммерческие иллюзии и бинарники. Весь материал предоставлен исключительно в научно-исследовательских, образовательных и превентивно-оборонительных целях. Помните: взлом чужого оборудования без согласия владельца преследуется по закону. Если вы производите серийный продукт — эта статья написана для того, чтобы вы немедленно пошли и включили ROP Level 2 потому как говорил классик, - «Надо, Федя... Надо!»

Читать далее

Гибкая настройка тактирования микроконтроллера rp2040 для проектов с батарейным питанием

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

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

Читать далее

Как сделать беспроводной сенсорный хаб из простого светильника

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

Как-то наткнулся на такой дешевый автоматический светильник за пару евро. Солнечная панель, аккумулятор, датчик движения — и все это за смешные деньги. Честно говоря, я сомневался, как оно работает. Ну и действительно работало оно так себе. Но все равно купил: его корпус прямо кричал — «Переделай меня!». Я и переделал.

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