Обновить
128K+

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

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

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

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

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

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

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

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

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

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

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

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

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

Читать далее

Новости

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

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

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

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

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

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

Читать далее

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

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

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

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

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

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

Читать далее

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

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

Всем привет!

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

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

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

Читать далее

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

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

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

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

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

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

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

Читать далее

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

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

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

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

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

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

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

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

К1921ВГ015: Как инженеры компании “Чистое небо” реализуют авионику БПЛА на российских RISC-V микроконтроллерах

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

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

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

Один из таких кейсов реализует компания "Чистое небо" совместно с АО "НИИЭТ" (входит в ГК Элемент) и разработчиками ОСРВ Embox. Команда работает над переносом открытого программного обеспечения для БпЛА на российские микроконтроллеры К1921ВГ015 с архитектурой RISC-V. Если вам интересна эта тема, добро пожаловать под кат!

Читать далее

Код, шуруповёрт и немного изоленты: Лемана Тех и Хабр открывают сезон DIY

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

Аббревиатура DIY значит «сделай сам». Почини, собери, переделай, не жди готового решения. Но если раньше это вызывало ассоциацию с молотком, отвёрткой или плитой гипсокартона, то сейчас всё чаще это ещё и код, датчики, микроконтроллеры, домашние серверы, 3D-модели и сценарии автоматизации. В общем, IT добралось и до ремонтов.

И это логично, ведь между написанием кода и работой руками куда меньше различий, чем кажется. Сегодня Хабр вместе с Лемана Тех — технологическим ядром одного из крупнейших DIY-ретейлеров — официально открывают сезон на Хабре. Пишите о своих DIY-проектах, участвуйте в конкурсе и побеждайте. Приём статей — с 15 июня по 31 июля 2026 года.

Больше о сезоне

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

Разработка настольного EDM-станка (часть 1) — Генератор разрядов

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

Соскучились по DIY на коленке? Уверен, что многим хотелось бы иметь дома рядом с 3D-принтером станок, который без грязи, дыма и дикого шума будет резать металл. Давайте попробуем собрать настольный электроэрозионный станок (EDM) своими руками из доступных материалов. Данная статья положит начало циклу статей по разработке, отладке и тестированию будущего инструмента. Конечная цель проекта — получить станок, который сможет вырезать детали из металла для создания своих копий.

А начнём мы с самого главного — с разработки электроники EDM-станка.

Погнали!

Лампа плавного пуска

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

У меня было множество вело фар и всегда меня напрягало то, что фара включается практически мгновенно.

Глаза даже не успевают приспособиться и это доставляет существенный дискомфорт.

В связи с этим я принял решение разработать свою безопасную вело фару.

Читать далее

MSX на ESP32-S3 с VGA-выходом

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

По многим критериям ESP32-S3 - это весьма мощный маленький компьютер. Неудивительно, что его используют даже для таких задач, как эмуляция ретро-консолей и тому подобного. В рамках проекта S3-MSX-PC [Иван Сварковский] (Ivan Svarkovsky) пошел еще дальше: он взял компонент MSX из мультисистемного проекта Retro-Go и оптимизировал его под процессорные ядра Xtensa Lx7, установленные в ESP32-S3.

Читать далее

Моя жизнь с матричным принтером

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

РЕТРОКОМПЬЮТИНГ

Всё началось со смерти давнего друга. Но не волнуйтесь: этот друг теперь живее всех живых, хорошо себя чувствует и служит мне верой и правдой.

Это классический матричный принтер Epson MX-80 F/T III. Он был первым принтером, который я купил, где-то в 1982 или в 1983 году, и стоил он мне гораздо больше, чем я мог себе позволить. Даже после того, как он перестал быть моим основным принтером — сначала его заменило невероятно громкое лепестковое печатающее устройство, а потом лазерный принтер Epson, который я «приобрёл» на своей должности составителя обзоров продуктов — он продолжал служить мне в нишевых ситуациях.

Его основной задачей стала печать этикеток для моей библиотеки 35-миллиметровых цветных слайдов. У меня есть база данных, созданная на основе ПО Eagle компании Emerald Bay (это своего рода более удобная версия dBase), и мне было гораздо проще печатать этикетки программно на матричном принтере, чем возиться с листами этикеток на лазерном. Именно такой функциональности мне не хватает.

Читать далее

Воскрешение «Пентагона-128» из пепла и безвейтовый контроллер клавиатуры и джойстиков на ATmega8 своими руками

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

Вместо введения:

Не помню, когда точно, но скорее всего это был 92-93й год. Мне было тогда 12-13 лет. Жили мы, как бы сказать, очень не очень. Нас было четверо детей, я из них самый старший. Отец — неработающий инвалид, а мама — единственная, кто тянул всю семью, работая с образованием 8 классов деревенской школы. Денег не то чтобы не хватало, а их ВООБЩЕ не было.

Но электроникой и компьютерами я уже тогда бредил. И вот в один прекрасный день у меня появился КОМПЬЮТЕР!!! Мама совершила какое-то чудо и вопреки всему купила мне его. Сказать, что я был рад — это все равно что ничего не сказать. Сейчас уже не помню точную модель, какой-то клон 48К Спектрума, но с 99% вероятностью это был «Ленинград». Вот так началось моё знакомство с компьютерами, играми и программированием.

Кстати, в само программирование меня подтолкнуло то, что в один прекрасный день мой Спектрум тупо перестал загружаться с магнитофона. Игры кончились, надо было что-то делать. Я взял в руки печатный справочник, который шел в комплекте, и начал набивать оттуда программки вручную. Некоторые были с ошибками — и это, кстати, огромный плюс! Приходилось включать мозги, разбираться в логике и эти ошибки исправлять. Вот так постепенно я освоил Бейсик, ну а потом догнал и ассемблер… и понеслось.

Так было до момента, пока мне не купили Денди. На долгие годы я забыл про Спектрум, ибо потом в руки мне попалась неисправная Сега, которую я смог отремонтировать! Тогда мне было лет шестнадцать, и моё инженерное эго после этого выросло примерно до размеров Вселенной (хотя неисправным там оказался всего лишь копеечный стабилизатор 7805 😊).

Читать далее

AtelTerminal — терминал со встроенным языком для работы с COM/Ethernet/WIFI/Bluetooth устройствами

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

В процессе борьбы со всевозможными COM/Ethernet/WIFI/Bluetooth RS-485 устройствами, в том числе встраиваемыми, программаторами и тд. столкнулся с тем, что автоматизировать работу с устройством практически нечем. Т.е. написать полноценный сценарий для имитации целевого устройства, обеспечить обмен данными с во всех возможных вариантах без ручного управления не получится ничем. На форумах умники советую брать питон, что сложно для схемотехников и иногда медленно. Самые продвинутые терминалы позволяет создавать макросы, некоторые — группы макросов без возможности полноценного анализа. Поэтому пришлось наваять терминал со встроенным скриптовым языком.

Цель — создать инструмент для широкого круга пользователей, схемотехников, радиоинженеров, которые недолюбливают среды программирования. Поэтому скриптовый язык делался максимально простым, никаких рекурсий, сложных выражений, лямбд, грамматических конструкций и пр. Также сделать простым работу с данными, предоставить возможность работать с несколькими устройствами одновременно. Унифицировать способы подключения (COM/Ethernet/WIFI/Bluetooth) устройств. Иметь в распоряжении специфические функции, которые решают задачу в комплексе.

Читать далее

Как из аппаратного цифрового входа, сделать цифровой выход? Схема с внешним ключом

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

Занимаюсь проектом, на модуле ESP32 не хватило выводов! Не особо хотелось применять расширители портов на PCF8574 и ей подобные, в связи с чем пришлось городить костыль.

DevKit v1 на базе ESP-WROOM-32, на своих выводах (pins) имеет GPIO сконфигурированные только под цифровой вход, т. е. Input! Но никак Input/Output. Это порты: GPIO34, GPIO35, GPIO36 и GPIO39.

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