Обновить
164.17

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

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

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

Модуль универсального контроллера для интернета вещей. Тестирование FatFs

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


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

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

Программирование и отладка микроконтроллеров ARM Cortex-M4 фирмы Atmel в среде операционной системы Linux. Часть 1

Время на прочтение10 мин
Количество просмотров32K
Представляем электронную версию статьи из номера №2 за 2016 год журнала Компоненты и технологии. Автор Курниц Андрей.

В статье описан процесс развертывания экосистемы разработки приложений для микроконтроллеров Atmel серии SAM4S в среде операционной системы Linux. Читатель познакомится также с оценочной платой SAM4S-EK и семейством ARM Cortex-M4 микроконтроллеров фирмы Atmel. Приведены рекомендации по работе с адаптером отладки SAM-ICE (он же J-LINK) и программой OpenOCD.

Введение


Выбор операционной системы Linux в качестве среды для программирования микроконтроллеров ARM Cortex-M4 фирмы Atmel сложно назвать общепринятой практикой. Напротив, для разработки под свои микроконтроллеры Atmel свободно распространяет среду Atmel Studio 7, предназначенную исключительно для операционных систем Windows. Не будет секретом и тот факт, что разворачивание и настройка среды Atmel Studio 7 для новичка окажется куда проще, чем выбранный автором путь.
Автор предлагает использовать среду разработки Qt Creator в связке с инструментарием для кросс-компиляции GCC и с пакетом OpenOCD для отладки. В качестве операционной системы автор выбрал Linux Lubuntu 14.04 LTS (выполняющуюся на виртуальной машине, но это не существенно). Такой подход позволяет с легкостью переходить на другие ARM (и не только) микроконтроллеры, не меняя при этом привычный комплект инструментов. Например, в [1] приводится пример разработки для микроконтроллеров STM32F4 фирмы ST microelectronics с применением такого же комплекта инструментов.
Несколько слов об используемой терминологии. Аппаратное устройство, которое подключается к целевому микроконтроллеру и к рабочей станции, далее называется отладочным адаптером. Отладчиком же будет называться компьютерная программа, служащая для пошагового выполнения программы, просмотра значений ячеек памяти и т.д.

Аппаратная платформа



Рис. 1. Внешний вид платы SAM4S-EK с подключенным отладочным адаптером.
Читать дальше →

Модуль универсального контроллера для интернета вещей

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


K66BLEZ1 — плата модуля для разработки широкого класса устройств преимущественно в сфере IoT, носимой электроники и малой автоматизации. Отличается разнообразием портов ввода/вывода и интерфейсов, что придает ей необычайную универсальность. Создана на новейших микроконтроллерах фирмы NXP семейства Kinetis. Имеет на борту радио модуль с поддержкой Bluetooth LE 4.2 и ZigBee. Также есть разъёмы для microSD карты и USB 2.0 HS с поддержкой режимов device, host, OTG и зарядник литиевого аккумулятора 3.6 В. С нижней стороны выведено два разъёма по 60 контактов. Есть энергонезависимые часы реального времени с отдельным элементом питания. Плата сопровождается открытым программным обеспечением.
Читать дальше →

Плата контроллера на базе STM32F7 с видеовыходом

Время на прочтение3 мин
Количество просмотров22K
По роду своей работы часто приходится проектировать различные виды управляющих и измерительных систем. Разумеется на базе микроконтроллеров. Сначала использовали AVR, потом следующее семейство ATxMega, в конце концов остановились на семействе STM32. Несмотря на разные функционал проектируемых устройств, масса функций остается неизменной: интерфейс с пользователем и внешними устройствами, сохранение данных, часы реального времени и т. п. Поэтому появилась идея сделать универсальную плату контроллера содержащую основные узлы, а дополнительные подключаемые платы будут расширять функционал до необходимого. Сначала это был контроллер на STM32F103, потом на 207, потом на 429. И вот на 746 кристалле.

Но главная новинка на этой плате — это видеовыход. До этого, как правило, использовался графический дисплей (монохром, 320 х 240). Но у этого подхода есть свои недостатки:

1. При переходе на цветной дисплей приличного размера > 5" с встроенным контроллером цена становится достаточной большой.
2. Использовать приходиться только один тип дисплея, так как интерфейсы, как правило несовместимы.

Но тут пришла мысль использовать стандартные автомобильные мониторы, цена которых, достаточно демократична, существует большое количество производителей и есть разные размеры.

Для этого пришлось реализовать видео выход.


И вот что из этого получилось.

IoT-решение за 1,5 часа

Время на прочтение13 мин
Количество просмотров29K
Или как мы зажгли лампочку со смартфона через облачную службу на глазах изумленных студентов НГУ.

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

Глава 1. Лирическая


Практически все наши сотрудники получили высшее образование, и очень многие именно в Новосибирском государственном университете. Кто-то буквально недавно, кто-то – 10-20 лет назад, и все сталкивались с выбором будущей профессии. На последних курсах студентами мы выбирали кафедру, на которой проходили специализацию и защищали дипломы. И была такая замечательная традиция как Дни открытых дверей в институтах, лабораториях и компаниях, где сотрудники рассказывали, чем они занимаются, какие вопросы сейчас стоят перед наукой и технологиями и как можно в этом поучаствовать.

Что самое интересное в Днях открытых дверей для студента? Ходить, задавать вопросы, смотреть на реальных людей, которые занимаются настоящим делом, которое кому-то нужно.
Читать дальше →

Одновременный анализ энергопотребления/производительности Android-устройств с помощью Intel VTune Amplifier и SoC Watch

Время на прочтение3 мин
Количество просмотров7.5K
Благодаря некоторым новым возможностям, доступным в Intel VTune Amplifier 2016 Update 1, в настоящее время сравнительно просто организовать одновременный анализ энергопотребления и производительности Android-устройств без необходимости их постоянного соединения с компьютером по USB.


Стоит отметить, что, хотя можно подключить Android-устройство к компьютеру по схеме «ADB over WiFi», и, таким образом избежать необходимости использования опции анализа отключённого устройства, обычно проще подключить целевое устройство по USB. Если вы вместо этого хотите использовать WiFi, можете найти инструкции по настройке этой схемы в документации к Intel VTune Amplifier.
Читать дальше →

Как я писал библиотеку под МЭК 870-5-104 на Arduino при помощи Wireshark

Время на прочтение24 мин
Количество просмотров49K
В этой статье я хотел бы рассказать о своем знакомстве с протоком передачи данных МЭК 870-5-104 со стороны контролируемого (slave) устройства путем написания простой библиотеки на Arduino.

Что такое МЭК 870-5-104 это и где применяется?


МЭК 60870-5-104 – протокол телемеханики, предназначенный для передачи сигналов ТМ в АСТУ, регламентирующий использование сетевого доступа по протоколу TCP/IP. Чаще всего применяется в энергетике для информационного обмена между энергосистемами, а также для получения данных от измерительных преобразователей (вольтметры, счетчики электроэнергии и прочее).

Стэк протокола МЭК 670-5-104:


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

Реверс-инжиниринг лазерного датчика расстояния

Время на прочтение11 мин
Количество просмотров42K
image
Однажды ко мне попал нерабочий лазерный датчик расстояния Keyence LK-G407. Мало того, что он был нерабочий, так его еще и нельзя было использовать без специального управляющего блока. Но ведь у датчика такие интересные характеристики: измерение расстояния с точностью до единиц микрон, и скорость работы — 50 килоизмерений/с. Так что, чтобы запустить его, придется заметно поковыряться в самом датчике, заодно и ценный опыт получить.
Читать дальше →

Математика на пальцах: ардуино головного мозга или линейно-квадратичный регулятор для управления электродвигателем

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

Постановка задачи: как со школьными знаниями дойти до выводов университетского уровня


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

Как я уже говорил в предыдущих статьях, мои знакомые студенты хотят построить обратный маятник, но умаялись подбирать коэффициенты ПИД-регулятора, поэтому я неспешно смотрю, что такое линейно-квадратичный регулятор, ну а заодно и вам пересказываю то, что прочитал. Задача для этой статьи — показать, как воплотить в железе одномерный пример из статьи про линейно-квадратичный регулятор. Грубо говоря, я хочу написать написать управление для сервомотора: у меня есть текущее положение оси привода и текущая скорость её вращения, я хочу её остановить в заданном положении. Я попытался было прочитать схожую статью на эту тему, но, признаться, ничего в ней не понял, поэтому сел разбираться самостоятельно, предпочтительно на пальцах и без страшных слов типа дифференциальных уравнений Лагранжа-Эйлера.

Продолжая рабочий эксгибиционизм, знакомлю вас с Bubble Bobble, который живёт у нас с коллегой в кабинете. Он рецензирует статьи для конференции SIGGRAPH.


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

Atmel оптимизировал параметрический поиск микроконтроллеров для мобильных телефонов

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

Atmel ананонсировал запуск мобильной версии параметрического поиска микроконтроллеров — Microcontroller Selector. Функционально поиск повторяет аналогичный инструмент для ПК и работает для всех действующих семейств микроконтроллеров Atmel от AVR и Cortex-M0 до Cortex-M7 и -A5.
Читать дальше →

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

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

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

Я покажу тебе мир без STM32

Время на прочтение7 мин
Количество просмотров19K
Компания ЭФО перезапускает сайт myMCU.ru — портал для параметрического поиска микроконтроллеров и сопутствующих решений.

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

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



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

Alljoyn: взгляд embedded разработчика. Часть 3: Портируем на МК SAMD21

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

В предыдущих статьях мы разбирались с основами Alljoyn и средствами, помогающими отладке. Пришло время писать код для микроконтроллера. Кратко напомню архитектуру LSF (Lighting Software Framework).
В библиотеке LSF предусмотрено три сущности:
  • Thin-лампочка (lamp service),
  • Router (lighting controller service),
  • «приложение» (lighting sample application).

Thin-лампочка это та часть, которая «крутится» непосредственно в микроконтроллере нашей умной лампочки. Именно ею мы сегодня и займемся. Остальное было весьма подробно описано ранее, очередной раз останавливаться не будем.
Читать дальше →

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

Ферроэлектрическая (сегнетоэлектрическая) память и электронные чернила — идеальное сочетание для батарейного питания

Время на прочтение7 мин
Количество просмотров16K
Когда Texas Instruments оснастил свою знаменитую низким энергопотреблением серию MSP430 ферроэлектрической памятью, работать с ней стало еще легче и приятней, ведь такая память совмещает преимущества флэша и оперативной памяти. А новые лончпады с сегментным индикатором — просто готовая платформа для какой нибудь домашней автоматизации. А что если нужен графический дисплей? Тут на помощь приходят электронные чернила, ведь они потребляют энергию только при обновлении и способны годами радовать красивой контрастной картинкой, питаясь от одного комплекта батарей. Если вам интересен опыт программирования подобного устройства — добро пожаловать под кат. Я расскажу о том, что такое ферроэлектрическая память, и зачем она нужна, как добиться максимально низкого энергопотребления и получить красивую картинку на электронной бумаге и при этом воспользоваться на техасе кодом, написанным под ардуино.


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

Портирование FreeModbus 1.5 под STM32 HAL rs485 без RTOS

Время на прочтение15 мин
Количество просмотров73K
С недавних пор я начал заниматься встраиваемыми системами и докатился до программирования микроконтроллеров, а именно STM32F373. Одной из задач было развернуть Modbus Slave RTU поверх интерфейса rs485.

Поскольку сроки поджимали было принято решение взять что-нибудь готовое, чем я и занялся. Недолгое гугление навело меня на библиотеку FreeModbus, а вот тут началась боль с которой, я надеюсь, вы не столкнетесь.
Читать дальше →

«Весёлый повар» на FBD шаг за шагом

Время на прочтение12 мин
Количество просмотров14K
Приветствую всех.

Предыдущие статьи были о небольших проектах, сделанных по одному и тому же принципу:

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

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

В качестве примера была выбрана игра «Электроника ИМ-04 — Веселый повар».



Под катом описание по шагам, как написать эту игрушку на языке программирования FBD.
Читать дальше

ARM: GNU AS: Проект: Среда для программирования на ассемблере (Самодел на Delphi)

Время на прочтение6 мин
Количество просмотров9.8K
Начиная программировать на языке ассемблера для микроконтроллеров ARM первое, с чем вы столкнетесь — это отсутствие какой либо среды для программирования (c первым проектом, программами для компиляции и сборки я уже разбирался). Причем бытует мнение, что для ассемблера ничего кроме блокнота и не нужно (максимум, «для гурманов» сообщество предложит использовать редактор с подсветкой кода). И этот подход в принципе имеет место быть — ровно на столько, на сколько удобно писать программы на С++ в блокноте — то есть до того момента, как вы перейдете от программ «Hello, Word» к чему то более сложному.

Некоторое время назад я высказал предложение о необходимости написания среды разработки (или хотя бы редактора) для программ на ассемблере, но в ответ не услышал ничего. Значит, нужно написать среду самому. Понятно, что это не будет уровень современных сред программирования, над которыми трудятся целые коллективы разработчиков (да и опыта у них намного больше чем у меня), но я и не ставлю цель конкурировать с ними по «навороченности» — мне всего лишь нужна среда для комфортного программирования на ассемблере.

Если вам нужно тоже самое и нужно именно «ехать, а не шашечки» — тогда добро пожаловать под кат.
Читать дальше →

Custom floating point format on FPGA

Время на прочтение10 мин
Количество просмотров26K
Всем привет!

В данной статье речь пойдет о числах в формате с плавающей точкой и в частности о реализации специализированного формата FP23 на программируемых логических интегральных схемах (ПЛИС). В рамках конкретного проекта у меня родилась мысль реализовать оптимальный для определенных нужд формат данных с плавающей точкой. В итоге эта мысль переросла в реальный проект, который впоследствии нашел применение в некоторых интересных задачах цифровой обработки сигналов. В статье рассмотрены основные сложности при реализации формата данных floating point на ПЛИС Xilinx, рассмотрены базовые математические операции в формате FP23. Также в конце статьи вы можете найти исходный код проекта, которой можно свободно использовать в своих задачах или на его основе реализовать похожие форматы данных.


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

STM32 и LCD, быстрая заливка экрана

Время на прочтение12 мин
Количество просмотров76K
В настоящее время получили распространение различные жидкокристаллические дисплеи, которые отлично подключаются к контроллерам семейства STM32. В данной статье речь пойдет об одном из распространенных контроллеров STM32F103C8T6 и дисплее 7" на контроллере SSD1963. Оба в виде законченных узлов легко доступны на Aliexpress и относительно недорого стоят. Конечно, все рассмотренное ниже справедливо и для других дисплеев с параллельным интерфейсом и большинства контроллеров STM32.
Читать дальше →

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

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


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

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

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

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