Все потоки
Поиск
Написать публикацию
Обновить
167.36

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

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

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

Патчим OpenOCD для поддержки чипа NOR Flash

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

Disclaimer: "чукча не писатель, чукча читатель"

UseCase 0: надоело переподключать плату с RP2040 и захотелось загружать прошивку из IDE по кнопке "Run"
UseCase 1: хочется пошаговой отладки, а не принтами.

Установил на одну из плат DebugProbe и попробовал подключиться.

Оказалось не все так просто - OpenOCD плевался на неизвестное устройство:

окунуться

Конечный Aвтомат Аппаратного I2C-Трансивера

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

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

Меня удивляет, что в оригинальном коде от вендоров микроконтроллеров программисты прошли мимо конечных автоматов при написании I2C кода внутри своих официальных uHAL. Непорядок...

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

Читать далее

KC868-A16S: тоже железный, но в два раза дешевле

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


Продолжаем обзоры новой «железной» серии контроллеров Kincony и на этот раз разберём очередного её представителя — KC868-A16S. В прошлом обзоре комментаторы справедливо заметили, что сколько бы ни был хорош контроллер, но цена в 50 тыс. рублей не очень гуманна — в этом смысле KC868-A16S выглядит гораздо привлекательнее: внешне он почти неотличим от AIO, имеет тот же металлический корпус, развитый функционал, а стоит при этом в два (а в некоторых конфигурациях и в три) раза дешевле.

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

Краткий обзор TinyML

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

TinyML сам по себе означает внедрение ml в маломощные микроконтроллеры и встроенные системы. Это устройствам IoT выполнять задачи обработки данных и машинного обучения непосредственно на самом устройстве, минимизируя таким образом необходимость в постоянном подключении к интернету или внешним вычислительным ресурсам. Основная цель TinyML - сделать ии или простые модельки доступным для самых маленьких устройств

Читать далее

Запускаем кодек OPUS на микроконтроллере

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

Исходные данные – есть контроллер STM32 с очень ограниченной памятью, а мы хотим записывать на нем звук. Допустим, что примеров с подключением выбранного нами микрофона гора и маленькая тележка. В итоге имеем контроллер, который умеет выдавать нам WAV-подобный сигнал. Хотелось бы этот WAV-сигнал куда-то записать или передать. Таких данных будет очень много, есть ненулевая вероятность, что мы не влезем по полосе пропускания используемого канала или заполним память до того, как получим нужную информацию. На помощь нам спешит компрессия!

Читать далее

STM32 SAI и микрофон INMP441

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

Представим, что у нас есть STM32L4 серии и на нем мы пытаемся подключить микрофон INMP441 через интерфейс SAI. Данный микрофон выводит данные сразу в PCM коде и имеет хорошие звуковые характеристики для своего ценового диапазона.

Читать далее

Какие бывают Cortex-M7 ARM-ы, периферия, шины, память, … DMA

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

На рисунке приведена структурная схема современного, одного из самых навороченных (я подозреваю) 32-битного ARM процессора или микроконтроллера-microcontroller, в документации используются оба термина: high-performance Flash microcontroller (MCU) based on the 32-bit ARM Cortex-M7 RISC (х.хх CoreMark/MHz) processor.

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

Все это богатство убирается в микросхеме, которая по объему заметно меньше спичечного коробка. Вы легко можете найти достаточно подробное техническое описание (datasheet) узлов, систем, настроек, спецификаций по этой-такой схеме. Давайте попробуем коротко пройтись по одному из таких описанию, ссылки в конце статьи.

Читать далее

ClimateGuard CG LED: Новый Год к нам мчится…

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


Эта статья посвящена обзору универсальной платы управления светодиодными лентами ClimateGuard CG LED. В ней даётся краткое описание устройства платы контроллера CG LED и мои первые впечатления от работы с ней. В статье также упоминается первичная настройка прошивки WLED, которой штатно комплектуется контроллер.

Пока это только обзор платы без реализации каких-либо проектов на ней, возможно этой теме будут посвящены последующие статьи.
Читать дальше →

Готовим драйвера МК для проброса периферии

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

В предыдущей статье рассматривался принцип, как можно прокинуть периферию микроконтроллера (UART, I2C, CAN bus etc) в обычную ПК программу, так как если бы она входила в состав нашего компьютера и висела на обшей шине с памятью. В той публикации рассматривается теория и инструменты, которые позволяют это сделать. В этой части мы рассмотрим, как на практике осуществляется подготовка кода драйверов к инструментизации ADIN LLVM pass и последующей сборке в отдельную динамическую библиотеку, которую вы можете использовать в своих проектах

Готовим код драйверов

Starting Electronics: руководство по веб-серверам на Arduino. Часть 17. Завершающий урок и итоги

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


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

Это стартовая площадка, которая даёт базовое понимание ключевых технологий: микроконтроллеры, сетевое взаимодействие, структура веб-страниц, HTML, CSS, JavaScript, Ajax, Wiring, C++ и т. д. и т. п. и позволяет в дальнейшем проектировать и создавать ваши собственные IoT системы.

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

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

Графическое программирование конечных автоматов для Arduino. Часть 1

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

Как только сложность программы выходит за пределы "Hello Word!", у начинающих ардуинщиков появляются проблемы. Самая тяжелая из них - удержать в голове структуру программного кода. Нельзя сказать, что у опытных программистов встраиваемых систем этой проблемы нет. Достаточно попытаться реанимировать собственный проект двухлетней давности, если он недостаточно документирован, то включиться в работу будет очень трудно.

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

Все это хорошо, но новичку просто лениво. Зачем что-то рисовать, если того же результата можно добиться несколькими строчками кода? Ответ: макрокоманды. Такие, например, как WAIT(Time,Counter), она позволяет с легкостью организовать временную задержку. И это будет вовсе не Delay(Time) от Arduino, которая остановит выполнение всего остального пользовательского кода. Нет. По предоставляемым возможностям ближайшей аналогией будет RTOS - операционная система реального времени. Если один автомат замер в ожидании отсчета времени, то остальные автоматы проекта будут продолжать работать.

Рассмотрим практическое использование графических конечных автоматов под Arduino на примере часов-метеостанции.

Читать далее

Путь проектирования и программирования железа для управления электродвигателем в наноспутнике

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

Путь проектирования и программирования железа для управления электродвигателем в наноспутнике.

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

Читать далее

RTC: Обзор микросхемы часов DS3231

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

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

Читать далее

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

Как начертить диск энкодера (или черчение кодом)

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

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

Однако есть языки программирования для черчения. Вот, например, Asymptote: The Vector Graphics Language отличный вариант для авто генерации чертежей.

Читать далее

nRF52832. Реализация сопряжения и списка доверенных подключений

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

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

Читать далее

Zabbix-мониторинг российского микрокомпьютера Repka Pi

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

В этой статье я расскажу о настройке Zabbix-мониторинга российского одноплатного микрокомпьютера Repka Pi 3, разработанного НПО Рэйнбовсофт (Rainbowsoft) из Саратова. Помимо параметров, доступных для мониторинга с помощью стандартного агента Zabbix, с помощью шаблона  zabbix-agent-on-repka-pi, рассмотренного в этой статье, вы сможете поставить на контроль температуру CPU и GPU, а также тактовую частоту ядер процессора.

Читать далее

NVRAM Поверх off-chip SPI-NOR Flash

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

Настал первый случай за 12 лет, когда в программировании микроконтроллеров понадобились бинарные деревья поиска.

В этом тексте поговорим о том как можно построить эффективную программную реализацию энергонезависимой Key-Value Map(ки) над дешевой SPI NOR Flash для микроконтроллерных проектов. Суть проста. Нужна NVRAM.

Читать далее

Сборка firmware для CC2652 из Makefile

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

В этом тексте представлена инструкция настройки ToolChain(а) для работы с микроконтроллером CC26x2 при помощи языка программирования С и компилятора GCC. Сборка осуществляется прямо из Makefile(ов).

Тут же представлена инструкция для настройки пошаговой отладки в консоли Windows.

В принципе, если вы собираете из Makefile, то вам всё равно какой там микроконтроллер и какого он вендора. Для добавления поддержки очередного MCU достаточно написать всего один *.ld и один *.mk файлик.

Во многом по этому сборка из Makefile является предпочтительнее, когда в организации много разнообразного оборудования на разных МК (или просто много сборок) и одна переносимая кодовая база на всё.

Читать далее

Программирование контроллера сервоприводов MC50. Развёртывание промежуточного ПО

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

Схема и плата контроллера - в этой статье.

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

Читать далее

Язык Graphviz для Автогенерации Блок-Схем Сложных Электронных Цепей

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

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

Читать далее

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