Как стать автором
Обновить
201.63
Рейтинг

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

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

Сначала показывать
  • Новые
  • Лучшие
Порог рейтинга
  • Все
  • ≥0
  • ≥10
  • ≥25
  • ≥50
  • ≥100

Интеграция устройства в экосистему Samsung SmartThings на примере «Умного чайника» Часть 2: переход с ESP8266 на ESP32

Блог компании Samsung Программирование микроконтроллеров *Разработка для интернета вещей *Умный дом DIY или Сделай сам
Tutorial

В первой части статьи на примере “Умного чайника” я описал процесс разработки приложения, интегрированного в экосистему SmartThings. В этой части я усложняю пример: добавляю датчик температуры и делаю плавную индикацию RGB-светодиода. Я опишу, чем отличаются ESP8266 и ESP32, и почему в этом примере нам больше подходит именно ESP32. Также будет описана передача сообщений между потоками/тасками на примере очередей в FreeRTOS. Таким образом, данная статья предназначена для всех, кто хочет перейти от самых простых умных устройств с минимумом функционала, к устройствам чуть более сложным как с программной, так и с железной точки зрения.

Читать далее
Всего голосов 9: ↑8 и ↓1 +7
Просмотры 3.5K
Комментарии 11

Пересаживаем NXP-шный пример для Teensy 4.1 на язык C++

Системное программирование *Программирование микроконтроллеров *Компьютерное железо
В предыдущих статьях мы освоили внедрение примеров из NXP-шной среды разработки MCUXpresso в плату Teensy 4.1. Однако у тех примеров, с которыми мне довелось повозиться (а я работал с USB-примерами), есть один существенный (с моей точки зрения, разумеется) недостаток. Все они написаны на языке Си. Ну, то есть, «на чистых Сях», если на жаргоне. А вот оригинальная библиотека от Teensy была написана на С++. И я являюсь сторонником именно этого языка. Не могу жить без честных классов, виртуальных функций и некоторых других средств, которых нет в чистых Сях.



Когда я программирую в среде разработки Keil, чтобы сменить язык, достаточно переключить его в свойствах конкретного исходного файла. В цикле статей про NIOS II я просто переключал язык, изменив расширение файла с *.c на *.cpp. (Со всеми деталями это показано тут ; не как новинка, а как рутина — тут). Увы, в нашем случае так не получится. И количество действий, которое следует совершить, тянет на небольшую статью. Вот её я сейчас и напишу. Итак, давайте разбираться, что там к чему…
Читать дальше →
Всего голосов 12: ↑11 и ↓1 +10
Просмотры 902
Комментарии 0

От копии аркады 90-х на отдельном носителе до полноценной компьютерной игры со своим геймпадом

Блог компании Питерская Вышка C++ *Разработка игр *Программирование микроконтроллеров *Разработка под Arduino *

Привет, Хабр!

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

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

Почти детективная история одной «кровавой» ошибки

Блог компании Timeweb Программирование *Промышленное программирование *Программирование микроконтроллеров *Производство и разработка электроники *
Tutorial


Дополнение статьи «Размещение кучи FreeRTOS в разделе CCMRAM для STM32», и в продолжение серии статей про различные полезности для STM32 (1, 2 и 3), хочу обратить внимание на одну особенность работы с CCM RAM памятью, которая может быть причиной совершенно не очевидных ошибок в работе устройств, одна из которых выпила у автора достаточно много крови, так что с чистой совестью её действительно можно назвать «кровавой».

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

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

Читать дальше →
Всего голосов 26: ↑24 и ↓2 +22
Просмотры 6.3K
Комментарии 21

Пакетный обмен данными по UART

Программирование *C++ *C *Программирование микроконтроллеров *Разработка под Arduino *
Из песочницы

На сегодняшний день существует много способов организовать обмен данными между Desktop-приложением и устройствами на микроконтроллерах: Wi-Fi, Bluetooth, RF, USB, преобразователи интерфейсов и т.д.

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

В случае использования интерфейсов RS-232, RS-485, RS-422 или чистого UART организация пакетного обмена данными ложится на программиста.

В данной статье я хотел бы рассказать о своей реализации обмена данными между устройствами.

Читать далее
Всего голосов 7: ↑3 и ↓4 -1
Просмотры 2.9K
Комментарии 25

Как посчитать синус быстро

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

... и точно. Точнее, с заданной точностью, простите за каламбур.

Под катом я расскажу, как сделать это с использованием школьного курса алгебры и целочисленной арифметики, при чём здесь полиномы Чебышёва I-го рода, и дам ссылки на примеры реализаций для ПК и Cortex-M3.

Читать далее
Всего голосов 54: ↑52 и ↓2 +50
Просмотры 9.9K
Комментарии 41

Микроконтроллер + компьютер + своё программное обеспечение

C++ *Интерфейсы *Программирование микроконтроллеров *Гаджеты DIY или Сделай сам
Из песочницы
Tutorial

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

Читать далее
Всего голосов 19: ↑13 и ↓6 +7
Просмотры 8.5K
Комментарии 30

Проектировщики RISC-V из Yadro покажут школьникам как проектировать процессоры

Параллельное программирование *FPGA *Программирование микроконтроллеров *Процессоры Электроника для начинающих

Через неделю будет выставка ChipEXPO, на которой для начинающих будет школа проектирования железа с упражнениями на FPGA платах, а для более продвинутых - конференция Микроархитектура, верификация и физическое проектирование микросхем.

И на части для школьников, и на части для взрослых будут выступать проектировщики RISC-V процессора из Syntacore / Yadro Станислав Жельнио и Никита Поляков. Сегодня Коммерсант сравнил этот проект с полетом на Луну.

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

Далее мы расскажем про новые упражнения в школе этого года - распознавание и генерацию музыки с помощью FPGA и приведем забавные сведения из советской физматшкольной книжки 1963 года как Бах изменил гаммы.

В конце поста мы покажем, как эта деятельность поможет получить в будущем интересные и высокооплачиваемые работы в Apple, Intel, SpaceX, как и самом в модном в этом сезоне российском микроэлектронном проекте - Syntacore / Yadro (в конце поста скриншоты их объявлений).

Как же все установить до семинара?
Всего голосов 25: ↑24 и ↓1 +23
Просмотры 5.7K
Комментарии 50

«Магический глаз» тёплых ламповых времён — эмуляция на ардуино

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

В магнитофонах и приёмниках моей юности использовались исчезнувшие ныне ламповые индикаторы уровня на лампах 6E1П или 6Е5С. Сейчас пришла пора ностальгирования по "старым временам" и на алиэкспрессе или амазоне можно купить собранные индикаторы, они почти также популярны как часы на лампах "Никси".

Поскольку лампа требует высокого напряжения для работы, в современных устройствах это решается с помощью преобразователя напряжения на таймере 555 упроавлящим мощным полевым транзистором включенным в первичную обмотку повышающего трансформатора, и дальше вторичная обмотка подключается к умножителю напряжения из 4-5 ступеней. Этого достаточно чтобы преобразовать входные 5 вольт в 250 с током 1-2 ma.

Я хочу поделиться своим домашним проектом, суть которого в эмуляции, насколько возможно, "зелёного глаза" лампы 6E1П с помощью быстрого OLED дисплея, контролируемого платой Arduino:

Читать далее
Всего голосов 19: ↑18 и ↓1 +17
Просмотры 10K
Комментарии 27

Контроллер АСУНО с ВЕБ интерфейсом настроек

Программирование *Программирование микроконтроллеров *Схемотехника *Распределённые системы *Производство и разработка электроники *
Из песочницы

Это моя первая статья на Хабр. Статья посвящена разработке и некоторым особенностям контроллера, поэтому вопросы, относящиеся к организации работы сервера не рассматриваются в данной статье. Но для того, чтобы лучше понять работу контроллера АСУНО некоторые моменты все же будут даны. В статье будет рассмотрено назначение контроллера, дана функциональная схема, фото самого контроллера и подключение внешнего оборудования. В статье приводятся принтскрины веб интерфейса. ВЕБ интерфейсом легко пользоваться, он интуитивно понятен для обслуживающего персонала. Хотя им пользуются только при настройке контроллера во время пусконаладочных работ это сильно экономит время настройки и подготовки контроллера к работе. Наличие в контроллере ТСР клиента и ТСР сервера расширяет возможности диагностики оборудования. Контроллер выполнен на процессоре PIC32MX795F512L фирмы Micrpchip. ПО разработано без использования ОС, написано на С. Возможно данная статья будет иметь продолжение, если заинтересует читателей. Приятного чтения. Область применения

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

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

Зачем нужен отчёт MISRA Compliance и как его получить в PVS-Studio?

Блог компании PVS-Studio Информационная безопасность *C++ *C *Программирование микроконтроллеров *

Если вы не понаслышке знаете о MISRA и хотели бы понимать, соответствует ли ваш проект какому-то из стандартов ассоциации MISRA, то есть решение. Имя ему - MISRA Compliance. С недавних пор PVS-Studio научился генерировать отчёт соответствия по этому стандарту, и хочется поделиться тем, как это делается. Возможно, кому-то это упростит жизнь.

Читать далее
Всего голосов 8: ↑6 и ↓2 +4
Просмотры 1.2K
Комментарии 2

Как обмануть автопилот PX4: настоящая HITL-симуляция на шине UAVCAN

Разработка робототехники *Программирование микроконтроллеров *Производство и разработка электроники *Робототехника Мультикоптеры

Мы разработали и хотим представить новый вариант HITL-симуляции дронов, когда автопилот может даже не знать, работает ли он с реальными датчиками на шине или же в симулируемом окружении. Набор программных модулей, работающих в «боевом» режиме и в режиме симуляции (почти) идентичен, в отличие от альтернативного MAVLINK-HITL подхода. Этот проект — наш вклад в экосистему вокруг PX4 и UAVCAN. Будем рады адоптерам и контрибьюторам.

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

Аналоговое и цифровое питание. Мифы и реальность

Блог компании twin3d Разработка робототехники *Программирование микроконтроллеров *Энергия и элементы питания Электроника для начинающих

Иногда разводишь ты такой плату микроконтроллера или изучаешь документацию к чипу и натыкаешься на такую картину: два питания — аналоговое и цифровое. Две земли тоже не редкость. Я встречал людей, которые даже после пары лет работы в индустрии не всегда знали точно, зачем и когда нужно разделять питание и землю и как это корректно делать. Мы попробуем сегодня пробраться вниз по кроличьей норе. В том числе станут понятны практики подключения аудио оборудования проводами, которые покупаются за золотые слитки.

Узнать как разделять питание и властвовать
Всего голосов 45: ↑41 и ↓4 +37
Просмотры 16K
Комментарии 49

Мышь для людей с ограниченными возможностями

Программирование микроконтроллеров *Гаджеты Компьютерное железо 3D-принтеры Здоровье

Речь в данной статье пойдет про проектирование оборудования, которое упрощает работу за компьютером. Предыстория моего небольшого проекта связана, совершенно неожиданно, со спектрумами, apple 2 и прочей ретрокомпьютерной техникой. Есть увлечение такое — ковыряться во всяком старье. Плюс делать это в прямом эфире на YouTube. Коллективный разум помогает чинить. После одного из стримов обратился подписчик с весьма необычной просьбой. Зовут его Александр и у него ДЦП. Соответственно, ему трудно работать на компьютере. А желание работать имеется, что не может не радовать.

Читать далее
Всего голосов 58: ↑57 и ↓1 +56
Просмотры 5.1K
Комментарии 35

Генерация перемещаемого кода для процессоров ARM в компиляторе LLVM

Системное программирование *Компиляторы *Программирование микроконтроллеров *


Процесс обновления «прошивки» для микроконтроллера – опасная вещь. Раньше при обновлении «прошивки» любой аппаратный сбой приводил к тому, что устройство превращалось в кирпич. В наше время часто имеется начальный загрузчик, который позволит произвести процесс обновления заново, но до того, весь функционал устройства будет потерян. Пока не будет завершено обновление, работать оно уже не будет. Самым красивым способом является использование двух областей для размещения «прошивки» — основной и запасной. На рисунке ниже это красная и синяя области. Исходно активная красная, а обновление будет загружаться в синюю. Сбой загрузки не страшен. Если он произойдёт, управление останется у красной области. При успехе операции, активной станет синяя область, а новое обновление будет загружаться в красную. Ну, и так далее. Каждое обновление будет приводить к рокировке.



К сожалению, в системах Cortex M такой путь напрямую невозможен. Программа привязана к абсолютным адресам и не может исполняться в произвольном месте. С чем это связано и как мы сделали её перемещаемой, подправив компилятор LLVM, рассказано в данной статье.
Читать дальше →
Всего голосов 14: ↑12 и ↓2 +10
Просмотры 1.8K
Комментарии 13

Как выполнить аппаратную реализацию энкодера h264, не написав ни строчки кода на VHDL/Verilog?

Блог компании ЦИТМ Экспонента Алгоритмы *FPGA *Программирование микроконтроллеров *Инженерные системы

Вступление

Сжатие видео с камеры является важной задачей как при трансляции данных через сеть Интернет, так и при передаче данных через радиоканал. Это позволяет в разы сократить объем передаваемой информации при небольшой потере детализации в исходном видео. Сейчас самым популярным алгоритмом для сжатия видео является кодек h264. Хотя уже существует следующая реализация кодека – h265, но он имеет большую вычислительную сложность алгоритма и пока не нашел столь широкого применения, и его реализацию можно оставить на потом :)

Модельно-ориентированное проектирование - это что?

При разработке алгоритма для ПЛИС можно выделить два основных подхода: написать алгоритм сразу на языке описание аппаратуры VHDL/Verilog/SystemC или использовать более высокоуровневые средства проектирования. Во втором случае вначале строится эталонная модель алгоритма в MATLAB/Simulink, тестируется, верифицируется и постепенно подготавливается к автоматической генерации HDL кода из алгоритма. Конечно, мы выбрали второй вариант, т. е. наш план – на основе MATLAB кода сделать эталонную модель алгоритма Simulink, а после – адаптировать ее к автоматической генерации кода и получить HDL для ПЛИС.

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

Как мы автоматизировали нефтедобычу, или немного о телемеханике

Промышленное программирование *SCADA *Разработка систем связи *Программирование микроконтроллеров *Инженерные системы

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

А расскажу-ка я сегодня вам немного про АСУТП. Вернее, не совсем. Когда говорят "АСУТП", на ум обычно приходят какие-нибудь производственные площадки, "серьезные" ПЛК типа Siemens или Allen-Bradley с алгоритмами на МЭКовских языках программирования, мнемосхемы в SCADA-системах по всем правилам ГОСТ, и огромные тома проектов под все это дело... Нет, сегодня речь пойдет не о том. Сегодня мы поговорим о "неправильном" АСУТП. А именно, о системах радиотелемеханики.

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

ЭТТ, или когда в резюме можно написать, что профессионально моргаю светодиодом

Блог компании Миландр Программирование *Программирование микроконтроллеров *Производство и разработка электроники *Научно-популярное

ЭлектроТермоТренировка (ЭТТ) один из самых действенных производственных методов технологической тренировки и отбраковки изделий электроники и микроэлектроники. На картинке приведена классическая зависимость интенсивности отказов любого устройства во времени.

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

Как это работает?
Всего голосов 35: ↑35 и ↓0 +35
Просмотры 3.4K
Комментарии 12

Шрифты для графического дисплея? Это же очень просто

Open source *Алгоритмы *C *Программирование микроконтроллеров *Софт
Из песочницы

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

Но это лирическое начало, а рассмотрим мы в статье вопрос создания растровых шрифтов для графических дисплеев.

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

Оптимизируем производительность Teensy 4.1 при разработке в NXP MCUXpresso

Системное программирование *Программирование микроконтроллеров *Компьютерное железо


В предыдущей статье мы выяснили, что производительность контроллера MIMXRT1062, применённого на плате Teensy 4.1 можно существенно поднять, перераспределив внутреннюю память по сильносвязанным шинам. Для этого мы воспользовались механизмом FlexRAM. В библиотеках от Teensyduino всё уже сделано за нас, но в данном цикле статей я рассказываю, как вести разработку в среде MCUXpresso от NXP. Мы произвели необходимые доработки проекта, и вот уже данные ложатся в достаточно потолстевший банк памяти DTCM:



То же самое текстом
Memory region         Used Size  Region Size  %age Used
     BOARD_FLASH:       32400 B         8 MB      0.39%
        SRAM_DTC:       22420 B       256 KB      8.55%
        SRAM_ITC:          0 GB       256 KB      0.00%
         SRAM_OC:          0 GB       512 KB      0.00%


Но банк ITCM, где должен быть код, пуст. Сегодня мы научимся настраивать среду разработки для переноса большей части кода в него.
Читать дальше →
Всего голосов 6: ↑5 и ↓1 +4
Просмотры 450
Комментарии 0

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