Обновить
240.9

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

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

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

OpenRPNCalc: делаем бескомпромиссный калькулятор

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

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

Но зачем?

ESP32 тоже отчасти немножко ПЛИС? Делаем динамическую индикацию на матрице светодиодов за 0 тактов процессора

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

Пару месяцев назад в очередной раз занесло меня в Акихабару, и конечно же я не мог не заглянуть в свой любимый Akizuki Denshi.

Там обнаружились некие светодиодные панели, светившиеся на демонстрационном стенде приятным малиновым цветом, примерно как полоса прокрутки на ютубе. Я скромненько прикупил себе 4 блока, однако оказалось, что они требуют реализации динамической индикации — того, чего я так старательно избегал во всех остальных своих часах.

Делать нечего, придётся пилить — и давайте попробуем сделать это, совершенно не занимая процессор!

Читать далее

HabraTab — девайс для хаброзависимых

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

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

Что же получилось?

Самодельный лидар: OpenTOFLidar

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

В этой статье я хочу рассказать про свой проект импульсного (TOF) Open Source лидара — о том как я его делал, и каких результатов удалось добиться.
top-picture

Читать дальше →

Первые впечатления от 1921вг015, отечественного RISC-V контроллера

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

рис.1


Недавно мне в руки противоестественными путями попал интересный представитель RISC-V контроллеров производства НИИЭТ. Упакован он в пластиковый lqfp100 корпус, в котором скрывается ядро на 50 МГц, мегабайт флеш-памяти и 256 кБ оперативки. Разумеется, в наличии и стандартная периферия вроде UART-ов, SPI и USB. А вот из необычного — сигма-дельта АЦП на 16 бит. Ну и всякая неинтересная периферия вроде аппаратных модулей шифрования. Сразу оговорюсь, что тыкаю палочкой я его меньше двух недель, поэтому здесь описаны именно первые впечатления.

Читать дальше →

Механическая видеостена с ядерным Ambilight на 2300 зон

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

Однажды я подбирал себе новый монитор и немного увлёкся — получилось чудище во всю стену из трёх телевизоров с ядерной 2318-зональной подсветкой 40 000 люмен на STM32.

Читaть далее

Создаем простейшее usb-устройство для общения со своей программой

Время на прочтение7 мин
Охват и читатели120K
В продолжение темы о создании собственного USB-гаджета.
Создание простого устройства.

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

Жгём-шьём контроллеры и кормим ядерную подсветку

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

Четыре сгоревших STM32, три блока питания, 90 ампер, синяя сосиска, 16 бубенчиков и электродиффузия — в этой части кормим подсветку для трёх теликов, пишем с нуля протокол адресных светодиодных лент WS2812b и обматываемся коаксиальными проводами.

Осторожно, трафик!

Открытый проект индуктивного абсолютного энкодера

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

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

Читать далее

Hard Fault (или Вы в Самом Деле Хотите Стать Программистом Микроконтроллеров?)

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

В этом тексте я напишу о буднях программиста МК в РФ.

Вы сможете прикинуть нужна ли Вам эта профессия.

Особенности российского-национального программирования микроконтроллеров.

Что вообще пишут программисты МК и на чем?

Основной язык программирования это С. Языку С уже более 50лет. Кроме микроконтроллеров С уже практические никому не нужен. Навыки программирования на С очень слабо конвертируются. В свое время, видимо на С написали компилятор для С++ и нужда в С для desktop как таковая отпала. A сам С остался для сборки артефактов для микроконтроллеров с экстремально малыми ресурсами. Хотя и сейчас большинство компаний в ЕС уже микроконтроллерные сборки собирают на С++ 17. 

Читать далее

Инженерный подход к подаркам

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


За окном дождь, на календаре декабрь. Близится пора праздников, а значит и пора подарков. Коллега Павел желает себе новый ноутбук, а подруга Маша хочет домик у моря. И несмотря на достойный оклад профессии “тыжпрограммист”, мы не живём в мире бесконечных возможностей, а значит я не могу подарить этим людям именно то, чего они хотят больше всего (даже несмотря на то, что Паша может быть мой самый лучший Павел, которого я знаю, а Маша просто молодец).

Тут и появляется проблема “дешёвых подарков”. Подарить дорогой подарок всем не получается, а дарить очередную коробку конфет, свечку или невнятную статуэтку бог_пойми_чего просто не хочется. Значит нужно объединить приятное с полезным — я люблю делать вещи своими руками, а полученный результат отлично подходит в качестве подарка. Это рассказ о том, как я в очередной раз прикидывался инженером и рукожопил несколько подарков.
Читать дальше →

Смотрим внутренности отечественного 28нм MIPS процессора — Baikal-T1

Время на прочтение2 мин
Охват и читатели81K
Думаю многие уже слышали про реализованный московскими разработчиками Байкал Электроникс процессор Байкал-Т1 — с двумя ядрами Imagination Technologies P5600 MIPS 32 r5 и набортным 10GbE. Байкал оказался первым, кто реализовал в кремнии это ядро.

Терзал этот процессор я с перерывами больше года — но наконец под катом могу поделиться результатами.
Читать дальше →

STM32. Процесс компиляции и сборки прошивки

Уровень сложностиПростой
Время на прочтение30 мин
Охват и читатели55K
Многие из начинающих разработчиков софта для микроконтроллеров реализуют свои проекты исключительно в средствах разработки, которые предоставляются производителем. Многое скрыто от пользователя и очень хорошо скрыто, из-за чего некоторые воспринимают эти процессы сродни настоящей магии. Я, в свою очередь, как человек в пытливым умом и природной любознательностью, решил попробовать собрать проект без использования IDE и различного рода автоматизаций.

Так родилась идея для этой статьи: не используя ничего, кроме текстового редактора и командной строки, собрать проект мигания светодиодом на отладочной плате STM32F0-Discovery. Поскольку я не до конца понимал, как происходит процесс компиляции и сборки проекта, мне пришлось восполнять пробелы в знаниях. Разобравшись с этим вопросом, я подумал — а почему бы не рассказать другим об этом?

Всем кому интересно — добро пожаловать под кат! 🙂

Читать дальше →

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

Подключаем «крысу» от ЕС ПЭВМ к современному ПК

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

Этот шедевр советской компьютерной промышленности знаком любому интересующемуся компьютерной историей. А некоторые из тех, кому довелось с ним работать, называли его не иначе как «крысой». И вот спустя много десятилетий после его выпуска я задумался: а что, если подключить этот девайс к обычному компьютеру? Именно этим мы сегодня и займёмся.



Итак, в сегодняшней статье поговорим про мышь от советского персонального компьютера ЕС1841. Узнаем, как заставить её работать и так ли она сурова, как можно подумать. Традиционно будет много интересного.
Читать дальше →

Как я Капсулу Нео от VK исследовал

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

Всем привет!

Исправления давно в проде, а конфа OFFZONE 2024, на которой я выступил с этим докладом, закончилась — пришло время и на Хабре рассказать об исследовании умного девайса от VK под названием «Капсула Нео» (далее — «Капсула»).

О том, что мне удалось найти и с чем пришлось столкнуться за время проекта, читайте под катом.

Исследование шаг за шагом

Как мы делали БелАЗ. Часть 3 – Пусконаладка на разрезе

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


Это третья статья из цикла о самосвале (первая, вторая). Теперь мы едем на карьер, устанавливать электрооборудование на машину и выезжать в первый рейс! Но, конечно же, так просто, с наскоку, ничего не ездит, и я расскажу про множество проблем с которыми мы столкнулись во время командировки. Хоть мы и испытали в прошлой статье все оборудование на лабораторном стенде, реальность бьет совсем с другой стороны. В этой статье будет много видео и фотографий!

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

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

Осторожно: помните ли вы, как в вашем телефоне Siemens, Motorola и Sony поселились маленькие программы — «эльфы»? В рамках этой статьи мы во всех деталях исследуем прошивку бюджетного кнопочника, разберемся в её архитектуре, хакнем и напишем загрузчик тех самых эльфов с MicroSD-флэшки. При этом я постараюсь объяснить всё максимально простым и доступным языком!

Недавно я познакомился с легендой форума allsiemens.ru — Ilya_ZX, который известен своим огромным вкладом в тему реверса и моддинга телефонов на платформе E-Gold и S-Gold. Илья поведал мне интересную историю о том, как в начале нулевых, будучи студентом, поспорил с одногруппником, сможет ли он добавить ‭‭«змейку‭‭» в свой Siemens A60. И спор он этот выиграл, путем бессонных ночей ковыряния прошивки в IDA Pro! Я подумал ‭‭— «а чем я хуже?‭‭». Взял в руки кнопочный телефон на платформе Spreadtrum, сдампил прошивку и загрузил в дизассемблер...

Если вам интересен подробный процесс реверса различных модулей прошивки, как они взаимодействуют между собой, как я написал программу для применения патчей к фуллфлэшу и, собственно, бинлоадер с первой программой — жду вас под катом!

Читать далее

Что делать, когда выпускник топ-10 мирового вуза не может спроектировать блок сложения A+B

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

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

Когда я вижу у недавнего выпускника в резюме какой-то из протоколов в котором используется valid/ready, например AXI или AHB, я прошу его спроектировать блок, у которого на входе два числа A и B, а на выходе их сумма. Разумеется не просто написать SUM=A+B, а еще и поставить valid/ready сигналы на каждый из A, B, SUM, чтобы A и B могли приходить в разное время, а также чтобы блок ждал, если SUM не может быть передана другому блоку сразу.

Некоторые не справляются. Грустно смотреть на человека, который потратил 6 лет своей жизни (4 года в бакалавриате и 2 года в магистратуре) и океан денег на образование - и не может сложить два числа и бьется как угорь на сковородке. То блок не работает когда числа приходят в разное время, то создатель забывает снять valid, и блок на 2+2 выдает не 4, а 4-4-4-4-4-4-4... То числа складываются не попарно, а просто записываются в регистры и на выход идет их текущая сумма, хотя количество аргументов A и B не совпадает. То не отрабатывается backpressure и результаты теряются, то (после того как кандидат написал страницу кода на верилоге) блок работает на половинной производительности, то есть не может принимать поток чисел подряд, а ожидает между ними пропуски (gaps). Короче ведет себя как ChatGPT.

Как же прокачаться чтобы такого не было?

Самые Эпичные Баги при Программировании Микроконтроллеров

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

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

Самый типичный баг - это зависание прошивки.

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

Читать далее

Процессор, который использовался в «Тетрисе»: на каких SoC работала недорогая микроэлектроника в 90-х?

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

В наше время большинство портативных устройств работает на базе достаточно мощных микроконтроллеров, которые способны запускать даже интерпретируемый код на Lua/Python. Чего уж там говорить — даже современная кофеварка или умный электрочайник может быть в разы мощнее оригинального IBM-PC, не говоря уже о автомобильных бортовых компьютерах, которые зачастую мощнее топовых ПК из начала нулевых. Но давайте вспомним конец 90-х и начало 2000-х, когда разработка собственной электроники была практически недоступна рядовому пользователю, а микроконтроллеры программировались в основном только на ассемблере. Недавно я нашёл некоторую информацию о том, какой процессор вероятно использовался в таких знакомых нам приставках Brick Game, которые мы называли «Тетрисами»! Более того, мне удалось найти полный даташит с описанием всех модулей этого процессора, который гордо можно назвать «система на кристалле». Какой была разработка микроэлектроники в 90-х? Читайте в статье!
Читать дальше →

Вклад авторов