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

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

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

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

Оценка токопотребления батарейных радиоканальных устройств

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

Пути разработчика и маркетолога постоянно пересекаются, но эти люди редко бывают друзьями. Задача первого что-нибудь сотворить, найти лучший способ решения технического задания в ходе раздумий, расчётов и анализов; задача второго – сие творение продать. Не успеешь и глазом моргнуть, как маркетологи припишут лишний нолик к точности измерений, добавят децибел к выходной громкости или увеличат время автономной работы микропотребляющего устройства на несколько лет.

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

Читать далее

Конечный Aвтомат Аппаратного I2C-Трансивера

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

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

Меня удивляет, что в оригинальном коде от вендоров микроконтроллеров программисты прошли мимо конечных автоматов при написании I2C кода внутри своих официальных uHAL. Непорядок...

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

Читать далее

Цифровая настройка хода в часах на STM32 простым языком

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

В этой статье будет формула для расчёта значений регистров подстройки скорости хода часов в STM32 (функция RTC smooth calibration) на основе величины отклонения времени за сутки. Информации по этой теме много, но именно для компенсации нужного количества секунд в день я не нашёл понятных формул, поэтому изучил этот вопрос, поэкспериментировал с реальным микроконтроллером и написал статью.

Читать далее

Ретроспектива: создание одних из первых автоматизированных рабочих мест

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

Продолжаю рассказ о предшественниках ПЛК, и сегодня расскажу об одних из первых в стране АРМов – автоматизированных рабочих мест и периферии для поверки датчиков.

Читать далее

Старое, доброе, немного ламповое ИК управление

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

Давно вынашивал в планах написать статью на тему ИК управления. После прочтения https://habr.com/ru/companies/flipperdevices/articles/566148/ собрал необходимый материал. В этой статье я задавал вопросы разработчикам Flipper об используемых ими методах копирования и воспроизведения ИК посылок их устройством. На некоторые вопросы я так и не получил ответа, а другие по информативности были близки к описанию в стиле Ардуино.

О чем эта статья? Прежде всего о двух методах копирования и воспроизведения ИК команд управления. Поэтому я не буду останавливаться на описании протоколов передачи различных пультов ИК управления, так как они достаточно хорошо описаны. В одном из разработанных устройств управления по инфракрасному каналу (далее просто ИК), решили использовать один нечасто используемый метод считывания и генерации ИК команд управления различным оборудованием. Нельзя сказать, что это что-то совсем необычное. Такой подход используется к примеру в оборудовании Global Cash для управления по ИК.

В данной статье хочу более подробно остановиться на принципе копирования команд ИК пультов для последующего управления в различных системах типа «умный дом». В сложившейся ситуации применение этого устройства выглядит отличной заменой оборудования Global Cash по причине максимальной совместимости и возможности использования их обширной кодовой базы ИК пультов.

В начале немного общей информации, которая и так хорошо знакома.

Инфракрасное дистанционное управление (ИК ДУ) применяется практически во всей бытовой электронной аппаратуре. Хотя в последнее время появляются системы, основанные на радиосвязи, которые возможно, в будущем станут преобладать над ИК-системами, но в настоящее время ИК управление оказалось самым надежным, и что самое важное – самым дешевым видом беспроводной односторонней связи на короткие расстояния в пределах одного помещения. Ведь прежде всего оно начало использоваться в бытовых телевизорах. Наиболее массово ИК используется и поныне. Это большой зоопарк – каждая фирма разрабатывала свои собственные протоколы и работала на разных частотах модуляции. В результате мы имеем около 2-х десятков(!) совершенно несовместимых между собою систем, из которых наиболее массово, к счастью, используются 6-7.

Читать далее

Программирование контроллера звуком с телефона — заметки на полпути

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

С настольного компьютера или ноутбука мы прошиваем микроконтроллеры обычно через USB, да часто и с каким-нибудь программатором. А что если мы хотим прошить или сконфигурировать поделку с телефона? Некоторые телефоны имеют USB-OTG. Некоторые контроллеры умеют BlueTooth. Существуют системы поддерживающие WiFi. К сожалению всё это не носит массового характера - нужен подходящий телефон, подходящий контроллер и т.п.

Стало интересно - можно ли "пропищать" данные через динамик телефона - и уловить их микрофоном присоединённым к микроконтроллеру? В этой статье я кратенько расскажу о своих жалких попытках в этом направлении. Пока "с полпути" - потому что, предположительно, демонстрация самого принципа для Ардуино может оказаться полезнее для большинства коллег, чем конечный, узконаправленный результат - загрузчик для конкретного проца.

Был "предшествующий этап" - передача через аудиоразъём телефона, по проводу - об этом тоже вкратце расскажу и покажу (можете попробовать).

Бип-бип-бззззззз

Все мои Ардуинки: часть первая, восьмибитные на ATmega

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

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

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

Название является отсылкой к мыльной опере «Все мои детальки» из Футурамы. Ведь разных видов Arduino настолько много, что намечается целый сериал. Впрочем, не буду пытаться объять необъятное и перечислять всю сотню. Вместо этого сосредоточусь на тех, которыми обладаю или хотя бы подержал в руках. Приступаем!
Читать дальше →

Опыты с акселерометром и гироскопом на платформе S7V30

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

Модуль S7 V30 изначально разработан для управления промышленными контроллерами, но может быть использован и автономно. В этой статье я попробую раскрыть его потенциал как сенсора для обнаружения и анализа вибраций, углов отклонения, аномальных состояний и специфических активностей. Для этого мне помогут MATLAB и ChatGPT.

Читать далее

Как я создал устройство, которое может удаленно эмулировать мышку и клавиатуру на stm32

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

Всем привет, совсем недавно я начал изучать протокол USB на STM32F103C8, а именно HID-устройства. Я такой человек, который не сильно любит теорию, но обожает учиться всему на практике, поэтому я тут же начал думать над будущим проектом. И я вспомнил, что совсем недавно заказал себе wifi модуль - ESP8266.

Читать далее

Переезд программирования микроконтроллеров ATMEL на MAC OS с чипами ARM

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

Поскольку нативная ATMEL (MICROCHIP) студия 7.0 (и все предыдущие) не работает под маками, то приходится пользовать виртуальную машину с виндой собранной под ARM. Причем эта виртуальная машина своим эмулятором запускает приложение от Intel. И конечно никаких сходу драйверы не работают.

Что делать чтобы заработало.

Читать далее

Ассемблеры, 5 штук — быстрое знакомство для тех кто не знаком

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

Статья для тех кто не знаком с ассемблерами - но хочет взглянуть "одним глазком". Мы не сделаем вас гуру разработки на ассемблере за 15 минут - но покажем ассемблеры для нескольких популярных архитектур микроконтроллеров (ARM32, AVR, MSP430, 8051) - и для настольных наших компьютеров (x86 под Linux и DOS) - чтобы увидеть их различия и сходства - и не бояться погрузиться глубже, если что-то из этого может быть вам полезно.

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

Бонусом - для любопытных - ассемблер для Intel-4004 - 4-разрядного процессора которому уже больше 50 лет. К нему будет также небольшой "интерактивчик".

Кто не боится - давайте посмотрим ближе!

Цифровые часы для дома на светодиодной ленте

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

Про конструкцию больших часов на светодиодной ленте я уже писал в одной из своих прошлых статей. Эти часы, размером 320 на 100 см, адаптированы к установке на открытом воздухе на улице. Тогда же, 7 лет назад, сразу же после изготовления этих часов я приступил к реализации другой похожей конструкции, размером меньше, для комнаты. Данная статья, можно сказать, является дополнением той вышеупомянутой статьи. Все основные подробности изложены именно там. А здесь я расскажу про особенности, касающиеся второй менее габаритной конструкции.

Читать далее

Нейронные сети (инференс MNIST) на «3-центовом» микроконтроллере

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

Вдохновившись на удивление высокой производительностью нейронных сетей и обучением с учётом квантования на микроконтроллере CH32V003, я захотел выяснить, как далеко эту идею можно развить. Насколько можно сжать нейронную сеть с сохранением высокой точности тестов на датасете MNIST? Когда речь идёт о крайне дешёвых микроконтроллерах, сложно предположить что-то более подходящее, чем 8-битные Padauk.

Эти устройства оптимизированы под простейшие и самые дешёвые приложения из доступных. Самая мелкая модель серии, PMS150C, оснащена однократно программируемой памятью в 1024 13-битных слова и 64 байтами RAM — на порядок меньше, чем в CH32V003. Кроме того, эта модель в противоположность намного более мощному набору инструкций RISC-V содержит коммерческий регистр-аккумулятор на основе 8-битной архитектуры.

Возможно ли реализовать механизм инференса MNIST, способный классифицировать рукописные числа, также и на PMS150C?
Читать дальше →

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

Обзор Акселерометра LIS3DH

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

В этом тексте я написал о своем опыте работы с акселерометром LIS3DH. Это трёх-осевой цифровой 12-битный MEMS акселерометр с перегрузкой 16g и управлением по I2C.

В этой заметке я изложил с какой стороны следует подходить к ASIC акселерометрам.

Читать далее

Переходим с STM32 на GD32

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

Микроконтроллеры STM32 и GigaDevice GD32 часто сравнивают из-за схожей архитектуры и совместимости. GD32 является своеобразным «клоном» STM32, использующим такое же ядро ARM Cortex-M. Основное отличие между ними — это цена, так как GD32 обычно дешевле, что делает его привлекательным для проектов с ограниченным бюджетом. Однако несмотря на схожесть, существуют различия в характеристиках и уровне поддержки, которые могут повлиять на выбор между этими двумя семействами микроконтроллеров.
Читать дальше →

Митап FPGA-Systems: RnD-цикл современных SoC, физическая имплементация для FPGA и ASIC, обзор систем прототипирования

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

26 октября в 11:00 стартует первая осенняя встреча сообщества FPGA-Systems, организованная совместно с YADRO. Инженеры поделятся опытом и расскажут про разработку ASIC, физический дизайн, новый чип AG32 от AG micro и многое другое. Митап интересен не только программой, но и открытой демозоной с наработками инженеров — приходите лично, чтобы посмотреть на FPGA во плоти.

Регистрируйтесь, чтобы попасть на митап в Питере или получить ссылку на трансляцию в VK, YouTube или Rutube, где можно будет задать вопросы спикерам.

Изучить программу

Разыменовываем NULL на RISC-V ядре scr1

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

Во время работы в ASIC дизайн центре я потратил немало времени на отладку ошибок и падений ядра, просматривая временные диаграммы на шинах AXI от процессора к памяти. Иногда оказывалось, что адрес чтения из памяти оказывался 0x00000000 - классический случай разыменования нулевого указателя в C. На системах с ОС это приводит к известному всем C программистам segfault-у. И в bare metal системах разыменование NULL может приводить к интересным ситуациям. В этой статье рассмотрим, что происходит при разыменовании NULL, используя для пример open source RISC-V ядро scr1 и open source инструмент симуляции RTL Verilator.

Читать далее

Готовимся организовать совместный русско-украинско-мексиканский семинар по ПЛИС в Мексике, возможно привлечем и беларусов

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

Инструкции к открытым примерам basics-graphics-music (BGM) теперь доступны на 5 языках: английском, испанском, русском, украинском и белорусском. Эти примеры используются в России и Беларуси (Школа Синтеза Цифровых Схем), Калифорнии (Verilog Meetup), Армении, Азербайджане и других местах.

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

Читать далее

Синтез Цифрового БИХ Фильтра Низких Частот

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

Мне потребовалось синтезировать быстрый цифровой фильтр нижних частот. Причем этот фильтр должен работать в реальном времени на микроконтроллере. Тут я понял, что надо вспоминать с какой стороны следует подходить к цифровым IIR фильтрам.

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

Далее я покажу некоторые приёмы расчета IIR фильтра по известным коэффициентам.

Читать далее

GPIO STM32, альтернативный вариант

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

Когда в 2011 году я переходил c atmega8 на stm32, меня очень вдохновил проект opencm3. Но вдохновил не на его изучение, а на написание похожего. На сегодня в моём варианте почти библиотеки есть макросы регистров для микроконтроллеров серий stm32f10x и stm32f40x, stm8s003, nrf51, nrf52, rp2040, и cc2640/1310. Реально же протестирована из этого списка только stm32f103. Кроме регистров для 103-й я написал базовые функции для включения/выключения тактирования периферии и управления портами ввода‑вывода. А также написаны примеры для USB профилей HID gamepad, HID keyboard и USB serial port. В этом же посте задокументирую функции портов и тактирования.

документация к c-шникам

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