Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

Транслируем искусство через робототехнику

Разработка робототехникиПрототипированиеЧитальный залРобототехникаDIY или Сделай сам
Из песочницы

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

Читать далее
Всего голосов 9: ↑9 и ↓0 +9
Просмотры2.6K
Комментарии 4

STM32 LTDC и 7-дюймовый дисплей: часть 1

Программирование микроконтроллеров
Из песочницы

Речь пойдёт подключении дисплея AT070TN94 с параллельным интерфейсом к контроллеру STM32H743, начиная от выбора электронных компонентов, заканчивая настройкой блока LTDC. И хотя в сети достаточно много информации по данной теме, при создании своего устройства у меня периодически возникали те или иные вопросы, ответов на которых найти не удавалось. Пишу в первую очередь для новичков, а профи приглашаю почитать ради советов и аргументированной критики (первая статья как-никак). Приступим.

Заинтересовало
Всего голосов 35: ↑34 и ↓1 +33
Просмотры10.5K
Комментарии 16

USB на регистрах: interrupt endpoint на примере HID

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


Еще более низкий уровень (avr-vusb)
USB на регистрах: STM32L1 / STM32F1
USB на регистрах: bulk endpoint на примере Mass Storage
USB на регистрах: isochronous endpoint на примере Audio device

Продолжаем разбираться с USB на контроллерах STM32L151. Как и в предыдущей части, ничего платформо-зависимого здесь не будет, зато будет USB-зависимое. Если точнее, будем рассматривать третий тип конечной точки — interrupt. И делать мы это будем на примере составного устройства «клавиатура + планшет» (ссылка на исходники).
На всякий случай предупреждаю: данная статья (как и все остальные) — скорее конспект того, что я понял, разбираясь в этой теме. Многие вещи так и остались «магией» и я буду благодарен если найдется специалист, способный объяснить их.
Читать дальше →
Всего голосов 27: ↑25 и ↓2 +23
Просмотры3.6K
Комментарии 4

MIDI браслет для управления синтезаторами (в основном — для органично звучащего вибрато)

Программирование микроконтроллеровРазработка под Arduino3D-принтерыDIY или Сделай сам
Из песочницы

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

Обычно МИДИ клавиатуры оснащены питчбенд колесами, сенсорными полосками или джостиками, но они редко производят естественно звучащий результат и оккупируют одну из рук полностью. Именно по причине неестественности звучания одна из осей джойстика как правило привязана к вибрато.

Читать далее
Всего голосов 30: ↑30 и ↓0 +30
Просмотры3.2K
Комментарии 14

Умные дворники: автоматизируем автомобиль

ТензорСхемотехникаDIY или Сделай самЭлектроника для начинающих

Рассказ об опыте создания "с нуля", от идеи до рабочего устройства, простой автоматизации для своего автомобиля. Используя микроконтроллер STM32 и CAN-шину автомобиля сделаем жизнь автолюбителя немного проще и приятнее.

Читать далее
Всего голосов 68: ↑66 и ↓2 +64
Просмотры21.5K
Комментарии 160

CAT-интерфейс для трансивера «Радио-76»

RUVDS.comРазработка систем связиПрограммирование микроконтроллеровDIY или Сделай самЭлектроника для начинающих
Tutorial

В предыдущей публикации о трансивере «Радио-76» упоминалось о синтезаторе частоты с CAT-интерфейсом. В этой статье тема CAT-интерфейса будет раскрыта подробней.

CAT-интерфейс (Computer Aided Transceiver) предназначен для управления частотой, видами модуляции и другими функциями радиостанции с помощью компьютера.

В сети есть множество описаний радиолюбительских синтезаторов на базе Si5351, но в массе своей CAT они не поддерживают. Данная публикация этот пробел должна восполнить.
Читать дальше →
Всего голосов 59: ↑58 и ↓1 +57
Просмотры5.5K
Комментарии 10

Отладочный вывод на микроконтроллерах: как Concepts и Ranges отправили мой printf на покой

C++Программирование микроконтроллеров
Tutorial

Здравствуйте! Меня зовут Александр и я работаю программистом микроконтроллеров.

Начиная на работе новый проект, я привычно набрасывал в project tree исходники всяческих полезных утилит. И на хедере app_debug.h несколько подзавис.

Дело в том, что в декабре прошлого года у GNU Arm Embedded Toolchain вышел релиз 10-2020-q4-major, включающий все GCC 10.2 features, а значит и поддержку Concepts, Ranges, Coroutines вкупе с другими, менее "громкими" новинками С++20.

Воодушевленное новым стандартом воображение рисовало мой будущий С++ код ультрасовременным и лаконично-поэтичным. И старый добрый printf("Debug message\n") в это благостное видение не очень-то вписывался.

Хотелось бескомпромиссной плюсовой функциональности и стандартных удобств!

Например, таких:
Всего голосов 26: ↑23 и ↓3 +20
Просмотры4.7K
Комментарии 15

Новые цены на микроконтроллеры STM32 из свежих поставок

TimewebПрограммирование микроконтроллеровПроизводство и разработка электроникиКомпьютерное железо


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

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

И вот теперь эту напасть я увидел воочию и сполна прочувстовал на себе. И если сказать, что был удивлен и шокирован, то это не сказать вообще ничего. Я просто не поверил своим глазам, когда увидел стоимость копеечного микроконтроллера STM32F105 из новой поставки.
Читать дальше →
Всего голосов 34: ↑26 и ↓8 +18
Просмотры15.8K
Комментарии 68

Предельная скорость USB на STM32F103, чем она обусловлена?

Системное программированиеПрограммирование микроконтроллеровКомпьютерное железо
У данной статьи тяжёлая история. Мне надо было сделать USB-устройства, не выполняющие никакой функции, но работающие на максимальной скорости. Это были бы эталоны для проверки некоторых вещей. HS-устройство я сделал на базе ПЛИС и ULPI, загрузив туда «прошивку» на базе проекта Daisho. Для FS-устройства, разумеется, была взята «голубая пилюля». Скорость получалась смешная. Прямо скажем, черепашья скорость.



Но я же крутой, у меня теперь есть USB-анализатор (его разработка была описана в блоке из нескольких предыдущих статей). Посмотрев логи, я понял, что похоже, знаю, почему скорость невозможно поднять, даже если STM32F103 обслуживает исключительно USB и ничего больше. Даже начал писать о результатах… Но потом решил, что кому-то это будет не интересно, а кто-то скажет, что и так это знал.

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

Итак, давайте выясним, почему именно STM32F103C8T6 не может прокачать по шине USB данные на скорости 12 мегабит, заняв всю ширину предоставленного канала, и можно ли с этим что-то сделать.
Читать дальше →
Всего голосов 61: ↑59 и ↓2 +57
Просмотры7.5K
Комментарии 73

USB на регистрах: isochronous endpoint на примере Audio device

Программирование микроконтроллеровСхемотехника
image<картинка с платой и наушниками>
Еще более низкий уровень (avr-vusb): habr.com/ru/post/460815
USB на регистрах: STM32L1 / STM32F1
USB на регистрах: bulk endpoint на примере Mass Storage
USB на регистрах: interrupt endpoint на примере HID

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

Как ни странно, этот тип конечной точки оказался самым мозговыносящим (и это после всего, что я успел повидать с stm'ками!). Тем не менее, сегодня мы сделаем аудиоустройство и заодно чуть-чуть допилим ядро библиотеки USB. Как обычно, исходные коды доступны:
github.com/COKPOWEHEU/usb/tree/main/4.Audio_L1
github.com/COKPOWEHEU/usb/tree/main/4.Audio_F1
Читать дальше →
Всего голосов 15: ↑14 и ↓1 +13
Просмотры2.5K
Комментарии 9

Power-line communication. Часть 3 — Основные блоки устройства

DirectumРазработка систем связиПрограммирование микроконтроллеров

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

Осталось разобраться, что такое ZC детектор, на примере одной из его возможных реализаций. Посмотрим, как можно реализовать ”входную” и ”выходную” сигнальные цепи, и как их подключить к сети 220 В.

Читать далее
Всего голосов 10: ↑10 и ↓0 +10
Просмотры2.1K
Комментарии 9

Stm32 + USB на шаблонах C++. Продолжение. Делаем CDC

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

Продолжаю разработку полностью шаблонной библиотеки под микроконтроллеры Stm32, в прошлой статье рассказал об успешной (почти) реализации HID устройства. Еще одним популярным классом USB является виртуальный COM-порт (VCP) из класса CDC.

Популярность объясняется тем, что обмен данными осуществляется аналогично привычному и простому последовательному протоколу UART, однако снимает необходимость установки в устройство отдельного преобразователя.

Читать далее
Всего голосов 18: ↑18 и ↓0 +18
Просмотры4.1K
Комментарии 8

Работа с параметрами во внешнем EEPROM

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

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

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

И вот если вам интересен один из способов, который использую я со студентами добро пожаловать под cut

Доступ к EEPROM параметрам
Всего голосов 11: ↑9 и ↓2 +7
Просмотры4K
Комментарии 45

Работа с параметрами в EEPROM, как не износить память

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

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

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

Особенность таких параметров заключается в том, что их нельзя писать просто так в одно и то же место EEPROM, вы просто израсходуете все циклы записи EEPROM. Например, если, необходимо писать время работы один раз в 1 минуту, то нетрудно посчитать, что с EEPROM в 1 000 000 циклов записей, вы загубите его меньше чем за 2 года. А что такое 2 года, если обычное измерительное устройство имеет время поверки 3 и даже 5 лет.

Кроме того, не все EEPROM имеют 1 000 000 циклов записей, многие дешевые EEPROM все еще производятся по старым технологиям с количеством записей 100 000. А если учесть, что 1 000 000 циклов указывается только при идеальных условиях, а скажем при высоких температурах это число может снизиться вдвое, то ваша EEPROM может оказаться самым ненадежным элементом уже в первый год работы устройства.

Продлить жизнь EEPROM
Всего голосов 9: ↑8 и ↓1 +7
Просмотры3.2K
Комментарии 15