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

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

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

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

USB3Vision и GenICam. Взгляд изнутри. I

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

Введение


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

Обзор одной российской RTOS, часть 4. Полезная теория

Время на прочтение9 мин
Количество просмотров6.6K
Здравствуйте, коллеги! Готова очередная публикация из неформальной «Книги знаний» ОСРВ МАКС.

Просьба к постоянным читателям отнестись ко мне лояльно и не минусить за небольшое повторение части материала из предыдущей статьи (про защиту стека) — здесь оно оказалось логичней. А там я уже удалил.

Общее содержание (опубликованные и пока неопубликованные статьи):

Часть 1. Общие сведения
Часть 2. Ядро ОСРВ МАКС
Часть 3. Структура простейшей программы
Часть 4. Полезная теория (настоящая статья)
Часть 5. Первое приложение
Часть 6. Средства синхронизации потоков
Часть 7. Средства обмена данными между задачами
Часть 8. Работа с прерываниями

Некоторые неочевидные сведения о данных


Несколько фактов о куче


Многие программисты почему-то считают, что операции new и delete достаточно легковесны и просты. Поэтому код часто изобилует выделением и освобождением динамической памяти. Это более-менее приемлемо на мощных системах (гигабайты ОЗУ и гигагерцы тактовой частоты), но при ограниченных ресурсах может создавать некоторые проблемы, особенно для программ, работающих в режиме 24/7.

  • Самая очевидная проблема —
Читать дальше →

Использование arduino для автоматизации тестирования устройств

Время на прочтение3 мин
Количество просмотров4.6K
Наша компания «RTL Service» занимается разработкой системы локального позиционирования, с помощью которой можно точно определить, где в помещении находится определенный человек. Помимо этого, наша система позволяет связаться с этим человеком с помощью собственных коммуникаторов (рисунок 1) по защищенному каналу связи.
Читать дальше →

Ostro Pot — open source мультиварка на базе ОС Ostro

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

В последнее время корпорация Intel затрачивает значительные усилия на создание и развитие open source проектов, совместно с другими крупными игроками в соответствующих областях. Сами проекты возникают с завидной регулярностью, так, совсем недавно мы писали о проекте Zephyr Project — open source ОС реального времени. Сегодня речь пойдет еще об одной ОС с открытым исходным кодом, на этот раз предназначенной для такой перспективной области, как «Интернет вещей», а также о первом устройстве, созданном на ее основе.
Как вы уже, наверное, догадались, пост этот — первоапрельский. Но не целиком. Все, что сказано в разделе «Программная основа — Ostro Project» — истинная правда!
Читать дальше →

Alljoyn: взгляд embedded разработчика. Часть 2: Linux нам в помощь

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


Предыдущая часть цикла Alljoyn: взгляд embedded разработчика. Часть 1: знакомство

Продолжаем повествование о том как получить «реальную железку», работающую по протоколу AllJoyn. Конечной целью цикла является получение прототипа «умной Wi-Fi лампочки». Причем именно «прототипа», потому что реализации силовой части нашей лампочки мы касаться не станем, так как это отдельная большая тема, не имеющая отношения к фреймворкам и способам управления. Потому ограничимся светодиодом на отладочной плате SAMD21-XPRO.

Прежде чем начать портирование фреймворка на микроконтроллер, разберемся со вспомогательными средствами, которые окажут нам неоценимую помощь в процессе разработки. В принципе, AllJoyn — кроссплатформенный фреймворк и Вы вольны использовать удобный именно Вам вариант операционной системы. Я использовал Linux (Ubuntu) — просто потому, что он мне привычнее.
Читать дальше →

STM32, C++ и FreeRTOS. Разработка с нуля. Часть 4 (Прерывания, UART и недоHART)

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

Ведение


Попав в отпуске в город на Неве и посетив множество красивых мест, я все таки, вечерами за чашкой пива, разбирался с UARTом. Тем более, что я купил неплохие наушники Fisher FA011, к которым пришлось прикупить USB SOUND BLASTER X-FI HD и хотел послушать музыку.
Предыдущие статьи вначале переехали на Geektime потом я обратно их перегнал, даже и не знаю, куда теперь их деть :)
Но так на всякий случай они тут:
STM32, C++ и FreeRTOS. Разработка с нуля. Часть 1
STM32, C++ и FreeRTOS. Разработка с нуля. Часть 2 и
STM32, C++ и FreeRTOS. Разработка с нуля. Часть 3 (LCD и Экраны)
Читать дальше →

On Middleware

Время на прочтение3 мин
Количество просмотров4.6K
Во многие знания многие печали.

Компания, назовем ее Acme Products, производила очень популярный продукт, который многие из нас используют ежедневно (даже не представляю о чем идет речь, может быть телефоны с АОН, но они были 8битными — Примечание переводчика). Выполнен он на одном 16-битном процессоре, весь код умещался в 256k ПЗУ. Код развивался в течение десятилетий, патч следовал за патчем, создавая беспорядок. Расходы на поддержку увеличивались год от года.

Инженеры убедил руководство, что необходимо полностью переделать систему. Не без оснований они выбрали топовый 32-битный МК с частотой 200Мгц. Возможно, не до конца обоснованно, поддавшись на призывы сирен, инженеры для замены традиционной ОСРВ ОС выбрали Windows CE с обширной графической библиотекой, и многочисленными слоями промежуточных слоев изоляции API от приложения, и получили в свое распоряжение ресурсы, необходимые для того, чтобы сделать все, что только можно представить себе в будущем.
И что дальше?

DMA вообще и в частности

Время на прочтение8 мин
Количество просмотров52K
Знал бы где упадешь, соломки подстелил бы

О существовании DMA (Direct Memory Access) — русскоязычное ПДП (Прямой Доступ к Памяти) многие разработчики встроенных устройств слышали, но вот применяют его гораздо реже, чем он (ПДП) этого заслуживает. Кстати, я буду упоминать именно эту аббревиатуру, но не потому, что я такой упрямый патриот и противник англоязычных заимствований, а всего лишь от того, что мне лень лишний раз переключать раскладку клавиатуры.

Основных причин недостаточного использования ПДП в программах для МК три: 1) относительная сложность данного устройства, которая вместе с 2) непониманием выгод его применения приводит к нежеланию данное устройство изучать и осваивать (как говорят в таких случаях, старшая сестра не велит — для тех, кто в танке — это про лень, котороая раньше нас родилась), отягощенному 3) отсутствием хороших и понятных примеров применения ПДП в поставляемых с МК руководствами. И если первые две причины носят явно субъективный характер, то третья несомненно объективна и внутри меня просыпается параноик и настойчиво утверждает, что это сделано специально с целью не допустить отечественных разработчиков МК на продвинутые уровни, где-то выше 60 (то, что при этом страдают и остальные разработчики по всему миру, параноиком игнорируется, поскольку либо 1) за пределами России распространяются правильные примеры, либо 2) ради великой цели не допустить вставания, сами понимаете кого, с колен буржуины готовы пойти на любые жертвы).

Тем не менее без шуток, действительно, в примерах в лучшем случае лежит модуль настройки отдельно взятого канала ПДП, а увязанную систему с ПДП драйвером Вы в примерах применений не найдете (даже в CMSIS не найдете, ну тут действительно есть объективная причина — напишу пост про него — упомяну). Почему так на самом деле — я не знаю, но разработчикам кристаллов виднее, единственное разумное обоснование, которое мне приходит в голову — это то, что ПДП довольно таки специфичны, поэтому «нельзя просто так взять и » перенести код из другого источника, а ввиду малой востребованности ПДП в реальных разработках отсутствие таких примеров не считается существенным недостатком. Восполнить указанный мной пробел в знаниях и предназначен настоящий пост (нескромное заявление, но если сам себя не похвалишь, весь день ходишь как оплеванный), поэтому те, кого я заинтриговал, могут нажать на кнопочку.
Читать дальше →

Time Triggered design — еще один подход к проектированию ПО для встраиваемых систем

Время на прочтение6 мин
Количество просмотров8.5K
Когда-то давно я написал статью о принципах проектирования приложения для встраиваемых систем. Тогда я сказал, что есть два основных принципа — бесконечный цикл и ОС реального времени. А вот совсем недавно услышал, что есть еще и третий подход — так называемый Time Triggered Design.

В качестве ознакомления с подходом был использована книга «Patterns for time-triggered embedded systems» автора Michael J. Pont, для заинтересовавшихся — www.safetty.net/publications/pttes
Попытаюсь здесь коротко изложить концепцию.
Читать дальше →

Свой task switch logging за один день

Время на прочтение3 мин
Количество просмотров2K
Еще на заре своей карьеры мне довелось поработать с RTOS VxWorks и средой разработки Tornado. Впечатления остались крайне положительные (тем более что сейчас есть с чем сравнивать), но пост не об этом. Составной частью системы тогда была система сбора и визуализации информации о переключении задач в реальном времени. Сразу скажу, что вещь крайне полезная, не зря ведь говорят, что лучше один раз увидеть. Скажем, если у вас в системе есть хотя бы два десятка задач, то с уверенностью в 99% можно сказать, что вы сильно удивитесь, когда увидите визуализацию переключения задач — она будет совсем не такой, какой вы ее себе представляли.

О пользе же, например, того, что в случае неожиданного сбоя, зависания или перезагрузки вы сможете увидеть последние мгновения жизни системы, даже и говорить не приходится!

Но что же делать, если приходится работать с RTOS и окружением, где такого удобного механизма нет? Конечно же, сделать его самому!

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

Практическая реализация энкодера с использованием датчика HOA0902 и STM32

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

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

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

В данной статье будут рассмотрены:

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

Читать далее

VCP STlink-v3minie быстро и просто

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

Про настройку отладку ваших stm микроконтроллеров с помощью программатора-отладчика STLINK-V3MINIE через встроенную функцию VCP.

В статье описана настройка инструментов на ОС Windows и ОС Linux, также приведен пример кода для вывода данных себе в терминал на ПК.

Читать в продолжение

Метод синтеза синусоидальных колебаний, с применением цифрового колебательного контура

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

Добрый вечер, уважаемые коллеги. Статья будет короткой и возможно натолкнет кого-то на реализацию. У меня получилось.

Недавно разрабатывал код, который рассчитывает значения sin(x), cos(x) и квадратного корня из x, на arm. По сути это была апроксимация рядом Тейлора. Но код написан на Assembler и выполнялся относительно быстро. Изначально предполагалось использовать его для своего станка. Немого позже задался вопросом одновременной генерации sin(x) и cos(x) как сигналов для свертки с исходным. Некоторые предлагали cordic, но я пошел другим путем.

Изначально, моделировал систему дифференциальных уравнений, использующих два умножения и разности для получения sin(x) / cos(x) на каждый, временной отсчет. Фактически, это отклик диффкренциального уравнения на дельта-функцию (единичный импульс) который запускает колебательный процесс. "Синусойды" получились не ортогональными при небольшом количестве отсчетов на период из-за неточности вычисления сдвига фазы. Однако, при использовании длительных последовательностей данный метод может заменить классические методы генерации sin(x)/cos(x) поскольку конечные разности становятся небольшими.

Кроме того на вход дифференциального уравнения можно подать сигнал, который будет раскачивать его как реальный контур. Например, у Вас возникнет желание свернуть сигнал с длинноволновыми последовательностями. В этом случае, можно, просчитывать каждый отсчет sin(x)/cos(x), а можно просто подать входной сигнал с АЦП на вход такого дифференциального уравнения и получить "синхронный интегратор", настроенный на определенную частоту.

Читать далее

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

Функциональная безопасность и анализ риска, комментарии инженера (часть 5)

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

После проведения HAZOP и формирования контуров безопасности ПСБ с определением целевого уровня полноты безопасности, нам, как инженерам реализующим систему безопасности прислали исходные данные: технологическая схема с КИП, перечень контуров безопасности, матрица причинно-следственных связей, значение целевого УПБ. Мы, как подготовленные инженеры, понимаем из чего могут быть построены контура безопасности, отвечающие заданному целевому УПБ. Осталось подобрать оборудование, собрать контура,  посчитать результирующее значение УПБ и сравнить его с целевым.

Если подходить к решению задачи правильно и грамотно, ПСБ еще на предыдущих этапах должна быть разделена на систему аварийного останова ESD и систему технологических защит PSD. ESD предназначена именно для предотвращения катастрофы, аварии и гибели людей. PSD предназначена для защиты оборудования и технологического процесса (например, не дает загубить катализатор в реакторе или выпустить некачественную продукцию). Позже, когда будем разбираться, в чем разница между ESD и ПАЗ разберем этот вопрос подробнее.

Когда мы говорим о снижении риска до целевого значения и расчете уровня полноты безопасности, мы говорим про ESD.

Весь перечень контуров безопасности сразу делим на две части: контура с целевым УПБ1 и ниже, и контура с целевым УПБ2,3. При объективно проведенном анализе рисков контуров УПБ3 будет очень ограниченное количество, обычно несколько единиц. Подобрать оборудование для обеспечения УПБ3 контура в целом достаточно сложно.

тут 30 станиц текста с формулами и графика

Забавы в ближнем инфракрасном. Часть 2. Сенсор + Arduino + Скетч = Счётчик пробегающих

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

В предыдущей статье (Часть 1) я описал "секреты" изготовления любительской сенсорной системы (типа "инфракрасный барьер") из трёх резисторов, двух диодов и одного транзистора. Пришла пора построить на её основе какую-нибудь практически полезную вещь. Ну, хоть для забавы. (Профессионалы дальше читать не должны.) Пусть это будет счётчик чего-нибудь. Студентов, выходящих из учебного корпуса, или железнодорожных вагонов, скатывающихся с сортировочной горки.

Когда сенсорная система готова, интерес смещается к проблеме обработки поступающей от неё информации. Электронщик, отдохни, сходи попить кофе. Айтишник, просыпайся: твой выход.

Читать далее

Собираем демо чемодан из подручных остатков к выставке WBCE2025

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

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

Читать далее

Четвёртый инженерный хакатон SoC Design Challenge: «Свидетели ошибок» из Аквариус — победители трека UVM верификации

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

С 18 по 20 апреля 2025 г. на площадке НИУ МИЭТ в Зеленограде прошёл четвертый инженерный хакатон SoC Design Challenge, организованный компанией YADRO совместно с Передовой инженерной школой «Средства проектирования и производства электронной компонентной базы» МИЭТ. Более 250 студентов очной формы обучения со всей России собрались, чтобы на практике решить задачи по проектированию и верификации систем на кристалле (SoC) на базе RISC‑V.

В рамках треков «RTL проектирование», «UVM верификация», «Системная верификация СнК» и «Топологическое проектирование» участникам предстояло не только продемонстрировать знания цифровой и аналоговой схемотехники, но также и получить призы — FPGA платы и другие инженерные гаджеты. Все задачи формировались действующими специалистами отрасли и преподавателями МИЭТ, что делало соревнование максимально приближённым к реальным производственным кейсам.

Команда студентов-сотрудников компании Аквариус, трое студентов 4‑го курса НИЯУ МИФИ (каф. 27) команда «Свидетели ошибок»:

1. Силкин Никита Романович

2. Скворцов Ярослав Максимович

3. Никонов Александр Андреевич

За три дня напряжённой работы «Свидетели ошибок» набрали 76 баллов из максимальных 100 и уверенно опередили ближайших соперников на 28 баллов, заняв 1 место среди остальных команд в треке UVM верификации.

Как команда готовилась и добилась победы

Скворцов Я. М.

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

Читать далее

NVRAM из EEPROM

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

Дана функция чтения и записи EEPROM dword.

Запись и стирание возможно только по выровненному адресу и пословно.

Надо поверх EEPROM API сделать функцию чтения, записи и стирания для произвольных массивов байт, по произвольному адресу (NVRAM).

Простыми словами надо состыковать Dword API с Byte API.

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

Читать далее

Открытая шина данных АСУ ТП

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

Над созданием открытой шины данных АСУ ТП работают как российские, так и зарубежные разработчики. Причина понятна – уйти от проприетарных протоколов и решений и создать единую прозрачную среду передачи данных систем автоматики. Раскроем суть задач, стоящих перед разработчиками.

Читать далее

Собираем прошивку NapiLinux и Raspberry Pi OS для микрокомпьютера с помощью Yocto

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

Если вы занимаетесь созданием дистрибутивов Linux для встраиваемых систем, то, возможно, вас заинтересует проект Yocto. С его помощью можно создавать образы ОС в минимальных и оптимизированных конфигурациях для аппаратных платформ и приложений.

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

Компании, поставляющие устройства на базе микрокомпьютеров, могут комплектовать их ОС в необходимой конфигурации, а дистрибутив такой ОС они формируют с помощью Yocto.

В этой статье я расскажу о создании образов ОС с открытым кодом Napi Linux для модуля сбора данных от датчиков Front Control Compact, микрокомпьютеров  roc-pc-rk3328 и rockpro64-rk3399, а также ОС для встраиваемых систем на базе Raspberry Pi.

Пока Napi Linux работает на ARM, но готовится сборка и для платформы x86.

Читать далее

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