Как стать автором
Поиск
Написать публикацию
Обновить
149.24

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

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

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

UART в ATtiny13 или Как вывести данные из МК за 52р

Время на прочтение3 мин
Количество просмотров76K
(цена за 10 шт магазина Чип и Дип на момент публикации)

Я никогда не мог удержаться от покупки разных электронных штук, и однажды у меня стало на 10 очень мелких МК больше. Я люблю ATtiny13 — дешево и сердито. Когда я их покупал, я твердо помнил, что у них «Даже АЦП есть, не то что таймер!» и сильно радовался их малой цене.
Однако, когда я столкнул ATtiny13 с реальной задачей, оказалось что одной очень важной штуки в нем нету, а именно, интерфейсов для передачи данных (разумеется, не считая GPIO). Ну а если GPIO есть, то написать все что угодно можно! Подумал я и пошел гуглить… И красивого готового решения под avr-gcc не нагуглил… О создании (надеюсь) такого решения, данная статья — добро пожаловать под кат.
Читать дальше →

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

Время на прочтение8 мин
Количество просмотров39K
Эксперты отрасли призывают разработчиков встроенных систем (ВР) покинуть зону комфорта и приобретать новые навыки, дабы не потерять актуальность в профессии.

Если мы посмотрим на ситуацию в 1980 году, парень (а в основном контроллерами занимаются все-таки парни), который разрабатывал схему обработки смешанных сигналов, парень, который подключал МК, парень, который писал код на ассемблере и парень, который выносил прототип наружу (наверное, имеется в виду отладка -примечание переводчика), был одним и тем же человеком (я сам из таких, хотя, конечно, это началось в СССР намного позже 1980 года -пп). Все это делал в значительной степени один инженер.

По мере того, как встроенные системы становились больше и сложнее, и миллионы строк кода начали поставляться с устройством (Джек Гансли в своей статье вспоминает время, когда с IBM PC поставлялся полный исходный код BIOS — пп), наступило время деления на разработку железа, разработку прошивки и разработку ПО в рамках одного устройства.

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

Поскольку мы не желаем отстать от прогресса в области ВР, то как определить, какие навыки, которые мы можем приобрести или развить, являются наиболее актуальными сегодня?

Журнал EE Times обратился к 9 профессионалам в ВР (видимо, у них произошел сбой в адресной книге, ничем другим то, что они не обратились ко мне, я объяснить не могу — пп) и рекрутерам и попросил их рассказать, что они думают по поводу наиболее важных вещей, необходимых современному инженеру в области ВР.
Еще раз напоминаю, тут НЕТ серебряной пули

Minesweeper на FPGA

Время на прочтение9 мин
Количество просмотров17K
Привет всем!

Прочитав статью «Делаем тетрис под FPGA», я вспомнил, что у меня завалялся похожий проект, который я когда-то использовал для своеобразного предложения «руки и сердца» своей девушке.

А почему бы не сделать нечто подобное самому?

Откопав исходники, возобновил утерянные знания и решил на базе старого проекта на скорую руку написать простую версию игры «Сапёр» на старенькой ПЛИС Spartan3E. Собственно, о реализации игры «Сапёр» на уровне логических вентилей и основных особенностях разработки на FPGA фирмы Xilinx и пойдет речь в данной статье.
Присоединяйтесь...

Эмуляция носителя FAT32 на stm32f4

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


Недавно возникла данная задача — эмуляция носителя FAT32 на stm32f4.

Её необычность заключается в том, что среди обвязки микроконтроллера вовсе может не быть накопителя.

В моём случае накопитель был, но правила работы с ним не позволяли разместить файловую систему. В ТЗ, тем не менее, присутствовало требование организовать Mass Storage интерфейс для доступа к данным.

Результатом работы явился модуль, который я озаглавил «emfat», состоящий из одноимённого .h и .c файла.

Модуль независим от платформы. В прилагаемом примере он работает на плате stm32f4discovery.

Функция модуля — отдавать куски файловой системы, которые запросит usb-host, подставляя пользовательские данные, если тот пытается считать некоторый файл.
Читать дальше →

Command line interpreter на микроконтроллере своими руками

Время на прочтение4 мин
Количество просмотров32K
В каждом разрабатываемом устройстве у меня присутствовал отладочный вывод в UART, как в самый распространённый и простой интерфейс.
И каждый раз, рано или поздно, мне хотелось помимо пассивного вывода сделать ввод команд через тот же UART. Обычно это происходило когда мне хотелось для отладки выводить какой-нибудь очень большой объём информации по запросу (например состояние NANDFLASH, при разработке собственной файловой системы). А иногда хотелось программно управлять ножками GPIO, чтобы отрепетировать работу с какой-нибудь переферией на плате.
Так или иначе мне был необходим CLI, который позволяет обрабатывать разные команды. Если кто-то натыкался на уже готовый инструмент для этих целей — буду благодарен за ссылку в комментариях. А пока я написал собствыенный.
Читать дальше →

Захват аналогового видеосигнала при помощи 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, внешне он мне нравится, и свободного места в нем достаточно для установки необходимого железа внутрь. Но помимо всего, я задумал оставить родной индикатор и задействовать его для отображения различной информации. О том, как я подключал дисплей к микроконтроллеру и расшифровывал протокол обмена этого дисплея, пойдет в этой статье.
Читать дальше →

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