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

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

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

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

Рассматриваем циклы процессора в контроллере CH32x035

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

Когда мне предстоит начать работу с новым микроконтроллером, я обычно гляжу, а какое у него быстродействие GPIO. Сколько тактов на одну запись уходит по факту. Такая у меня традиция. Было дело, я так выяснил, что китайские клоны STM32 работают с GPIO чуть быстрее, чем оригинал. Для дешёвых контроллеров обычно ничего более интересного такие проверки не выявляют, но традиция есть традиция. Не изменял я ей и при начале освоения CH32x035 на базе RISC-V. И вот для него картинки получились такими интересными, что я решил поделиться ими с общественностью. Не то, чтобы там было что-то революционное, но от привычных мне они точно отличаются.

А ещё я добавлю к ним немного выводов… И нутром чую, что в комментариях мне объяснят, что я понимаю всё неправильно, а на самом деле… Но я буду только рад обоснованным высказываниям. Вместе мы установим истину.

Читать далее

SSD NVME M.2 через PCIe на Repka Pi 4 — это новый уровень. Впечатления, тесты, сравнения скорости

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

Недавно появилась новая модель Российского одноплатного микрокомпьютера - Repka Pi 4 Optimal, в котором множество улучшений - можно устанавливать модуль eMMC (Embedded MultiMediaCard), чтобы использовать его вместо карты памяти SD как для хранения данных, так и для загрузки операционной системы, но и это оказалось не самой главной “фишкой” новой модели Repka Pi - вскоре появилась версия платы этого одноплатника с интерфейсом PCIe 2.0 1x полностью совместимый с PCIe Raspberry Pi 5, т.е. все платы расширений для RPi 5 работают на Repka Pi 4 Optimal PCI. И это уже по настоящему интересно. Давайте посмотрим и попробуем вместе.

Читать далее

О мостиковых схемах и асинхронной логике

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

Александр Кушнеров
10.01.2025

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

1. Введение

Замыкание выхода комбинационной схемы на один или несколько её входов может дать новую комбинационную схему. Поскольку данные обрабатываются от входов к выходам, обратную связь можно представить как направленную петлю на графе. С другой стороны, графы, которые задают контактные мостиковые схемы, содержат не направленные петли (циклы). Именно из-за петель такие схемы часто являются минимальными. Преобразование графа мостиковой схемы в последовательно-параллельный соответствует схеме на логических элементах. Это преобразование размыкает все петли и называется декомпозиция в базисе И/ИЛИ. Мы будем рассматривать декомпозицию, которая даёт минимальное количество логических элементов. Чтобы корректно замкнуть полученные схемы нужно выполнить определённые условия. В качестве этих условий мы используем известную замкнутую схему.

В инженерной практике релейно-контактные мостиковые схемы начали использоваться по крайней мере со второй половины 1890-х годов [1]. Однако, привлечение булевой алгебры для их анализа и синтеза состоялось лишь во второй половине 1930-х годов [2]. Рассмотрим простейшую мостиковую схему из пяти замыкающих ключей (контактов), назовём её K5. Каждый ключ в этой схеме управляется своей переменной. Присвоить переменные можно например так, как показано в Табл. 1. Последовательное соединение ключей записывается как произведение переменных, а параллельное – как сумма. Таким образом, чтобы записать булеву функцию схемы в дизъюнктивной нормальной форме (ДНФ), нужно найти все возможные пути от входа к выходу.

Читать далее

Велика ли полуночная невязка двухлучевых инфракрасных счётчиков

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

Как известно, инфракрасные счётчики зарабатывают себе на жизнь, считая людей. Обычно, на входах в торговые центры и отделы.

Самый бесхитростный из них — счётчик с одним инфракрасным лучом. Он считает подряд всё, что движется. Точнее, всё, что прерывает его луч. Неважно, входит человек или выходит: счётчик добавит к переменной‑сумматору одну единицу.

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

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

Как оценить эту расплывчатость? Какова типичная величина ошибок счёта для этого случая? Выясним это на практике.

Читать далее

Пишем приложение для SIM-карты

Уровень сложностиСложный
Время на прочтение12 мин
Количество просмотров33K
Приветствую всех!

Думаю, многим из вас доводилось слышать такое утверждение, что SIM-карта — по сути полноценный специализированный компьютер. А раз симка — это компьютер, то, очевидно, должен быть и софт для него. Как насчёт попробовать что-нибудь написать и заставить это работать прямо на карте? Давайте разбираться.



Итак, в сегодняшней статье поговорим про эту довольно редко упоминающуюся сторону сотовой связи. Узнаем, как писать приложения, чтобы они запускались на всех телефонах, от Nokia 3310 до последних айфонов. Попутно выясним, как загружать их в SIM-карты и насколько сложно это сделать, и, конечно же, напишем наш первый апплет. Традиционно будет много интересного.
Читать дальше →

Chisel вместо Verilog, искажение тактового дерева и прототипирование ASIC: прокачиваем FPGA-скилы новыми темами

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

Осенью мы в YADRO совместно с сообществом FPGA Systems собрали FPGA-энтузиастов сразу в двух городах — Москве и Санкт-Петербурге. Получилось почти 12 часов докладов — по проектированию на FPGA и ASIC, альтернативным HDL, запуску GPU AMD на ПЛИС с RISC-V, искажению времени и другим фантастическим явлениям темам. Самые полезные, по мнению зрителей, — в этом посте.

Читать далее

DIY LED Cube. Часть 2: превращаем Arduino Nano в ESP32 (а что, так можно было?)

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


Понятно, что ESP32 в качестве управляющего контроллера для любого девайса, в том числе и светодиодного куба, — это гораздо интереснее, чем «простенькая» Arduino Nano, но AlexGyver в своём базовом проекте почему-то остановился именно на Arduino Nano.

Мы же пойдём дальше и оснастим наш LED Cube современным ESP32 со всеми присущими ему возможностями: Bluetooth, Wi-Fi, двумя 32-разрядными ядрами, большим объёмом памяти и прочим, что позволит в дальнейшем оснастить куб беспроводными интерфейсами и включить его в IoT систему.

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

Об этой сакральной магии и поговорим далее…
Читать дальше →

Хотите перейти из FPGA в ASIC design? Вот упражнение для разминки. И сомбреро в подарок

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

Уже пара тысяч человек успели поработать с упражнениями по SystemVerilog и FPGA из репозитория BGM - basics-graphics-music. Они используются в Школе Синтеза Цифровых Схем в России и Беларуси, а также на Verilog Meetup в Silicon Valley, а предыдущие версии использовались на семинарах в Украине, Казахстане, Киргизии, Грузии, Армении и Азербайджане.

Прошлым летом мы перенесли два упражнения из BGM и одно упражнение из systemverilog-homework в инфраструктуру Tiny Tapeout для проектирования ASIC. Tiny Tapeout - это компания, которая работает с eFabless и фабрикой Skywater и позволяет студентам и любителям сделать собственные микросхемы за карманные деньги.

И вот сейчас хотелось бы интегрировать BGM и Tiny Tapeout всерьез, для планируемого семинара в Мексике. Идея простая: группа из 30 студентов упражняется неделю на верилоге на платах Tang Nano 9K с графическими экранчиками и интерфейсными модулями TM1638. А потом их дизайны переносятся в репозитории на основе варианта темплейта от Tiny Tapeout - и мы вместе оформляем заказ на производство чипа на фабрике.

А какое участие я хочу от вас? А вот какое:

Читать далее

Смотрим на шину I2C через осциллограф

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

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

Итак, рассмотрим поведение шины I2C при работе с микроконтроллером stm32 с использованием библиотеки HAL. На шине I2C1 подсоединена микросхема EEPROM 24LC21.

Согласно описанию на микросхему ее адрес на шине – 1010ххх(7бит), где ХХХ – не имеет значения, хоть ноль, хоть единицы. Следом за адресом устройства идет 8й бит R/W̅. Этот бит говорит slave-устройству, что нужно будет делать дальше – принимать или отдавать данные. Если лог 0, то slave-устройство будет принимать данные (write), то есть запись в slave-устройство. Если лог 1, то slave-устройство будет отправлять данные (read), то есть чтение из slave-устройства. Когда slave-устройство видит на шине свой адрес, то на 9м тактовом импульсе (на линии SCL) оно прижимает линию SDAв ноль, сообщая master-устройству о своем присутствии на линии. Если мастер выдал адрес, но устройства с таким адресом на шине не обнаружилось, то на 9м тактовом импульсе линия SDAбудет в единице. Это девятый бит называют битом подтверждения, acknowledge bit (А, АСК). Каждый обмен сообщениями обрамляется стартовым и стоповым битом. Стартовый бит это состояние когда при высоком состоянии линии SCL линия SDA прижимается к нулю. Стоповый бит это состояние когда при высоком состоянии линии SCL линия SDA прижимается к единице.

Читать далее

Обнаружение устройств через UPnP / SSDP

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

Что больше всего бесит при первом запуске устройств с управлением по Ethernet? Необходимость его искать в сети с использованием зоопарка из подходов. Тут используются программы автопоиска (например Winbox для MikroTik), дефолтные IP адреса (все эти 192.168.1.1, 192.168.100.1, 192.168.2.1 - кто во что горазд). Иногда надо со смартфона показывать QR коды в камеру устройства или передавать настройки тональными сигналами в микрофон. Мы задались целью найти стандарт для поиска устройств в сети и внедрить его в свои устройства на основе микроконтроллеров и/или одноплатных компьютеров. Это статья о стандартах, их особенностях, преодолённых трудностях и об открытом коде, который мы написали для себя и считаем лучшей в мире открытой реализацией SSDP сервера и клиента.

Читать далее

Сонар из Диктофона

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

Что если из диктофона сделать акустический локатор?

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

Все вычисления осуществлены в пост обработке.

Читать далее

Кроссплатформенный терминал Modbus TCP / RTU / ASCII с открытым исходным кодом: Часть 3

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

Встречайте новое обновление моего терминала!

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

Главные фичи этой версии это макросы с пользовательскими именами, работа с байтами в режиме "Без протокола" и поддержка протоколов Modbus RTU и ASCII поверх TCP.

Читать далее

STM32. CMSIS. Использование UART в качестве таймера для генерации периодических прерываний

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

В данной статье рассматривается применение UART в качестве «таймера» для генерации прерываний с заданной периодичностью. Будут рассмотрены два способа настройки, один с применением контроллера DMA, второй — без него.

Читать далее

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

FreeRTOS для самых маленьких на примере ESP-IDF

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

Все мы знаем, что FreeRTOS — это операционная система для проектов, где каждой задаче установлены строгие рамки времени, чтобы любое действие было гарантированно обработано. На этом познания об этой системе у большинства айтишников заканчиваются, по той простой причине, что 99% из нас не собираются никогда в жизни разрабатывать ничего наподобие софта тормозной системы автомобиля или медицинского оборудования. Но я бы хотел сегодня немного рассказать об этой системе, потому как она вполне может пригодиться многим из нас по другим причинам. Ведь FreeRTOS вполне может оказаться отличным следующим шагом для саморазвития после Arduino, потому как поддерживает невероятное количество процессоров и при разрастании проекта немногим сложнее «Hello World» её использование будет проще для написания кода за счёт своей продуманной архитектуры. Её можно использовать на микроконтроллерах, с которыми многие уже привыкли работать в своих проектах выходного дня и которые обходятся в смешные деньги, например AVR, ESP32 и STM32. Сегодня я покажу, насколько просто использовать преимущества FreeRTOS на примере контроллера ESP32 и фреймворка от производителя Espressif — ESP-IDF, для своей линейки микроконтроллеров.
Читать дальше →

STM32. CMSIS. Пять способов генерации (псевдо-)случайного сигнала на выводе микроконтроллера

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

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

Читать далее

RP2040. Асинхронный вывод в UART по прерываниям

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

Это статься для «ардуинщиков» на платформе RP2040. В ней расскажу, как программировать асинхронный вывод в UART на C с помощью прерываний. А также затрону тему почему я выбрал для себя PR2040 и мигрировал на него с платформы STM32.

Читать далее

Использование Assembler'a. Фишка 1

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

Решил по мере сил делиться примерами использования ассемблера в своих проектах. Я не буду рассуждать о том, надо это или не надо конкретно в вашем проекте. Просто показываю, а выводы делаете вы сами.

Читать далее

DIY LED Cube: ультимативный гайд для сильных духом. Часть 1. Сборка

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


В народе говорят, что каждый радиолюбитель должен собрать своими руками хотя бы один радиоприёмник, а каждый настоящий DIY-щик — LED Cube. Действительно, какой же ты радиолюбитель, если не собрал ни одного радио? (смайл)

Со светодиодным кубом тема интересная, но имеет множество «нюансов», поэтому я всё время откладывал построение собственного куба. И, как выяснилось, не зря — если бы я только знал во что ввязываюсь, то скорее всего никогда бы не взялся за этот проект.

На деле всё вылилось в просто-таки экзистенциальный вызов и испытание, которое может пройти только человек с узкой задницей стальными нервами, кучей навыков и умений и непреклонной волей к победе — иначе вся эта конструкция уже на сотом светодиоде полетит через всю комнату в мусорное ведро (или просто тупо не включится после подачи питания).

Но зато, если ты преодолел все трудности и создал это маленькое чудо, то можешь наслаждаться как самим девайсом (а это совершенно замечательная штука, особенно в умелых руках), так и осознанием того, что ты сдал экзамен на звание DIY-щика 80-го уровня (смайл).
Читать дальше →

DIY фитнес-трекер: выводим пульс на LED-матрицу, записываем данные IMU на SD и передаем в интернет

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

Ничто так не поднимает настроение, как продолжительная анаэробная тренировка. Но здесь важно не переусердствовать. В нашем возрасте (50+) тренировка может как улучшить самочувствие, так и ухудшить его. Поэтому во время бега я всегда контролирую пульс.

Читать далее

Светодиодная звезда из елочной игрушки

Время на прочтение2 мин
Количество просмотров8.3K
Приветствую, Хабр!



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

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