Обновить
161.64

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

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

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

Про интернет вещей и полупроводниковую индустрию в краю, где пьют верблюжье молоко. День первый

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


Несколько месяцев назад мой коллега Тимур Палташев, менеджер в графическом отделении Advanced Micro Devices (AMD) в Саннивейл, Калифорния, предложил мне съездить и устроить семинар в Казахстане. Он будет рассказывать про гетерогенный компьютинг и большие процессоры AMD для игровых приставок и виртуальной реальности, а я буду рассказывать про маленькие процессоры MIPS для встроенных процессоров и машинного видения. Кроме этого мне было обещано попробовать конину, ферментированное молоко кобылицы (кумыс) и ферментированное молоко верблюдицы (шубат). «А тянь-шанские ели там будут?», — спросил я, и получив утвердительный ответ, воскликнул «я готов».

«А под каким соусом будет делаться данное мероприятие?», — спросил я у Тимура и его казахской одноклассницы Гульфариды Тулемиссовой, которая делала всю работу по организации в Almaty Management University. Выяснилось, что казахский народ в настоящее время заинтересовала тематика интернета вещей. Сети из сенсоров с беспроводной связью уже используются чтобы присматривать за шахтерами в казахстанских шахтах, не случилось ли с ними чего. Кроме этого в стране есть качественные программисты микроконтроллеров и инженеры встроенных систем, которые делают сейсмоанализаторы и телекоммуникационные ящики (в кооперации с россиянами и китайцами).

«Хорошо», — сказал я, у Imagination Technologies и ее отделения MIPS Business Unit, в котором я работаю, есть продукты в области интернета вещей, в частности ядра MIPS microAptiv, которые Samsung использует в платформе для интернета вещей Samsung Artik 1. Кроме этого, у нас есть и материалы по микроконтроллерам, а также то, чего в Казахстане пока не хватает — знание ПЛИС-ов и проектирования микросхем, чем казахстанцы могли бы заняться в кооперации с россиянами, которые сейчас хорошо прогрессируют в данном направлении.

После этой беселы я поймал в коридоре нашего компанейского аналитика в области интернета вещей и спросил у него, что собственно такое интернет вещей.
Читать дальше →

Создание динамических time-lapse с помощью микроконтроллера

Время на прочтение2 мин
Количество просмотров7.9K
Когда то у меня была мыльница Canon и у нее был вход типа мини джек. Через который к фотоаппарату можно было подключить интервелометр и снимать таймлапсы. Интервелометр это такая штука которая может автоматически нажимать на спуск с заданным интервалом времени.

Идёт? Бежит? Поднимается по лестнице? Intel Edison знает ответ

Время на прочтение5 мин
Количество просмотров5.9K
Сегодня мы расскажем о проекте, нацеленном на распознавание некоторых видов физической активности человека. Делается это с помощью платы Intel Edison, к которой подключён акселерометр ADXL345.


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

В нашем проекте для анализа данных акселерометра используется метод опорных векторов (Support Vector Machine, SVM). Программная часть реализована с применением популярной библиотеки LIBSVM. Код написан в двух вариантах: на Python и Node.js.
Читать дальше →

STM32 USB Mass Storage Bootloader

Время на прочтение12 мин
Количество просмотров78K
Известно, что софт можно дописывать вечно, а всякого рода недочёты на плате полностью исправляются ревизии так к третьей. И если с железом уже ничего не поделаешь, то для обновления микропрограмм придумали неплохой способ обхода ограничений пространства и времени — Bootloader.

Загрузчик — это удобно и полезно, не правда ли? А если загрузчик собственной реализации, то это еще более удобно, полезно и гибко и не стабильно. Ну и конечно же, очень круто!

Так же, это прекрасная возможность углубиться и изучить особенности используемой вычислительной машины — в нашем случае микроконтроллера STM32 с ядром ARM Cortex-M3.

На самом деле, загрузчик — это проще, чем кажется на первый взгляд. В доказательство, под cut'ом соберём свой собственный USB Mass Storage Bootloader!

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

О выравнивании памяти на ARM процессорах на простом примере

Время на прочтение1 мин
Количество просмотров13K
Допустим у нас есть функция, которая принимает в себя указатель. Мы знаем, что в указателе лежит нуль-терминальная строка, а за ней 4-байтное целое. Задача — вывести в консоль строку и целое. Решить можно вот так:

void foo(void* data_ptr)
{
  //Ставим указатель на строку на начало данных
  char* str = (char*)data_ptr;
  //А указатель на целое смещаем на длину строки и еще один байт
  int* value = (int*)(str+strlen(str)+1);
  //и выводим содержимое указателей
  printf("%s %d", str, *value);
}

Довольно тривиальная задача, не так ли? Проверяем на компе (x86), все ОК. Загружаем на борду с ARM. И, не успев выстрелить себе в ногу, наступаем на грабли. В зависимости от содержания строки, целое значение выводится то нормальным, то кривым. Поверяем указатели, проверяем память, на которые они указывают. Все в норме.
Читать дальше →

К вопросу о пинах

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

Дню знаний посвящается...


Данный пост посвящен тому, с чем сталкиваются все пользователи Ардуино (далее по тексту А, имейте в виду что под этой буквой будет прятаться как сам кристалл, так и среда разработки программ), а именно с работой с портами ввода/вывода.

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

Все это верно, но лишь до того момента, когда вам потребуется подключать к А что-нибудь пошустрее светодиода (у меня нет претензий к этим замечательным приборам, но обычно в силу специфики использования особого быстродействия от них не требуется), и тут то Вам понадобится эффективная работа с пинами (будем так для краткости именовать порты ввода/вывода), и тогда на форумах возникают вопросы «почему у меня так медленно работает программа», на которые молодые гуру мгновенно отвечают «работай напрямую с регистрами и будет тебе счастье» и показывают, как именно, по их мнению, следует это делать.

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

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

Подарок на 1 сентября всем поклонникам цифровой схемотехники и архитектуры компьютера

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

Господа! Сегодня на 1 сентября, в День Знаний, группа из украинских преподавателей вузов, их аспиранток, а также российских инженеров, решили, по согласованию с британскими издателями Elsevier через компанию Imagination Technologies, сделать небольшой подарок всем учителям компьютерной архитектуры и цифровой схемотехники, особенно тем, которые используют популярный учебник Дэвида Харриса и Сары Харрис.

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

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

Итого, вырезка из слайдов, чтобы вы поняли, о чем идет речь:
Читать дальше →

Использование TCL в разработке на FPGA

Время на прочтение11 мин
Количество просмотров41K
Всем привет! Давно не писал статьи на любимую тематику и наконец-то созрел на что-то более-менее приличное и стоящее. В этой статье речь пойдет об очень интересной задаче, с которой инженер-разработчик сталкивается чуть ли не каждый день. Предлагаю вам посмотреть, каким образом можно использовать всю мощь и простоту TCL скриптов для проектирования на FPGA. В данной статье описание базируется на ПЛИС фирмы Xilinx, но это не отменяет возможностей TCL скриптов для кристаллов ПЛИС других производителей.


Интересно? Поехали…
Читать дальше →

Подключаем устройства Intel для интернета вещей к Microsoft Azure IoT Suite

Время на прочтение9 мин
Количество просмотров8.1K
Если подключить устройства для IoT, основанные на микроконтроллерах Intel, к PAAS-решению Microsoft Azure IoT Suite, получится среда для реализации бесчисленного множества проектов в области интернета вещей. Сегодня мы расскажем об особенностях Azure IoT Suite и поговорим о том, как связывать с этим набором облачных служб Intel Edison, Intel Curie и шлюзы от Intel.


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

Как штатными настройками убить микроконтроллер. Часть 1

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

enter image description here


Не могу назвать себя очень аккуратным и внимательным человеком, но тем не менее, за более чем 10 лет разработки ПО для встраиваемых устройств мне толком не удалось ничего сжечь или испортить. С одной стороны, стоит за это сказать "спасибо" моим коллегам — схемотехникам. С другой стороны, современная "умная" микроэлектроника имеет достаточно серьезную "защиту от дурака". Но пару дней назад произошел один интересный случай. Мне удалось превратить в "кирпич" микроконтроллер Atmel SAMD21G18AU, выполняя обычные манипуляции, описанные в user manual.

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

Современное искусство на экране инженера хардверной компании

Время на прочтение3 мин
Количество просмотров25K
Всем привет! Меня зовут Максим, я работаю инженером в одной компании. Фирма делает серверы и другое железо на POWER-архитектуре (какое и почему именно такое — позже расскажут другие), а я пока хочу показать участок системной платы сервера — это моя зона ответственности.

Вообще здесь будет нечто вроде рабочего журнала (worklog-а)— вместе с коллегами будем постить рассказы о зарождении жизни в железках. Сначала про сервер, а дальше и про остальное.

Трассировка системной платы сервера

Как сюда лучше всего поставить преобразователи напряжения?
Что ещё покажете?

Знакомство: BBC micro:bit и mbed OS 5

Время на прочтение4 мин
Количество просмотров12K
Как отмечалось на geektimes, микрокомпьютер BBC micro:bit ещё этой весной начали рассылать британским школьникам, а пару месяцев назад он поступил в свободную продажу по цене от £13 за штуку.

Предположим, micro:bit приобретён; что с ним делать дальше? Я решил сделать из него часы, потому что мои наручные как раз сломались.


Инструкция по использованию micro:bit со старой версией mbed OS есть на сайте Ланкастерского университета; но ARM две недели назад выпустила новую версию mbed OS 5, и с этой новой версией библиотека поддержки microbit-dal «из коробки» не работает.

Насколько я понимаю, даже в самом ARM никто ещё не пытался использовать mbed OS 5 на micro:bit; мне хотелось стать первым.
Читать дальше →

JavaScript выходит за пределы Web в 2015 году

Время на прочтение8 мин
Количество просмотров20K
2015 год был значимым годом для Интернета вещей. Мы увидели огромный прогресс в размере и возможностях устройств, большие игроки, такие как Microsoft и Samsung, в буквальном смысле продвигаются в космос и всё IoT сообщество начинает ещё больше разрастаться. В течение двух последних лет здесь, на SitePoint, для меня стало чем-то в роде традиции делать обзор года в ракурсах IoT и JavaScript (см. JavaScript выходит за пределы Web и JavaScript выходит за пределы Web в 2014). Хотя изначальная популярность и ажиотаж вокруг JavaScript, как языка для IoT, похоже немного поутихли за 2015 год, JavaScript всё ещё продолжает позиционироваться как довольно-таки сильный способ для задействования магии на большем числе IoT платформ, чем это себе представляют люди.

В этом обзоре мы рассмотрим некоторые значимые продвижения в IoT, которые раскрывают новые возможности для JavaScript разработчиков и будущий потенциал JavaScript за пределами Web.
Читать дальше →

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

Про разделение труда и его последствия

Время на прочтение7 мин
Количество просмотров19K
Несколько лет назад довелось нам принять участие в разработке счётчика газа. На момент начала работ с заказчиком, у него уже были некоторые наработки. И наработки эти показались нам очень интересным примером для демонстрации последствий неудачного разделения труда по компетенциям. Под катом опишем, почему разделение было неудачным, и как мы решали проблемы, возникшие в результате.
Читать дальше →

Один день программиста ембеддера. Написать драйвер для датчика влажности HTS221 от STM — это очень просто?

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

Очередной день обещал быть простым и приятным, насколько это возможно когда в очередной раз спасаешь “горящий” проект. По плану до вечера всего то надо было оживить интегральный совмещённый датчик температуры и влажности. Крошечные размеры, занимаемые им на плате, малое количество ножек и отсутствие дискретных компонентов “обвязки” позволяли надеяться на то, что имеешь дело с новейшей разработкой, а современные датчики, не смотря на маленькие размеры, отличаются умом и сообразительностью. Они без лишних вопросов выдают на выходе готовый результат. Зачастую они не просто выполняют измерения, а производят очень сложную обработку сигналов, имеют внутренние буферы для хранения данных, выходы прерываний чтобы во время разбудить микроконтроллер и много других приятных фишек. Всё это сильно облегчает задачу написания кода и сокращает требования к ресурсам управляющего микроконтроллера… Общаться с ними легко и приятно. Правда иногда приходится повозиться с большим количеством настроек. Однако, сегодня мне это не грозило, ведь передо мной всего лишь банальный ёмкостный измеритель влажности с функцией измерения температуры.
Читать дальше →

Беспроводные сети ZigBee. Часть 2 [Работа с радиомодулями ETRX35X]

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

Введение



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

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

Работа с радиомодулями SI4432

Время на прочтение12 мин
Количество просмотров82K
В статье рассмотрены функциональные особенности работы радиомодуля на микросхеме ISM (industrial, scientific and medical radio bands) трансивера SI4432. Также приведены простейшие примеры программной инициализации модуля и описаны некоторые возможные вариации настройки.


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

Портирование FreeModbus под STM32. Версия от Динара

Время на прочтение9 мин
Количество просмотров34K
Доброго времени суток, любители и профессионалы программирования на микроконтроллерах. Эта статья посвящена портированию библиотеки freemodbus на STM32F100 (тот, что в discovery vl). Да, на habrahabr уже есть подобная статья, но мне она кажется не самой удачной. Буду использовать Modbus RTU в режиме slave. Для успешного портирования библиотеки freemodbus на платформу без операционной системы, необходимо выполнить три шага:

1. прописать файл port.h
2. настроить таймер
3. настроить usart

Итак, план составлен — пора за работу.
Читать дальше →

Переводчик с языка жестов: реализация метода опорных векторов на Intel Edison

Время на прочтение5 мин
Количество просмотров8.8K
В мире живёт 30 миллионов человек, имеющих проблемы с речью. Для того, чтобы общаться с окружающими, они пользуются языком жестов. А что, если собеседник такого языка не понимает? Как преодолеть языковой барьер? Наш сегодняшний рассказ посвящён проекту распознавания жестов. Плата Intel Edison принимает сведения от датчиков, закреплённых на специальной перчатке, обрабатывает их с использованием метода опорных векторов, узнаёт, какой букве соответствует жест, и отправляет то, что получилось, Android-приложению для озвучивания.


Intel Edison и перчатка с датчиками: основа системы распознавания языка жестов
Читать дальше →

Chargebox на Arduino

Время на прочтение4 мин
Количество просмотров6.6K
Создания автомата для зарядки планшетов и телефонов

Основные компоненты:

  • Arduino Uno
  • LСD Display 2x16
  • Coin Receiver Wei-Ya HI 07
  • Реле

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

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