Все потоки
Поиск
Написать публикацию
Обновить
162.96

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

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

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

Захват аналогового видеосигнала при помощи STM32F4-DISCOVERY

Время на прочтение14 мин
Количество просмотров176K
image
В этой статье я расскажу о том, как можно захватывать аналоговый черно-белый видеосигнал с помощью платы STM32F4-DISCOVERY, и об особенностях передачи его на компьютер при помощи USB.
Читать дальше →

Переход из online в offline IDE при программировании Nucleo-F401RE

Время на прочтение4 мин
Количество просмотров23K
Понравилась мне платформа Nucleo и приобрел я плату Nucleo-F401RE.

Желания углубляться во внутреннее устройство микроконтроллера не было и мое внимание привлекла библиотека mbed. В этой библиотеке заявлена поддержка данной платы.

На Хабре уже есть публикации по быстрому старту Nucleo + mbed («Быстрый старт ST Nucleo-F401 + краткое руководство», «STM32 Nucleo. Подключаем TFT LCD на базе чипа ILI9341»). Но все примеры даются для online IDE. Но такой вариант мне не очень понравился и я стал искать настольную IDE.

Попробовал Eclipse по статье с сайта mbed.org. Но так как пример написан для другого контроллера, а адаптировать инструкцию для STM у меня не получилось, то этот вариант отпал.

Тогда стал смотреть в сторону CooCox CoIDE. К сожалению, CoIDE официально не поддерживает конроллер STM32F401RE. Но пробовать, так пробовать.
Читать дальше →

Чего не хватает инженерному образованию

Время на прочтение5 мин
Количество просмотров7.1K
Rich Nass из embedded-computing.com взял у меня интервью о моих мыслях по инженерному образованию. Для начала, важно отметить, что обучение в университете еще не инженерное образование, а всего лишь начало этого процесса. Слишком многие из нас, практиков, решили, что можно остановить обучение после окончания школы. Есть тревожный факт, что в среднем «человек прошивки» читает только одну техническую книгу в год, и это в области, где постоянные изменения являются основой нашей профессии.
Читать дальше →

ARM анонсировала mbed v3.0

Время на прочтение1 мин
Количество просмотров19K
image
В начале октября, на конференции ARM TechCon 2014, компания ARM анонсировала новое поколение mbed v3.0. Разработки ведутся над новым программным обеспечением — mbed OS и mbed Device Server.

mbed Device Server будет способен обрабатывать IoT (Internet of Things) данные в облаке через стандартный REST API, аналогично веб серверу.
mbed OS будет выполнять роль полноценной операционной системы для Cortex-M микроконтроллеров, включающей в себя: С++ фреймфорк, менеджмент защиты (TLS/DTLS), менеджмент энергопотребления, подключение к беспроводным сетям (Bluetooth Smart, 2G, 3G, LTE, CDMA и Wi-Fi).

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

Реализации интерфейса 1-Wire на основе SSP

Время на прочтение13 мин
Количество просмотров19K
Как из камня сделать пар, знает доктор наш Гаспар

Очень часто при выборе МК приходится обращать внимание на наличие в его составе конкретного набора периферийных устройств под конкретную задачу. Между тем ряд стандартных шин может быть реслизован на основе других интерфейсов, имеющихся в уже используемом МК. В даном посте я покажу, как на МК 1986ВЕ1Т можно реализовать отсутствующий в его составе аппаратный интерфейс 1-Wire на основе имеющегося интерфейса SSP, причем данный опыт может быть перенесен на другие МК других производителей аналогичной архитектуры.
Читать дальше →

Сделай шаг к ПЛИС

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


Ты ждал знак? Вот он!

Много лет я не решался начать программировать ПЛИС, потому что это сложно, дорого и больно (как мне казалось). Но хорошо, когда есть друзья, которые помогают сделать первый шаг. И теперь я не понимаю одного — ПОЧЕМУ Я ЖДАЛ ТАК ДОЛГО?

Сейчас я помогу сделать первый шаг и тебе!

Я готов!

Разбираем и собираем обратно стек USB

Время на прочтение14 мин
Количество просмотров108K
Иллюстрированная проекция модели сетевого взаимодействия OSI на универсальную последовательную шину.

Три «замечательных» уровня стека USB


Меня не устроил вид стека USB, который можно встретить чаще всего на просторах сети:

Не сильно полезный стек USB

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

Если у читателя бывали сходные ощущения, предлагаю альтернативное, явившееся мне неожиданно ясно в перегретом мозгу видение стека USB, по мотивам любимой 7-уровневой модели OSI. Я ограничился пятью уровнями:



Я не хочу сказать, что весь софт и библиотеки уже сделаны или должны проектироваться, исходя из этой модели. Из инженерных соображений код c уровнями будет сильно перемешан. Но я хочу помочь тем, кто начинает своё знакомство с шиной USB, кто хочет понять протоколы обмена устройств и терминологию предметной области, подобраться поближе к готовым примерам, библиотекам и лучше ориентироваться в них. Эта модель не для загрузки в МК, но в ваши блестящие умы, дорогие друзья. А ваши золотые руки потом всё сами сделают, я не сомневаюсь:)
Разобрать стек USB

Действительно ли вам нужен исходный код?

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

Если вы спросите любого разработчика встроенного ПО, хочет ли он иметь доступ к исходному коду операционной системы реального времени, которую он использует, ответ почти наверняка будет — конечно. Точно так же обстоит дело с любым покупным ПО. Является ли такой ответ разумным для всех случаев и почему исходный код иногда необходим, а иногда его наличие менее полезно, чем ожидалось?
Читать дальше →

Параллельные вычисления — немного грабель

Время на прочтение7 мин
Количество просмотров5.1K
«Жуки, жуки, жуки» — всхрапывая, приговаривал во сне Пумба, и они ему снились!

Всем известно, что при написании многопотоковых приложений следует быть особенно внимательными к возможным «гонкам» в момент изменения совместно используемых рзличными потоками переменных. Причем также существует мнение, что подобные гонки весьма редки и по этой причине весьма трудно-обнаружимы, почему и склонны возникать в редких ситуациях и приводить к непредсказуемому поведению, а то и к краху системы. Если с последними утверждениями придется согласиться, то с первым я в настоящем посте намерен поспорить и показать, что процесс проявления возможных неприятностей можно интенсифицировать, что делает и более легким задачу определения причин их появления и устранения оных. Основная идея подобной интенсификации — применение параллельных вычислений на многоядерных системах.
Читать дальше →

DMA вообще и в частности

Время на прочтение8 мин
Количество просмотров52K
Знал бы где упадешь, соломки подстелил бы

О существовании DMA (Direct Memory Access) — русскоязычное ПДП (Прямой Доступ к Памяти) многие разработчики встроенных устройств слышали, но вот применяют его гораздо реже, чем он (ПДП) этого заслуживает. Кстати, я буду упоминать именно эту аббревиатуру, но не потому, что я такой упрямый патриот и противник англоязычных заимствований, а всего лишь от того, что мне лень лишний раз переключать раскладку клавиатуры.

Основных причин недостаточного использования ПДП в программах для МК три: 1) относительная сложность данного устройства, которая вместе с 2) непониманием выгод его применения приводит к нежеланию данное устройство изучать и осваивать (как говорят в таких случаях, старшая сестра не велит — для тех, кто в танке — это про лень, котороая раньше нас родилась), отягощенному 3) отсутствием хороших и понятных примеров применения ПДП в поставляемых с МК руководствами. И если первые две причины носят явно субъективный характер, то третья несомненно объективна и внутри меня просыпается параноик и настойчиво утверждает, что это сделано специально с целью не допустить отечественных разработчиков МК на продвинутые уровни, где-то выше 60 (то, что при этом страдают и остальные разработчики по всему миру, параноиком игнорируется, поскольку либо 1) за пределами России распространяются правильные примеры, либо 2) ради великой цели не допустить вставания, сами понимаете кого, с колен буржуины готовы пойти на любые жертвы).

Тем не менее без шуток, действительно, в примерах в лучшем случае лежит модуль настройки отдельно взятого канала ПДП, а увязанную систему с ПДП драйвером Вы в примерах применений не найдете (даже в CMSIS не найдете, ну тут действительно есть объективная причина — напишу пост про него — упомяну). Почему так на самом деле — я не знаю, но разработчикам кристаллов виднее, единственное разумное обоснование, которое мне приходит в голову — это то, что ПДП довольно таки специфичны, поэтому «нельзя просто так взять и » перенести код из другого источника, а ввиду малой востребованности ПДП в реальных разработках отсутствие таких примеров не считается существенным недостатком. Восполнить указанный мной пробел в знаниях и предназначен настоящий пост (нескромное заявление, но если сам себя не похвалишь, весь день ходишь как оплеванный), поэтому те, кого я заинтриговал, могут нажать на кнопочку.
Читать дальше →

Умная поливалка цветка на микроконтроллере Attiny13A

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

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

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

Об использование sed1335 в микроконтроллерах stm32f103

Время на прочтение2 мин
Количество просмотров20K
Ни для кого не секрет что одним из основных интересов вывода информации у приборов является дисплей. В основном на МК подключат символьные дисплеи на основе hd44780. Редким исключением составляется графические дисплеи графические дисплеи WG12864A разрешением 128*64. Но что делать если нужно больше.


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

Быстрее, выше, сильнее или как быстро цифровать аналоговый сигнал

Время на прочтение2 мин
Количество просмотров22K
Однажды попался мне заказ оцифровать сигнал. Частота дискретизации сигнала была 50кГц. С этой задачей я быстро справился используя мануал из интернета. Однако вскре заказчик не смог выжать из этой скорсти то что ему хотелось и он решил объявил заказ на частоту 50МГц. В связи с тем что частота изменения сигнала от 0 до 5В была не более 10 МГц то я решил что про скин-эффект не стоит заморачиваться и взялся за заказ.
Читать дальше →

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

Опыт еще одного инженерного расследования

Время на прочтение6 мин
Количество просмотров29K
Нам представилась возможность провести еще одно небольшое, но крайне поучительное тактическое занятие

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

Подключение дисплея DVD плеера к микроконтроллеру

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


Начну с предыстории, зачем же мне все это нужно. Я задался целью сделать себе HTPC компьютер на базе корпуса от DVD плеера Daewoo DV-500, внешне он мне нравится, и свободного места в нем достаточно для установки необходимого железа внутрь. Но помимо всего, я задумал оставить родной индикатор и задействовать его для отображения различной информации. О том, как я подключал дисплей к микроконтроллеру и расшифровывал протокол обмена этого дисплея, пойдет в этой статье.
Читать дальше →

Быстрый старт ST Nucleo-F401 + краткое руководство

Время на прочтение8 мин
Количество просмотров90K
В предыдущем своем посте я попытался коротко ознакомить вас с платформой Nucleo от ST.
В этом посте я хочу рассказать вам на живом примере некоторые сильные стороны этой платформы, которая имеет все шансы потеснить приевшиеся всем Arduino, и показать что все примеры кода и шилды от Arduino, прекрасно подходят для платформы Nucleo.

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

Обзор платформы для разработчиков ST Nucleo на примере Nucleo-F401RE

Время на прочтение5 мин
Количество просмотров90K
Оценочные платы ST Nucleo:

image

Это открытая, недорогая и легко расширяемая отладочная платформа для разработки с широким выбором специальных плат расширения, для всей линейки 32-х битных микроконтроллеров STM32 архитектуры ARM Cortex-M3 и Cortex-M4.

image

Платы «ST Nucleo» дают возможность выбирать из различных сочетаний производительность, энергопотребление, и архитектурные особенности микроконтроллера. Платформа позволяет быстро, удобно и легко изучить особенности архитектуры и программирования микроконтроллера, опробовать свои идеи, создать прототипы с любым микроконтроллером семейства STM32.
Читать дальше →

Странное поведение компании STmicroelectronics

Время на прочтение2 мин
Количество просмотров96K
Наша компания успешно использовала некоторое время чипы серии DSM компании STmicroelectronicsDSM2150F5V. Это микросхема в корпусе TQFP80, которая предназначена для совместной работы вместе с сигнальными процессорами DSP Blackfin компании Analog Devices. Мы эту микросхемку именно так и использовали. В составе DSM2150F5V находятся сразу и FLASH-память для программы, откуда может загрузиться DSP, и программируемая логика, которую можно использовать для каких-то дополнительных функций. Как написано в даташите (который найти в Интернете становится все труднее и труднее, об этом далее), DSM2150F5V специально предназначена для упрощения подключения памяти, внешней логики, портов ввода/вывода к DSP-процессорам Analog Devices семейств ADSP-218x, 219x, 2106x, 2116x, 2153x и TS101. Все в одном, удобная микросхема.

image

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

Программирование и JTAG-отладка микроконтроллера Atmega16 на языке C в среде IAR, часть 2

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


Введение


Т.к. предыдущая статья вызвала интерес, то, как я и обещал, в этой статье будут рассмотрены примеры работы с семисегментными индикаторами, встроенным АЦП, а также произведена сборка программного проекта цифрового термометра на ATmega16 из нескольких рассмотренных в данной и предыдущей статье примеров работы с внутренними периферийными блоками микроконтроллера ATmega16.
Читать дальше →

10 главных правил убивания жуков

Время на прочтение5 мин
Количество просмотров42K
Понимаю, что заголовок выглядит как машинный перевод, но лучшего эквивалента " Top 10 Bug-Killing Coding Standard Rules " придумать не смог.

10 главных правил по избеганию багов — подсказали в комментах

Данный пост представляет собой вольный пересказ ключевых понятий книги Michael Barr «Embedded C Coding Standard», изложенных в его выступлении на вебинаре в июне этого года (не знаю как поставить тэг «перевод»).
Часть правил применима только к C++ и расширениям C, а часть и к стандарту языка.
Читать дальше →

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