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

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

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

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

Настраиваем сильносвязанные шины контроллера на плате Teensy 4.1

Системное программирование*Программирование микроконтроллеров*Компьютерное железо
В прошлой статье мы увидели, как может возрасти скорость работы с портом, если обращаться к нему не через обычную, а через сильносвязанную шину. Причины кроются в латентности шины. В целом, у меня есть целая статья про DMA, где я рассматриваю влияние латентности на скорость работы. Там показано, что латентность – зло! Ну, а сильносвязанные шины работают без неё.



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

В конце последней из указанных статей я сокрушался, что для решения проблем с латентностью нам приходится использовать синтезированную систему. А разработчики от NXP предоставили нам возможность поработать в таком же режиме и на обычном микроконтроллере. Давайте посмотрим, что нам это даст. Возни предстоит много, поэтому сегодня мы только всё настроим. Итак, начинаем…
Читать дальше →
Всего голосов 10: ↑8 и ↓2+6
Просмотры374
Комментарии 0

Новости

Показать еще

Бывший проектировщик микросхем для Военно-Воздушных Сил США расскажет в Cколково как верифицировать FIFO

FPGA*Программирование микроконтроллеров*Производство и разработка электроники*Компьютерное железоЭлектроника для начинающих

Если вы изучили начала цифровой схемотехники и компьютерной архитектуры по книжке Харрис & Харрис и потом вознамерились пойти собеседоваться на позицию проектировщика микросхем в Apple или NVidia, то вы интервью не пройдете. Посколько вы наверняка получите вопрос про реализацию в хардвере очередей FIFO, а это в Харрис & Харрис не описано.

Хуже того, даже если вы возьмете книжку Digital Design by William Dally & Curtis Harting, которую используют для обучения студентов в Стенфорде, и прочтете ее от корки до корки, то у вас все равно мало шансов, потому что, хотя FIFO там и есть, но в очень базисной форме, а контроль потока данных заканчивается на скид-буферах.

А что же хотят электронные компании?
Всего голосов 25: ↑24 и ↓1+23
Просмотры6.2K
Комментарии 18

rusEFI: Hellen и новости

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

TL,DR: gerbmerge+pdf merge+non-kicad interactivebom позволяет нам эффективно склеивать очень похожие, но при этом разные по форме и нюансам платы электронных блоков управления ДВС. Другие новости про rusEFI, до сих пор ищем единомышленников :)

В статье от 2014 года https://habr.com/ru/post/244737/ рассказ об открытом электронном блоке управления двигателями внутреннего сгорания rusEFI остановился на плате Frankenso. За четыре года мы продали 100 юнитов rusEFI, потом за последние 12 месяцев мы продали ещё 100 более современных юнитов, многому научились - но всё равно продолжаем пытаться понять, чего же именно мы хотим. Сейчас мы смещаем фокус с универсальности на устройства для конкретных семейств автомобилей с конкретными разъёмами и схожими распиновками ЭБУ, этим мы в том числе мечтаем привлекать программистов, которым не комфортно паять.

Давайте для начала я расскажу про Hellen https://github.com/andreika-git/hellen-one - это наш инструментарий разработки семейства модульных, склеенных из кусочков похожих, но всё-таки разных плат под конкретные проводки конкретных автомобилей.

Примерно год назад стало понятно, что универсальные блоки слишком сложны в поддержке: возможность управлять практически любым бензиновым двигателем с почти любыми оригинальными датчиками и формами сигналов ДПКВ/ДПРВ достигается только за счёт огромных усилий по поддержке нашей очень небольшой командой экспертов. При этом результат механически и электрически обычно выглядит всё равно очень плачевно. И со своей стороны мы устали сильно много допаивать руками после изготовления платы сервисом JLCPCB. Вместо большого универсального https://rusefi.com/s/proteus и маленького универсального https://rusefi.com/s/microrusefi ЭБУ мы решили сделать пару десятков ЭБУ под конкретные распиновки конкретных популярных автомобилей, изначально оптимизированных именно под JLCPCB каталог компонентов. Не хотелось разрабатывать и поддерживать много плат под конкретные автомобили ручным копированием блоков схемы и блоков трассировки. Наше решение: Hellen One Framework, это набор скриптов для склеивания gerber, PDF схем, описаний монтажа и HTML просмотрщика плат.

читать далее
Всего голосов 20: ↑20 и ↓0+20
Просмотры1.7K
Комментарии 6

Разработка контроллера резервного питания. Установка Azure RTOS

Open source*Программирование микроконтроллеров*Производство и разработка электроники*DIY или Сделай самЭлектроника для начинающих
Tutorial

Операционная система реального времени - сердце программного обеспечения разрабатываемого контроллера. На этот раз пробуем Azure RTOS.

Подробнее
Всего голосов 20: ↑16 и ↓4+12
Просмотры5K
Комментарии 30

DIY Zigbee датчик влажности почвы

Блог компании RUVDS.comБеспроводные технологии*Программирование микроконтроллеров*Умный домDIY или Сделай сам
Приветствую читателей Habr! Хочу поделиться с вами своим очередным проектом, сегодня речь пойдёт о небольшом датчике измерения влажности почвы на чипе СС2530. Проект основывается на разработке с открытым исходным кодом DIYRUZ Flower, разработчик @anonymass. Измерение влажности почвы у датчика осуществляется ёмкостным методом, работает от батарейки CR2450 или CR2477, есть защита от переполюсовки батарейки, датчик предназначен для работы в сетях Zigbee.

Всего голосов 48: ↑47 и ↓1+46
Просмотры6.6K
Комментарии 22

Интеграция устройства в экосистему Samsung SmartThings на примере «Умного чайника»

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

Допустим, вы сделали свое собственное устройство «Умного дома» и хотите интегрировать его в платформу домашней автоматизации Samsung SmartThings. Тогда вы сможете включить его в общую экосистему, поддерживающую множество устройств от разных производителей. Пользователи вашего устройства смогут инициализировать его удобным образом, задавать сценарии автоматизации, взаимодействовать с ним через мобильное приложение.

Я покажу, как это сделать, на примере самодельного устройства «Умный чайник». На функциональном уровне оно повторяет существующие на рынке устройства такого типа. Конечно, сам «чайник» мы собирать не будем, сделаем только очень простой прототип. Мой пример будет иллюстрировать в основном программный уровень. На железном уровне, я обошелся минимумом периферийных устройств, а часть из них реализовал как “заглушки”. Чтобы вы могли повторить все описанные в статье шаги самостоятельно, в качестве целевой платформы я выбрал плату микроконтроллера ESP8266 - одну из самых доступных и популярных на рынке. Данный пример я сделал в качестве стажировки в Исследовательском центре Samsung, и он будет полезен всем, кто еще только начинает заниматься разработкой умных устройств.

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

Сохраняем настройки и лог файл во внутренней памяти микроконтроллера

Блог компании EmboxПрограммирование*Системное программирование*Программирование микроконтроллеров*
image Задача сохранения настроек встречается в подавляющем большинстве современных устройств. Реже, но тоже очень часто, требуется хранение лог-файлов. Если речь идет о большом устройстве построенном на Линукс и содержащей как минимум SD карту, то с этими задачами не возникает проблем. Но если все устройство представляет из себя микроконтроллер, то возникает вопрос, где и в каком виде хранить подобные данные. В этом случае, обычно для настроек предлагают использовать сырые данные размещенные во внешнем eeprom. Но такой подход гораздо менее удобен чем вариант с файловой системой пусть даже с сильно ограниченными свойствами. Кроме того он плохо подходит для задач логирования. В данной статье мы расскажем как можно организовать удобное хранение файлов настроек и лог-файлов во внутренней флеш памяти микроконтроллера.
Читать дальше →
Всего голосов 15: ↑13 и ↓2+11
Просмотры2.6K
Комментарии 12

Проектирование измерителя частоты до 100МГц

Блог компании RUVDS.comНенормальное программирование*Программирование микроконтроллеров*Производство и разработка электроники*
Перевод
Tutorial

Этот проект посвящен созданию простого частотомера, способного измерять частоту до 100МГц с точностью 0.002%. За основу я взял ATtiny414, задействовав при этом его таймер/счетчик TCD0 и систему событий.
Читать дальше →
Всего голосов 42: ↑40 и ↓2+38
Просмотры5.2K
Комментарии 23

Пишем терминальный сервер для микроконтроллера на С

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

Всем привет! В процессе работы над гексаподом AIWM я все чаще задумывался о каком-нибудь удобном интерфейсе для общения с ним. В результате тесной работы с Linux через терминал я подумал, а почему бы не использовать такой же интерфейс и в гексаподе? Я был очень удивлен, что по запросу "STM32 terminal" я не нашел готовых реализаций. Ну раз нет готовых, то напишем свою реализацию терминального сервера, которую можно использовать в микроконтроллерах. Сделаем это без использования динамической памяти и прочих опасных радостей.

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

Прошивка Wi-Fi-модуля Realtek и разработка Intel 8051-кейлоггера с применением технологии RealWoW

Блог компании RUVDS.comСетевые технологии*Программирование микроконтроллеров*ПериферияСетевое оборудование
Перевод
В прошлый раз я рассказывал об исследовании прошивки встроенного контроллера моего ноутбука. Сегодня я займусь исследованием прошивки Wi-Fi-модуля, подключённого к тому же ноутбуку.


Читать дальше →
Всего голосов 33: ↑32 и ↓1+31
Просмотры5.4K
Комментарии 2

Отечественный DSP процессор 1967ВН028 от фирмы Milandr. Небольшой мануал по арифметике на языке assembler

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

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

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

Читать далее
Всего голосов 24: ↑23 и ↓1+22
Просмотры4.7K
Комментарии 12

Разбираемся с работой часовых сетей в лабораторных условиях

Блог компании RUVDS.comПрограммирование микроконтроллеров*История ITDIY или Сделай самЭлектроника для начинающих

Как вы помните, во время посещения блошиного рынка, мне встретились прекрасные вокзальные вторичные часы, которые я в результате не купил. И что-то вот у меня клокотало внутри, и решил, раз уж разбираться с системой первичных-вторичных часов, то по-крупному. В результате были закуплены заводские первичные часы, вторичные часы, а дома я построил настоящую часовую сеть, посмотрел как настраивать первичные часы, как настраивать вторичные, ощутил всю боль часовщиков, которые обслуживают такие сети и в результате сделал собственные первичные часы, вместо заводских. В статье буду разбирать, как работает система первичных и вторичных часов, а также попробуем сделать свои первичные часы.
Оценить масштаб работы
Всего голосов 78: ↑76 и ↓2+74
Просмотры8.6K
Комментарии 100

Встроенный контроллер одного ноутбука и его наследство

Блог компании RUVDS.comПрограммирование микроконтроллеров*Ноутбуки
Перевод
В этом материале я хочу немного рассказать о том, что происходит во встроенном контроллере (Embedded Controller, EC) моего ноутбука. Речь идёт о мультиконтроллере IT8586E, основанном на Intel 8051. Он встроен в ноутбук Lenovo Ideapad 310-15IKB. Но, прежде чем переходить к деталям, полагаю, нелишним будет поговорить о том, что это вообще такое — встроенные контроллеры.


Читать дальше →
Всего голосов 57: ↑54 и ↓3+51
Просмотры9.5K
Комментарии 7

TinyPhoto: встраиваемая графика и экономичные вычисления

Блог компании RUVDS.comНенормальное программирование*Программирование микроконтроллеров*Производство и разработка электроники*DIY или Сделай сам
Перевод

TinyPhoto – это миниатюрный электронный фотоальбом с встраиваемой графикой, собранный с использованием микроконтроллера ATiny85 и OLED-дисплея 128х64px. Такой дуэт может обеспечить не менее 20 часов непрерывного показа изображений от «таблетки» на 3В и 225мАч.
Всего голосов 39: ↑37 и ↓2+35
Просмотры6.8K
Комментарии 10

USB Mass Storage BOT чиним multi LUN у STM32

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

Попалась задача в проекте реализовать, чтобы по USB микроконтроллер прикидывался несколькими дисковыми устройствами для MicroSD, встроенной EEPROM и нескольких страничек оперативной памяти. Решил, что вполне логично, пойти по пути наименьшего сопротивления, попробовав запустить из коробки, то что ST реализовали в своей библиотеке. Работа c USB разделена у них на уровни абстракции: драйвер + MiddleWare:

В статье говорится как заставить работать USB Mass Storage multi LUN путём исправления ошибок в библиотеке Middlewares ST, а также побороть сопутствующие проблеммы. Исравлялось для stm32l4, но может быть достаточно легко адаптированно для остальных серий. Каждый LUN, по сути - независимый диск со своей таблицей разделов и адресацией. В конце статьи приводится ссылка на репозиторий с исправленной библиотекой. Также отправил Pull Request в ST - ждём официальных исправлений!

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

Удвоение частоты дискретизации оцифровкой в несколько проходов для правильно-периодических сигналов, возможно ли такое?

Алгоритмы*Отладка*Программирование микроконтроллеров*Схемотехника*DIY или Сделай сам

В процессе переделки игрушки-осциллографа DSO138, как уже описывалось в предыдущей статье, возникла идея в DSO303 попробовать фокус с удвоением частоты дискретизации. В самом деле для STM32F303 теоретически максимально достижимая скорость дискретизации с точки зрения входа АЦП, а это определяется минимальным временем открытия УВХ, которое в нашем случае 1,5 такта х (1 / 72 МГц), или примерно 20,8 наносекунд, что дает 48 MSPS (миллионов отсчетов в секунду). Однако при параллельной работе 4-х АЦП на 6 МГц получается достичь только 24 MSPS из-за ограниченного быстродействия АЦП.

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

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

Реализация счетчика наработки на микроконтроллере 1986BE92QI

C++*Алгоритмы*C*Программирование микроконтроллеров*Софт

Очень часто появляется необходимость отсчитывать время, отработанное некоторым устройством. Для ведения счетчика наработки необходимо периодически с определенным интервалом времени, например каждую минуту, обновлять значение, хранящееся в ячейке энергонезависимой памяти EEPROM. К сожалению, ресурс циклов записи и стирания этих ячеек памяти обычно мал и составляет около 10.000 циклов (по оценке производителя). Значит, если стирать и перезаписывать значение в одну и туже ячейку памяти с интервалом в 1 минуту, то ресурс ячейки будет израсходован примерно за неделю. Для увеличения этого времени можно использовать не одну ячейку, а все ячейки некоторой, свободной страницы памяти, например последней. Это даст нам 1024 * 10.000 запас циклов записи и стирания, что эквивалентно, примерно 19 годам при ежеминутной перезаписи значений счетчика.

Читать далее
Всего голосов 27: ↑25 и ↓2+23
Просмотры4.1K
Комментарии 31

Переделываем DSO138, или сделать что-то похожее на инструмент из игрушки

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

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

Собран этот «игрушечный» осциллограф на микроконтроллере STM32F103, и при достаточно грамотном схемотехническом решении цифровой части, наличии довольно приличного цветного дисплея 320Х240 точек, и не самом поганом аналоговом тракте, все, увы, гробится очень слабыми АЦП на борту 32F103. Заявленная полоса в 200 кГц может быть признана таковой только с очень большой натяжкой. Да, наличие или отсутствие сигнала с такой частотой он покажет, но вот реально посмотреть что-то сверх этого не получиться.

При этом есть у 103-й серии чуть более старший брат – STM32F303, по ножкам совместим практически полностью, но по интересующим нас параметрам существенно лучше, на борту 4 АЦП с частотой преобразования 5 МГц (6 МГц с 10-ти битным разрешением). При таком раскладе, если использовать все 4 АЦП параллельно с 10-ти битным разрешением, можно получить временное разрешение до честных 24 MSPS (миллионов отсчетов в секунду). Стоит микроконтроллер тоже недорого, на том же Али можно легко найти за опять же весьма умеренные деньги. Понятно, что идея поменять микроконтроллер возникла практически сразу после того, как я этот самый DSO138 и попробовал.

О том, что получилось в результате, и написана эта статья.

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

Когда нужна телеметрия: интегрируем в проект библиотеку логирования uP7

Отладка*C*Программирование микроконтроллеров*
Tutorial

Зачастую разработчику, или даже пользователю, требуется посмотреть, что происходит внутри устройства. Обычно в таких ситуациях используют либо текстовой вывод в терминал (через голый UART или самописный протокол гарантированной доставки), либо пишут свои собственные системы логирования. Однако, всегда ли оправдан такой подход? Есть ли решение проще и производительнее? В данной статье мы рассмотрим одно из таких - библиотеку логирования uP7.

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

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