Программирование микроконтроллеров *
Учимся программировать микроконтроллеры
Работа с COM-портом Arduino из Java-приложения
Недавно на просторах интернета наткнулся на весьма простую библиотеку Java-Arduino Communication Library. Не найдя публикаций на эту тему здесь, решил поделиться с вами опытом использования. Для работы нам понадобятся установленные Arduino IDE, IntelliJ IDEA, Java SE Development Kit и, собственно, сам микроконтроллер (я тестировал на китайской Arduino Nano и Strela на базе Leonardo от Амперки, на обоих все все работало отлично).
Ардуино головного мозга: импульсный датчик положения
Задача на сегодня: как определить угол поворота инкрементального энкодера?
Сегодня в серии публикаций про ардуино головного мозга коротенькая статья с небольшим экспериментом и парой рецептов. В комментариях к одной из моих прошлых статей меня обвинили в том, что ардуиной подсчитывать импульсы энкодера — фу так делать:
Оптически энкодер 1000/оборот и ATMega не имеющая аппаратной схемы работы с энкодером (как у серий STM32, например) — это тупик.Дальше в комментариях было много теоретизирования, которое лучше пропустить. Давайте лучше попробуем протестировать в железе, насколько это тупик. Для начала, что такое инкрементальный энкодер? Тот, кто помнит эпоху до-оптических мышек, ответ знает точно. Внутри энкодера есть диск с прорезями, вот для наглядности я сделал фотографию диска с пятьюстами прорезями:
К вопросу о странностях и невозможном
Инженеру не следует тратить время на высказывание «Этого не может быть», поскольку это уже случилось. Ему следует искать объективную причину происходящего.К сожалению, не смог найти точной цитаты, так что Вы видите ее в моей интерпретации.
Продолжим рассказ о интересных дефектах в области электроники. Сегодня речь пойдет о «промышленной» сети в АТС (изображена на КДПВ) на основе интерфейса RS485.
Далее в рассказе будут активно использоваться аббревиатуры, но пугаться не надо, в скобках будут даваться их расшифровки, так что добро пожаловать под кат.
Истории
Обзор одной российской RTOS, часть 8. Работа с прерываниями
Предыдущие статьи:
Часть 1. Общие сведения
Часть 2. Ядро ОСРВ МАКС
Часть 3. Структура простейшей программы
Часть 4. Полезная теория
Часть 5. Первое приложение
Часть 6. Средства синхронизации потоков
Часть 7. Средства обмена данными между задачами
Часть 8. Работа с прерываниями (настоящая статья)
Почему прерывания жизненно необходимы
Преподаватели информатики очень любят рассказывать о том, что существует работа по опросу, а также — по прерыванию, после чего обычно приводят небольшой примерчик обработки прерываний и забывают о теме. Дальше, при реальном программировании, приходится постигать основы этого дела не собственной шкуре.
При программировании в однозадачных системах, очень часто удаётся «выкрутиться» за счёт работы с оборудованием по опросу. В многозадачных системах это становится всё труднее.
Рассмотрим простейший пример. Пусть идёт приём из последовательного порта с ужасно низкой скоростью 9600 БОД. Реальные скорости давно находятся в районе 250 КБОД, но чтобы не возникало желания просто снизить скорость для решения проблемы, давайте рассмотрим именно сверхмедленный вариант.
Такое железное и такое безымянное
Почему железное, почему безымянное, и что будет на школе — обо всем по порядку.
Arduino для опроса счетчиков «Меркурий-230»
трансформаторных подстанциях, часто возникает необходимость оперативной проверки работоспособности счетчиков.
Как правило, в местах, где счетчики работают в составе АСКУЭ и соединены в группы по витой
паре RS 485 и подключены к шлюзу Меркурий 228, происходит пропадание связи в момент
установления связи со стороны сервера.
Такты для разработчиков
Если у вас есть опыт создания ПО и вы хотите познакомиться с проектированием цифровых логических схем (digital design), то одна из первых вещей, которые вам нужно понять, — это концепция тактов. Она раздражает многих программных инженеров, начинающих HDL-проектирование. Без использования тактов они могут превратить HDL в язык программирования с $display
, if
и циклами for
, как в любом другом языке. Но при этом такты, которые новички игнорируют, — зачастую один из основополагающих элементов при проектировании любых цифровых логических схем.
Ярче всего эта проблема проявляется именно при рассмотрении первых схем, созданных начинающими HDL-разработчиками. Я недавно общался с некоторыми из них. Новички опубликовали свои вопросы на форумах, которые я читаю. Когда я проанализировал то, что они делают, от увиденного волосы встали дыбом.
Обзор одной российской RTOS, часть 7. Средства обмена данными между задачами
Рис. 1. Пример взаимодействия задач в пределах одного контроллера
но и между контроллерами, полностью скрывая транспортный уровень.
Рис. 2. Пример взаимодействия задач между контроллерами
При этом разные контроллеры эквивалентны разным процессам, так как их память полностью изолирована. В версии ОС, опубликованной на нашем сайте, физическим каналом между контроллерами могут быть проводные интерфейсы SPI или UART, а также — беспроводной интерфейс через радиомодули RF24.
История создания синхронизатора часов DCF77
Здесь я опишу то, как я работал над этим проектом, с какими проблемами столкнулся, будучи новичком в электронике, интересные решения, которые мне попались при работе над проектом, и попробую оправдать их. Этот текст, может быть интересен программистам, которые решили заняться электроникой. Поэтому со стороны программирования многие вещи будут опускаться.
К вопросу о странностях и систематическом подходе
Отбросьте всё невозможное, то, что останется, и будет ответом, каким бы невероятным он ни оказался.
Есть на одном зарубежном ресурсе по электронике раздел «Записки Шерлока Омса», где рассматриваются загадочные случаи из инженерной практики (не только по электронной части, но, как правило, по ней). Решил завести нечто подобное, вот очередная история инженерного расследования.
Обзор одной российской RTOS, часть 6. Средства синхронизации потоков
Начнём с банальности — если задач много, то они начнут впустую тратить процессорное время на исполнение в холостых циклах. Как уже отмечалось в предыдущих публикациях, все задачи, которым в настоящий момент нечего делать (не пришли данные от аппаратуры или по прочим организационным причинам) должны быть заблокированы. На исполнение следует ставить только те задачи, которым сейчас есть что делать, так как процессорных тактов микроконтроллерам вечно не хватает.
Далее, задачи могут конфликтовать друг с другом за те или иные ресурсы (в частности, за оборудование). При рассмотрении типов многозадачности, мы уже рассматривали типовые случаи конфликтов за порт SPI (частично решаемое переходом на кооперативную многозадачность, но на неё перейти можно не всегда).
И самый страшный случай — зависимость задач. Часто результат работы одной задачи используется в другой. Из очевидных примеров, можно упомянуть следующие: бесполезно пересчитывать данные для выхода PID регулятора температуры, пока не получено и не усреднено достаточно данных с термодатчика, нет смысла менять воздействие на скорость двигателя, пока не получены сведения о текущем периоде его вращения, незачем обрабатывать строку символов с терминала, пока не получено терминирующего символа (признака конца строки). А кроме очевидных, есть масса неочевидных случаев зависимостей и порождаемых ими гонок. Иногда у начинающего разработчика больше времени уходит именно на борьбу с гонками, чем непосредственно на реализацию алгоритмов работы программы.
Во всех этих случаях, на помощь разработчику приходят синхронизирующие объекты. Давайте в текущей публикации рассмотрим, какие синхронизирующие объекты и функции имеются в ОСРВ МАКС.
Тайм-менеджмент для кинестетиков
Время — самый ценный ресурс, который у нас есть. Чтобы использовать его максимально продуктивно, существуют всякого рода техники тайм-менеджмента. Если говорить о тайм-менеджменте в масштабах рабочего дня, то одна из самых популярных техник называется Pomodoro. Но эта статья не про GTD, а про код (и немного про железо ^^).
Так вот, для техники Pomodoro есть инструмент Tomighty и у него открытый исходный код на C#, что побуждает к модификации этого самого кода с целью добавления новых возможностей и интеграции со всякими штуками.
Сегодня мы будем интегрировать клиент Tomighty с устройстовм "Большая Красная Кнопка". Нам для этого понадобится:
- Большая Красная Кнопка (со светодиодом). У меня оказалась не очень большая, но очень красная.
- ESP8266 — один из наиболее оптимальных микроконтроллеров по соотношению удобство/цена. Это даже не микроконтроллер вовсе, но как микроконтроллер он абсолютно прекрасен!
- MicroPython. Я не знаю языка удобнее чем Python, а вы? Разве что Ruby, но его вроде бы не портировали на ESP8266.
- Протокол MQTT для связи между компом и девайсом.
- Visual Studio.
- Опционально, расширение CodeRush for Roslyn. Оно сильно упрощает работу с как со своим, так и с незнакомым кодом.
Зачем? Чтобы получить опыт работы с чужим кодом. В связи с грядущим Hacktoberfest, этот скилл будет крайне актуален.
Welcome!
Ближайшие события
Вторая версия Монитора качества воздуха
Некоторое время назад я описывал прибор для мониторинга качества воздуха в помещении, который можно сделать самостоятельно из деталей заказанных на известном китайском интернет магазине.
И вот появилась новая версия прибора.
Обзор одной российской RTOS, часть 5. Первое приложение
Часть 1. Общие сведения
Часть 2. Ядро ОСРВ МАКС
Часть 3. Структура простейшей программы
Часть 4. Полезная теория
Часть 5. Первое приложение (настоящая статья)
Часть 6. Средства синхронизации потоков
Часть 7. Средства обмена данными между задачами
Часть 8. Работа с прерываниями
При начале работы с контроллерами, принято мигать светодиодами. Я нарушу эту традицию.
Во-первых, это банально надоело. Во-вторых, светодиоды потребляют слишком большой ток. Не спешите думать, что я экономлю каждый милливатт, просто по ходу работ, нам эта экономия будет крайне важна. Опять же, то, что мы увидим ниже — на светодиодах увидеть практически невозможно.
Итак, пока нет генератора проектов, берём проект по-умолчанию для своей макетной платы и своего любимого компилятора (я взял
Автопилот своими рукам. Добавляем электронное управление steer-by-wire на обычный автомобиль
Всем привет. Любому автопилоту, очевидно, нужно не только принимать решения по управлению, но и заставлять автомобиль этим решениям подчиняться. Сегодня увидим, как весьма доступными средствами доработать обычный автомобиль полностью электронным рулевым управлением (steer-by-wire). Оказывается, сам авто для разработки не очень и нужен, а большинство функционала можно с комфортом отлаживать дома или в офисе. В главных ролях всем известные компоненты из хобби-магазинов электроники.
Обзор одной российской RTOS, часть 4. Полезная теория
Просьба к постоянным читателям отнестись ко мне лояльно и не минусить за небольшое повторение части материала из предыдущей статьи (про защиту стека) — здесь оно оказалось логичней. А там я уже удалил.
Общее содержание (опубликованные и пока неопубликованные статьи):
Часть 1. Общие сведения
Часть 2. Ядро ОСРВ МАКС
Часть 3. Структура простейшей программы
Часть 4. Полезная теория (настоящая статья)
Часть 5. Первое приложение
Часть 6. Средства синхронизации потоков
Часть 7. Средства обмена данными между задачами
Часть 8. Работа с прерываниями
Некоторые неочевидные сведения о данных
Несколько фактов о куче
Многие программисты почему-то считают, что операции new и delete достаточно легковесны и просты. Поэтому код часто изобилует выделением и освобождением динамической памяти. Это более-менее приемлемо на мощных системах (гигабайты ОЗУ и гигагерцы тактовой частоты), но при ограниченных ресурсах может создавать некоторые проблемы, особенно для программ, работающих в режиме 24/7.
- Самая очевидная проблема —
От Торонто до Томска: подведение итогов и планирование будущих семинаров по микроэлектронике в России
Важная часть экспериментов с MIPSfpga случилась в России, на Украине и в Казахстане в течении двух прошлых лет — про это рассказала на конференции в Торонто Сара Харрис, профессор Университета Лас-Вегаса. В семинарах на эту и смежные темы проектирования чипов (Nanometer ASIC) приняли участие МГУ, МФТИ, МИФИ, МИЭТ, ИТМО и другие ведущие университеты.
Сейчас эксперимент продолжается: в этом месяце, помимо конференции в Томске, в Россию приезжает Роберт Оуэн, известный консультант по университетским образовательным программам в области микроэлектроники. За последние 23 года Роберт Оуэн посетил сотни университетов в Европе, Азии, Америке и даже Африке, как представитель Texas Instruments, ARM, Xilinx и Imagination. Он помогал университетам поставить программы в области DSP, микроконтроллеров, встроенных процессоров и систем на кристалле.
Вся эта деятельность — не абстрактное образование ради образования. На технологиях разработки микросхем с использованием языков описания аппаратуры Verilog и VHDL и использовании синтезируемых ядер стоит бизнес таких российских компаний как ЭЛВИС-НеоТек и Байкал Электроникс, о которых расскажет в лекции на этой неделе никто иной как Чубайс.
Про эти и другие мероприятия из прошлого и будущего подробнее под катом.
STM32 без HAL и SPL
STM32F10x Standard Peripherals Library (сокр. STM32F10x SPL) — библиотека, созданная компанией STMicroelectronics на языке Си для своих микроконтроллеров семейства STM32F10x. Содержит функции, структуры и макросы для облегчения работы с периферией микроконтроллера."
В настоящее время, для снижения порога вхождения и ускорения разработки предлагается использовать STM32CUBE. Цитата с сайта STM:
STM32Cube embedded software libraries, including:
The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls.
The Low-Layer (LL) APIs, a light-weight, optimized, expert oriented set of APIs designed for both performance and runtime efficiency.
A collection of Middleware components, like RTOS, USB library, file system, TCP/IP stack, Touch sensing library or Graphic Library (depending on the MCU series)
На мой взгляд, для большинства проектов не нужны внешние библиотеки и проще использовать обращение к регистрам микроконтроллера, используя стандартную документацию.
Считаем до трёх: четыре
Проверка жизнеспособности идеи: однотритный вычислитель
Это уже четвёртая статья, по мере готовности будет продолжение. Оглавление:
- Считаем до трёх: раз (троичный мультиплексор и сумматоры)
- Считаем до трёх: два (память)
- Считаем до трёх: три (счётчики)
- Считаем до трёх: четыре (однотритный вычислитель и система команд трёхтритного)
Вот так выглядит основная железка, о которой сегодня будет идти речь (больше перемычек богу перемычек!):
Вклад авторов
YuriPanchul 1850.2smart_alex 1299.4EasyLy 1200.6Indemsys 1155.0MaFrance351 1118.0iliasam 1090.6aabzel 995.0dlinyj 741.0GarryC 619.4haqreu 575.0