Привет! В этой статье я хочу рассказать о решении одной из типичных проблем, с которой Embox справляется лучше GNU/Linux. Речь идет о времени реакции на пакет, переданный по протоколу Ethernet. Как известно, основной характеристикой передачи данных по сети является пропускная способность, и с ней у GNU/Linux все хорошо. Но когда речь заходит об уменьшении времени на прием/передачу единичного сетевого пакета, могут возникнуть проблемы. В частности, у заказчика была плата DE0-Nano-SoC с Linux, и с помощью этой платы хотелось управлять неким объектом по сети. Топология сети — точка-точка, никаких роутеров и хабов нет. По модели управления время реакции должно быть меньше 100 мкс, а на базе Linux удавалось добиться только 500 мкс.
Рубрика «программирование микроконтроллеров» - 31
Уменьшение времени отклика при передаче данных по UDP
2020-02-25 в 14:46, admin, рубрики: benchmark, embox, latency, udp, Блог компании Embox, программирование микроконтроллеров, системное программированиеGSM телефонный аппарат с дисковым номеронабирателем
2020-02-25 в 5:57, admin, рубрики: diy или сделай сам, Алгоритмы, конструирование, программирование микроконтроллеров, радиолюбительство, радиосвязь, схемотехника
Наверняка, у многих радиолюбителей была идея, приспособить телефонный аппарат с дисковым номеронабирателем для мобильной радиосвязи.
Проводная связь постепенно уходит в прошлое, и такие аппараты пылятся на полке. Мне всегда нравился внешний вид таких аппаратов. Не смог удержаться и два года назад решил переделать телефонный аппарат, который до сих пор работает, без сбоев.
Читать полностью »
Роботаракан Петя за десять баксов
2020-02-23 в 14:54, admin, рубрики: C, diy или сделай сам, ардуино головного мозга, Программирование, программирование микроконтроллеров, Электроника для начинающихЗнакомьтесь с Петей, шестиногом о трёх сервоприводах.
Продолжаю публикацию статей из серии "ардуино головного мозга". Петя — это очень дешёвый (примерно десять баксов) гексапод. Он может быть прекрасным проектом на один ненастный выходной, который развлечёт как и взрослых, так и детей. Раз уж мы про развлечения, вот вам видеоролик с Петей, танцующим под фанк-музыку:
Отладка микроконтроллеров ARM Cortex-M по UART Часть 2
2020-02-22 в 18:48, admin, рубрики: cortex-m, gdbserver, программирование микроконтроллеровВ прошлой статье я рассказывал про прерывание DebugMon и регистры с ним связанные.
В этой статье будем писать реализацию отладчика по UART.
Читать полностью »
Оживляем гексапода. Часть первая
2020-02-19 в 21:19, admin, рубрики: arduino, c++, DIY, hexapod, robot, программирование микроконтроллеров, Разработка под Arduino, Разработка робототехники, робототехникаВ прошлой статье мы поделились опытом создания гексапода с использованием технологии 3D печати. Теперь речь пойдет о программной составляющей, которая позволила его оживить.
Первоначально планировалось изложить всю информацию в одной статье, но в процессе написания стало понятно, что такое изложение будет поверхностным и неинформативным. Поэтому было принято решение написать несколько статей с более детальным изложением темы.
Устройство гексапода
На текущий момент в качестве основного контроллера используется плата UNO R3 с Wi-Fi ESP8266. По сути эта плата с двумя контроллерами на борту, взаимодействующих между собой через UART-интерфейс.
Несмотря на то, что Uno имеет довольно ограниченный объем вычислительных ресурсов, ее достаточно чтобы научить робота выполнять базовые команды:
- движение по прямой с заданной скоростью и продолжительностью
- круговое движение влево или вправо (разворот на месте)
- принимать заданные положения конечностей
ESP8266 отвечает за организацию беспроводного канала связи и служит шлюзом, через который Uno получает управляющие команды. Читать полностью »
Отладка микроконтроллеров ARM Cortex-M по UART
2020-02-17 в 9:48, admin, рубрики: cortex-m, stm32, программирование микроконтроллеровВ данной статье я расскажу вам как можно использовать регистры отладки и breakpoint'ов в микроконтроллерах, построенных на ядрах ARM Cortex-M
Читать полностью »
Студенты пишут Uart драйвер для STM32F411
2020-02-16 в 18:21, admin, рубрики: c++, c++17, stm32, UML, программирование микроконтроллеров
Доброго здравия всем!
Сегодня я хочу вам рассказать, как постепенно студенты учатся разрабатывать ПО для микроконтроллера на примере драйвера UART на STM32F411. Код и архитектуру с небольшими моими изменениями и доработками я попытаюсь привести здесь.
Сразу отмечу, что все сделано статикой, как я учил :) (статические классы, статическая подписка, статический странно-рекурсивный шаблон, статический контейнер для команд и так далее), но можно реализовать тоже самое с помощью обычных объектов и обычного подхода. В обычном подходе архитектура была бы такая же, но кода немного больше, как по объему так и по количеству строк кода.
Данная статья не претендует на истину, а лишь показывает подход к реализации некоторых задач, в данном случае реализацию Uart драйвера на С++.
IoT шлюз Ethernet-RS485 на базе STM32
2020-02-14 в 14:25, admin, рубрики: DIY, ethernet, IoT, MySensors, rs485, stm32, Интернет вещей, программирование микроконтроллеров, Разработка для интернета вещей, умный дом, шлюз, Электроника для начинающихПривет!
Данный пост посвящён DIY разработке Ethernet-RS485 шлюза. Цель данного шлюза – обеспечение централизованного управления нодами Mysensors со стороны контроллера умного дома.
Недавно меня таки достали провода, дюпоны, навесная пайка и т.п. и было принято давно оттягиваемое решение — сделать свои платы с нуля, т.е. всё по серьёзному. :)
Сказано — сделано!
Первым делом была разработана и нарисована принципиальная схема шлюза, в которой я постарался учесть все свои хотелки и пожелания. Далее произведена компоновка и подгонка платы под требуемые размеры (50x50мм). И последний этап, это заказ плат на производстве. Я заказывал на фабрике JLCPCB, 5 плат — 2$ + доставка.
Данный шлюз построен на базе МК STM32F103CB(8)T6. В качестве Ethernet чипа выступает достаточно известная микросхема от WIZnet — W5500. Транспортом данного шлюза в сети Mysensors является проводной интерфейс RS485. В качестве драйвера RS485 был выбран чип — MAX13488EESA+T, в том числе и в связи с наличием у него режима автоматического выбора направления приёма/передачи.
Наилегчайший старт в STM через «одно место»
2020-02-14 в 11:41, admin, рубрики: STM32F103C8T6, программирование микроконтроллеровУже, наверное, прошло время религиозных войн AVR против STM, но нет-нет да наблюдаются вспышки столкновений двух лагерей. Практически у любой публикации на тему поделок на AVR обязательно будет каммент вроде «Да сколько уже можно лохматить бабушку, давно пора перейти на STM», дальше вариации на тему цены, количества ног и таймеров. Если STMщик более продвинут, обязательно будет указание, что DMA в AVR нет и не будет, по этому AVR должна умереть. Зачем простому блинку-вольтметру-градуснику DMA, гора 16 разрядных таймеров, 100 ног и 12 битный АЦП никто как правило не объясняет. Зачем нужен такой комбайн в устройстве, которое легко вывозит Tiny13, которая при этом не загружена даже на треть своих ресурсов никто не будет разбираться. Просто надо переходить на STM32, и баста. Ибо вот.
И надо сказать, есть у людей тяга к новизне. А действительно, может попробовать? А вдруг понравится? Вот только Референс Мануал на популярный STM32F103C6T8, на котором основана самая массовая Голубая таблетка в 1126 страниц что-то как-то не очень располагает к «быстрому старту». Даже отдельную утилиту, так ненавидимый аксакалами «калокуб», и ту надо изучать, что там к чему. Да и вникнув в Cube, стартовать за 5 минут вряд ли получится, генерируемая им портянка не самое доступное чтиво на ночь, просто «в лоб» врубиться, о чём там речь получится не у каждого.
Читать полностью »
TDD в микроконтроллерах. Часть 2: Как шпионы избавляют от зависимостей
2020-02-14 в 11:06, admin, рубрики: tdd, test-driven development, аппаратная разработка, информационная безопасность, Программирование, программирование микроконтроллеров, Производство и разработка электроники, разработка электроники, тесты
В предыдущей статье мы начали освещать тему эффективности применения методологии TDD для микроконтроллеров (далее – МК) на примере разработки прошивки для STM32. Мы выполнили следующее:
- Определили цель и инструменты разработки.
- Настроили IDE и фреймворк для написания тестов.
- Написали тест-лист для разрабатываемого функционала.
- Создали первый простой тест и запустили его.
В этой статье расскажем, как мы применили методологию TDD для реализации тестов из тест-листа и написания кода прошивки для их успешного выполнения. При написании тестов будем использовать специальные тестовые объекты для ликвидации зависимостей разрабатываемой логики от других программных модулей. В конце статьи мы представим бизнес-логику проекта и проанализируем особенности применения методологии TDD для реализации прошивки МК. Подробности – под катом.