Обновить
209.32

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

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

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

Мысли по поводу доклада на FPGA-Systems про маршрут ИРИС из МГУ

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

На конференции FPGA-Systems был предоставлен маршрут проектирования блоков микросхем на основе использования C++ под названием ИРИС. Докладчик - заведующий кафедрой Мехмата МГУ Эльяр Гасанов. Его группа имеет значительный опыт проектирования оптимизированных по производительности блоков, например LDPC декодера, и ведет свои истоки из сотрудничества с LSI Logic в середине 1990-х годов.

Мои мысли после просмотра презентации:

Читать далее

Как составить функцию инициализации микроконтроллера (Топологическая сортировка графов утилитой Make)

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

В программировании микроконтроллеров приходится определять порядок инициализации прошивки. Порядок тут всегда имеет значение.

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

Чтобы всё это работало надо соблюдать правильный порядок инициализации.

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

По сути это топологическая сортировка ориентированного графа зависимостей программных компонентов.

Читать далее

Шрифт на кривых Безье на микроконтроллере

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

Идея

Идею подсмотрел в канале о программировании ESP32, один человек продемонстрировал часы на 6 дисплеях. Каждая цифра на своём дисплее типа 1.8" 128х160. Разработчик проекта показал источник своего вдохновения: проект Bézier Clock на Javascript разработчика Jack Frigaard. К сожалению, видимо, ориганальная страница демонстрационного проекта не сохранилась, но она точно вдохновила разных людей. Есть даже статья на хабре про это Часы на кривых Безье. Даже не спрашивая как именно это реализовано, я сразу решил делать свой проект на кривых Безье и быстро опробовал первую версию как это будет выглядеть на дисплее.

Читать далее

Архитектура Xорошего Кода Прошивки (Массив-Наше Всё)

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

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

В этом тексте я написал о некоторых подходах к организации кода для микроконтроллеров.

Основная идея - массив наша основная скрепа.

Главные достоинства представленной архитектуры - это простота поддержки, сопровождения и масштабирования кодовой базы.

Читать далее

Kincony KC868-A256: а ты готов к настоящему хоккею?

Время на прочтение4 мин
Количество просмотров4K


Kincony решила окончательно утвердить своё имя в зале славы производителей контроллеров всех времён и народов и выпустила уникальную модель KC868-A256 аж с 512 GPIO на борту. Насколько я понимаю, никто ранее ничего подобного не делал и это действительно уникальная в своём роде вещь.

(Особенно впечатляюще KC868-A256 смотрится в сравнении с контроллерами, которые имеют всего несколько GPIO на вход и несколько GPIO на выход, а то и не имеют таковых вовсе.)

Как к этому относиться — как к демонстрации возможностей и технологическому курьёзу или как практическому девайсу для автоматизации — каждый может решить сам, мы же далее посмотрим подробно как всё это устроено и как это работает.
Читать дальше →

Матричный шрифт с анимацией на микроконтроллере

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

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

Читать далее

Второй номер народного FPGA журнала! «Погоди-ка, а когда был анонс первого?»

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

ПЛИС-культ привет, FPGA хабрунити.

На днях состоялся анонс уже второго номера народного FPGA журнала FPGA-Systems Magazine :: № BETA (state_1). В нем 200+ страниц и 20+ статей и небольших заметок по направлениям FPGA / RTL / Verification (ПЛИС сегодня это не только про знание HDL и Vivado c Quartus'ом). Журнал бесплатный и распространяется в виде pdf-ки.

Читать далее

Расшифровка startup файла Arm Cortex-M

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

В статье предпринята попытка разобраться в содержимое startup файла микроконтроллера STM32F4, построенного на базе ядра Arm Cortex M4. Для запуска ядра используется ассемблерный код, который и предстоит изучить. Для лучшего понимания материала необходимо иметь представление об архитектуре ядра Cortex M4. Сразу отмечу, что замечания и уточнения приветствуются, т. к. они позволят дополнить представленную информацию.

Читать далее

Оживляем электронный кран машиниста от электровоза

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров6.5K
Приветствую всех!
Если вы хотя бы раз видели кабину локомотива или электрички, то наверняка знаете, что для управления тормозами там используется кран машиниста — достаточно сложный пневматический прибор, призванный изменять давление в тормозной магистрали. В новых поездах эти устройства перестали быть чисто пневматическими, в них появилась ещё и электроника.
Мне всегда хотелось раздобыть такой экземпляр и показать, как он устроен. И вот наконец мне удалось это сделать, так что самое время вернуть его к жизни и узнать, на что он ещё способен.



Итак, в сегодняшней статье поговорим про такой артефакт наших железных дорог как кран машиниста №130. Узнаем, как устроен его контроллер и попробуем его восстановить. Традиционно будет много интересного.
Читать дальше →

C Linux в кармане

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

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

В путь!

Где увидеть косимуляцию в «железе» и RFSoC FPGA своими глазами?

Время на прочтение3 мин
Количество просмотров3.5K

Уже в эту субботу, 25 мая, в Санкт-Петербурге состоится ежегодная конференция FPGA-Systems 2024.1. Еще есть возможность присоединиться офлайн: не только послушать доклады про организацию верификации, ошибки FPGA-специалистов и пообщаться с коллегами, но и посмотреть на любопытные стенды, подготовленные инженерами. Один из них — «черный ящик» на КДПВ, в нем — симбиоз трех симуляторов для моделирования систем на кристалле. Что внутри — читайте под катом. 

А еще — раскрываем тайну, кто будет приглашенным спикером московской FPGA-Systems, которая пройдет 1 июня, вслед за первой конференцией.

Читать далее

Разглядывая JTAG: самый быстрый программный JTAG на Arduino

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

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

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

Субъективно, практическое применение программного JTAG мне по‑прежнему видится не вполне оправданным.
Но, во‑первых, это хороший повод рассмотреть предельные возможности микроконтроллеров.
А во‑вторых, есть формальная причина сказать, что в данной статье предлагается Решение Прикладной Задачи :)

Итак, сегодня мы поговорим про прерывания, поллинг и прочее. А протокол JTAG станет фоном для повествования.

jmp start

Все мои детальки: переход на отечественные микроконтроллеры

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

 Привет, читатель!

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

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

Читать далее

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

КодоГенератор Линейных Отображений (как ускорить создание ASIC драйвера)

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

В программировании микроконтроллеров на Си часто приходится писать драйверы для умных и навороченных ASIC чипов с управлением по I2C/SPI/MDIO интерфейсам.

Обычно перед запуском эти чипы надо правильным образом сконфигурировать.

Такие чипы всегда оперируют с реальными физическими величинами. Одновременно с этим ячейки памяти этих ASIC чипов - дискретные, двоичные. Поэтому все производители микросхем кодируют эти переменные бинарными кодами разной разрядности.

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

Читать далее

Обзор AудиоКодека NAU8814YG

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

Аудио кодек по сути это цифро-аналоговое устройство, где есть пара ADC + DAC. На входе обычно есть сумматор на операционных усилителях для подмешивания аналогово сигнала с разных проводов, есть еще аналоговые усилители. Высокоскоростной многоканальный интерфейс: I2S или TDM. И интерфейс I2C для того чтобы всем этим добром управлять.

В этой заметке я написал о своём опыте работы с ASIC аудиокодеком NAU8814.

Читать далее

Второе рождение DSP или запуск нейросетей на процессорах К1967ВН044 от «Миландр»

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров6.6K
Нейросети постепенно и незаметно проникают во все уголки нашей жизни. От огромных сеток, которые могут обыгрывать в шахматы чемпионов мира или вести беседу на уровне интеллигентного человека, до совсем маленьких, реагирующих на голосовые команды или выделяющих лица на фотографии.

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

В этой статье поделюсь нашим опытом запуска нейросетей на DSP процессоре фирмы «Миландр» К1967ВН044, тем более что в новой ревизии появился Ethernet и можно организовать быстрый обмен данными, например, с ПК.


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

Запускаем Intel 87C51 — первый крупносерийный микроконтроллер (1980)

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

  Мы принимаем как должное удобства современных микроконтроллеров - все ключевые компоненты интегрированы в один корпус: флэш-память/EEPROM, SRAM, само процессорное ядро, PLL, ADC/DAC, PWM, последовательные порты и многое другое.

  Но так было не всегда. Первым монолитным микроконтроллером был Intel 8048 (MCS-48) выпущенный в 1976 по n-МОП технологии. Не планировалось что у него будет длинный жизненный цикл и уже через 4 года в 1980 на смену ему пришел Intel 8051 (MCS-51), завоевавший мир. Не планировалось что у него будет длинный жизненный цикл и уже через 4 года в 1980 на смену ему пришел Intel 8051 (MCS-51), завоевавший мир. Он имел на борту 4КиБ однократно-программируемой памяти, 128 байт SRAM, GPIO, последовательные порт и, собственно, 8-битное процессорное ядро. Intel 87C51FC был вариантом на базе УФ-стираемой EPROM памяти (объемом 32КиБ), C-версия - на КМОП процессе, объем памяти увеличен до 256 байт.

Пару недель назад ко мне в руки случайно попал D87C51FC-20 - и я решил его запустить, чтобы прочувствовать проверенные временем технологии. Сразу отмечу - не стоит тут искать практической пользы, это скорее экскурс в историю на 44 года назад...

Читать далее

KC868-A32M: контроллер без цифровых входов (зато со всем остальным, плюс 32 мосфета)

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


Похоже Kincony перешла к созданию откровенно экзотических моделей (видимо все тривиальные она уже выпустила) для пресыщенных её продукцией фанатов автоматизаторов.

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

Ну ладно, вначале мы ужаснулись, теперь давайте попробуем разобраться с тем, что представляет собой KC868-A32M.
Читать дальше →

Настройка связки VScode, OpenOCD, WCH-LinkE, Cortex-M

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

Wch-link является программатором для ARM, RISC-V микроконтроллеров. По возможностям это аналог St-link, JLink и прочих. По сравнению с st-link он поддерживает контроллеры не только фирмы STM. А по сравнению с JLink стоит намного дешевле и не имеет проблем с лицензиями, которые могут встречаться у дешевых клонов JLink. Также плюсом идет поддержка набирающих популярность контроллеров от китайской компании WCH.

Есть несколько вариантов этого отладчика, я буду говорить о версии Wch-linkE rev 1.3.

Читать далее

Поросенок найден (80186)

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

Наверное многие слышали историю, рассказанную М. Задорновым в одном из своих выступлений, про трех поросят выпущенных в американской школе с номерами 1, 2 и 4 с панчлайном о том, как полиция долго искала поросенка номер 3.

Мое знакомство с компьютерами типа IBM PC происходило по похожему сценарию. В юности (начало 90х), в скудной литературе регулярно мелькали процессоры 8086(8088) и 80286, 386, затем 486 и т.д. Однако процессор 80186, который было бы логично ожидать не попадался.

Читать далее

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