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

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

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

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

Ответственный подход к измерению относительной влажности

Время на прочтение12 мин
Количество просмотров17K
Этой статьей мы продолжаем рассказывать о датчиках от швейцарской компании IST. Не так давно были опубликованы посты о датчиках электрической проводимости воды и датчиках скорости потока жидкостей и газов, сегодня очередь дошла до относительной влажности.



Статья посвящена высокоточным датчикам серии HYT. Приводится описание устройства датчика и чувствительного элемента, подробно разбирается порядок сопряжения датчика с микроконтроллером, приводится пример разработки.

Протокол управления CD-чейнджером

Время на прочтение7 мин
Количество просмотров21K
Продолжаем начатое. В этот раз я расскажу о том, что содержится в полезной нагрузке кадра I/K-bus, кратенько об устройстве информационно-развлекательной системы BMW e38, e39, e46, e53, и рассмотрим подробнее работу протокола на примере чейнджера компакт-дисков.
Читать дальше →

Драйверы умного или виртуального железа

Время на прочтение5 мин
Количество просмотров11K
Первая статья про драйверы была уж совсем вводной, и мне подумалось, что её нельзя не дополнить рассказом про то, как устроены драйверы более современных устройств.

Для начала введём определение bus master: устройство, способное быть не только ведомым, но и ведущим на шине компьютера. То есть — не только отвечать на транзакции ввода-вывода, инициированные процессором, но и самостоятельно их инициировать — по собственной инициативе «ходить» в память.

История таких устройств уходит корнями в понятие DMA: ещё во времена прародителя микропроцессоров, микропроцессора 8080 (КР5080ИК80), появилось понимание, что процессор хорошо бы разгрузить от рутинной операции перетаскивания байтиков между устройствами в-в и памятью.
Читать дальше →

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

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

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


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

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


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

Как начать работать с MIPSfpga

Время на прочтение3 мин
Количество просмотров26K
MIPSfpga — это пакет, который содержит процессорное ядро в исходниках на Verilog, которое можно менять, добавлять новые инструкции, строить многопроцессорные системы, менять одновременно софтвер и хардвер, симулировать на симуляторе верилога, синтезировать для ПЛИС/FPGA и т.д. Его можно в целях эксперимента например запускать с частотой 1 такт в секунду и выводить наружу информацию о состоянии кэша, конвейера, и любых структур внутри процессора. При этом ядро MIPS microAptiv UP внутри MIPSfpga — это то же ядро которое например используется в платформе IoT Samsung Artik 1 и Microchip PIC32MZ, т.е. студенты получают возможность работать с тем же кодом, с которым работают инженеры в Samsung и Microchip.

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



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

Технология программирования ARM Cortex-M0+

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

Здесь я расскажу об удобном наборе средств и о технологии быстрой разработки простых программ на микроконтроллере S9KEAZN64AMLC с 32-х битным 40 МГц ядром ARM Cortex-M0+. Как аппаратную основу возьмем плату от анонсированного ранее проекта. Плата оказалась на удивление живучей при низких температурах и даже превзошла в этом смысле ожидания.
Начнем с подробного описания создания термометра без использования внешних датчиков и с функцией логера.

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

Открытый проект универсального микроконтроллерного модуля

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


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

STM32, C++ и FreeRTOS. Разработка с нуля. Часть 3 (LCD и Экраны)

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

Введение


В двух предыдущих частях STM32, C++ и FreeRTOS. Разработка с нуля. Часть 1 и STM32, C++ и FreeRTOS. Разработка с нуля. Часть 2 мною уже были реализованы требования SR0, SR7, SR4 и SR6. Опять нужно вспомнить, какие вообще требования есть.
SR0: Устройство должно измерять три параметра (иметь три переменных): Температуру микропроцессора, Напряжение VDDA, Напряжение с переменного резистора
SR1: Устройство должно выводить значение этих переменных на индикатор.
SR2: Единицы измерения для Температуры микропроцессора — градусы Цельсия, для остальных параметров — вольты.
SR3: При нажатии на кнопку 1, на индикаторе должен показываться экран со следующей измеряемой переменной,
SR4: При нажатии на кнопку 1 Светодиод 1 должен изменять свое состояние
SR5: При нажатии на кнопку 2, на индикаторе должен поменяться режим отображения переменных с постоянного показывания переменной на последовательное (менять экраны раз в 1.5 секунды) при следующем нажатии с последовательного на постоянное,
SR6: При нажатии на кнопку 2 светодиод 2 должен менять свое состояние.
SR7: Светодиод 3 должен моргать раз в 1 секунду.

Значит остались самые «вкусные» требования связанные c отображением всей измеренной информации на индикаторе: SR1, SR2, SR3, SR5. Ну что же начнем.
Читать дальше →

«Программирование мышкой» для микроконтроллеров

Время на прочтение5 мин
Количество просмотров39K
Многие микроконтроллерные платформы поддерживают инструменты для создания начальной конфиграции периферийных устройств и портов ввода/вывода. Обычно это графическая среда, в которой задаются параметры работы кристалла и может быть сгенерирован исходный код — заготовка будущего проекта.

При использовании такого конфигуратора вы существенно упрощаете начальный этап программирования, но делаете это не в ущерб пониманию процессов, происходящих на кристалле.
Ниже приведен пример использования конфигуратора для микроконтроллера C8051F930 от Silicon Labs. Будем управлять яркостью светодиода с потенциомера, написав руками всего две строчки кода. Just for fun, конечно.

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

Символьный LCD дисплей (Видео урок 1)

Время на прочтение1 мин
Количество просмотров54K
image
Всем привет. Решил сделать видео урок по символьному lсd-индикатору в поддержку начинающим программистам микроконтроллеров. Как говорится, лучше один раз увидеть, чем сто раз услышать.

Начинающие в основном используют готовые библиотеки для работы с lcd-индикатором и, конечно же, понятия не имеют, как организован протокол обмена между микроконтроллером и индикатором. А ведь, зная это, можно самому создать программу не хуже, а то и лучше.
Читать дальше →

STM32+Visual Studio

Время на прочтение2 мин
Количество просмотров58K
Не так давно я вновь занялся поиском IDE для STM. Keil, IAR — это, конечно, прекрасно, но да простят меня любители данных сред, они ужасны. CooCox — единственная вещь, которая напоминает о том, что мы живем в 21 веке. Но CooCoх даже рядом не стоял с моей любимой средой разработки — Visual Studio. И мне удалось найти проект, который позволит мне работать с STM в VS.

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

STM32 + EmBlocks — мигаем светодиодами

Время на прочтение3 мин
Количество просмотров67K
Как и просили в комментариях к предыдущей статье о EmBlocks, сегодня я покажу от начала и до конца как создать в EmBlocks простой проект для мигания парой светодиодов.
В качестве отладочной платы мы будем использовать кроху на STM32F103C8.
Вот наш стенд:

Подключаем аноды светодиодов к пинам PB5 и PB6, катоды через резсторы в 390 Ом к земле.
Заставим их перемигиваться

Лекция №02: MSP430. Города и регистры

Время на прочтение11 мин
Количество просмотров30K
Примечание переводчика: Не так давно, мне пришел заказанный мною LaunchPad. Единственное что мне тогда хотелось, это сразу же начать мигать светодиодиками. Так я столкнулся с первой проблемой — у меня Linux. Почитав про основные IDE для разработки под эту платформу, я понял, что ничего хорошего мне тут не светит. А использовать Energia, просто напросто не позволяла религия. Имею привычку(не знаю, хорошую или нет) не работать с подобными инструментами «повышенной абстракции» пока не изучу подноготную того с чем работаю. Поэтому, Energia быстро отсеялась из возможных вариантов. Осталось только одно — собрать тулчейн gcc-msp430, включающий в себя все необходимое. Ноутбук у меня очень слабый, поэтому собирался этот тулчейн аж полдня. Что никак не радовало меня, так как я уже хотел МИГАТЬ. Когда собрал, столкнулся со следующей сложностью. Очень мало русскоязычной литературы и справки по этому микроконтроллеру. Что-то поспрашивал среди хабровчан, что-то кое-как смог вытащить из примеров кода от TI, но проблема оставалась — я слабо понимал все то что делаю. Продолжалось это ровно до тех пор, пока я не набрел на один замечательный англоязычный блог в котором хоть и на английском языке, но довольно доступно объяснялись все основы. Его я и принялся читать и переводить. Признаюсь честно, перевод я этот писал не столько для хабры, сколько для себя, чтобы на все 100% понять изложенный материал. Сказать что понял все на 100% — немного соврать. Скажу честно — от электроники я далёк, на момент получения лаунчпада я обладал нулевыми знаниями в этой сфере. Поэтому некоторые моменты перевода, могут, наверное, заставить плакать кровавыми слезами более серьезных разработчиков. К примеру — Vcc и Vss или PxREN. Идею я понимаю, но я сомневаюсь что перевел технически грамотно. Тем не менее, переводить я старался так, чтобы было понятно такому же нулю как я. В общем, если что — не обессудьте. Как мог. Кроме того, в переводах есть абзацы которые написаны чисто от себя, чтобы немного более подробно разжевать материал.
Ах да, начал переводить с лекции 02, так как в первой «Вводной» лекции содержится слишком много воды, которой и так море и на просторах хабры, да и вообще интернета. Мы же хотим сразу же работать, а не читать о том, как хорошо поступили TI выпустив дешевые LaunchPad'ы.
Читать дальше →

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

STM32: Clock Security System

Время на прочтение4 мин
Количество просмотров21K
image
Доброго времени суток!
В данной статье речь пойдет о системе самодиагностики микроконтроллера STM32, в частности — STM32F100RB, который входит в отладочный комплект STM32-Discovery. Но так как микроконтроллеры STM32 во многом схожи, и отличаются в основном своей периферией — написанное будет верно и для других контроллеров (возможно с небольшими изменениями). Статья расчитана на людей, уже немного знакомых с STM32, но постараюсь рассказывать по возможности подробнее.
Читать дальше →

Atmel Studio 6 поддерживает как AVR, так и ARM

Время на прочтение1 мин
Количество просмотров43K
На официальном сайте Atmel появилась бета-версия Atmel Studio 6 (ранее носившая название «AVR Studio»). Теперь студия включает поддержку Atmel ARM и Atmel AVR, а также около 1000 проектов, которые помогут вам при разработке. Распространяется она, как и прошлые версии, бесплатно на сайте компании и всевозможных трекерах.



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

MKA — DIY-куб на ESP32-C3: одна кнопка, OLED-дисплей, динозаврик и немного глюков

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров3.4K

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

Итак, начнем....

Почему вообще делать самодельный кубик, который ещё и глючит, но при этом умеет запускать игры вроде пресловутого «динозаврика» из Chrome? Вопрос резонный. Но, как говорится, «почему бы и нет?». Представляю проект MKA – небольшой куб с OLED-экраном, одной сенсорной кнопкой, пищалкой и кастомной прошивкой. Он получился чем-то средним между тамагочи, ретро-миниконсолью и электронным pet rock (если помните такую шутку). В этой статье – немного дневника разработки и технических деталей о том, как и зачем я его собрал.

Читать далее

Программист embedded лезет в FPGA (часть 2, передышка на семисегментниках)

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров3.4K

В предыдущей статье мы поморгали диодом. Большое дело, вообще‑то. После удобных сред разработки, вроде VSCode, CubeIDE, или продуктов JetBrains (поклонники Vim вышли из чата), Квартус не кажется очень уж дружелюбным. Плюс смена подхода к разработке: от программы к схеме. Но ничего, вроде, справились. Получается, мы погрузились в тему, наверное, на уровне «намочить ноги». Теперь, неспеша, зайдём по щиколотку.

Читать далее

Оптимальный выбор файловой системы и создание драйвера для OSPI Flash с GitHub Copilot

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

Файловая система во встраиваемых решениях — критическое звено. От её выбора зависят надёжность, детерминированность и задержки всей системы.

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

На практике всплывают одни и те же проблемы: дефрагментация, высокое потребление RAM, плохая детерминированность (плавающие задержки), неустойчивость к сбоям записи/питания и низкая скорость. Нередко корнем оказываются драйверы из SDK производителей чипов: они не оптимизированы для многозадачной среды и часто недоработаны под OSPI.

Я протестировал четыре файловые системы на платформе MC80 с внешней OSPI NOR Flash и разработал специализированный драйвер вместо стандартного из FSP — с полноценной поддержкой OSPI и RTOS.

Читать далее

Рулим светодиодом по UDP и ESP8266

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

Привет, Хабр!

Сегодня я поделюсь опытом работы с протоколом UDP вместе с микроконтроллером ESP8266, где я управлял светодиодом, а также получал температуру с датчика DHT11. Всё управление будет происходить из Android-приложения, написание логики которого также будет рассмотрено.

Читать далее

Цитаты про программирование и разработку в общем

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров4.1K

В работе на планерках и от коллег порой такое услышишь, что это становится либо цитатой или мемом. Вот небольшая подборка того, что мне понравилось за 12 лет работы программистом МК. Некоторые цитаты имеют автора другие, просто безымянные афоризмы сродни народному творчеству. Итак обо всём по порядку...

Читать далее

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