Как стать автором
Обновить
206.81

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

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

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

Все мои Ардуинки: часть вторая, ATtiny и STM

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

Продолжаю перебирать все мои Ардуинки и делиться опытом работы с ними.

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

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

STM32 — грамотно включаемся от кнопки

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

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

Читать далее

Стабилизируем положение потенциометра, считанное с АЦП

Уровень сложностиСредний
Время на прочтение14 мин
Количество просмотров8.6K
Считать показания потенциометра для удобного аналогового управления системой, что может быть проще? Сеть завалена примерами работы с АЦП. Считали значение, вот мы и знаем положение… Но не всё так просто – эти значения всё время будут разными. Близкими, но разными. То есть, программа будет считать, что положение головки регулятора всё время дрожит.



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

UART-терминал из LCD-дисплея, PS/2 клавиатуры и любого МК

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

Совсем коротенький рассказ — о довольно бесполезной но забавной штуковине, извините :)

Как-тораз я написал интерпретатор BASIC, который можно использовать на контроллере хоть с 1кб памяти (в частности AVR / Arduino). В основном мы им пользовались через Bluetooth‑модуль с телефона (я уж рассказывал). Но у меня руки чесались сделать своеобразный «терминальчик» — ну я и сделал.

Как видите — в качестве экрана тут дисплей 4 строки по 20 символов. А клавиатура полноценная — обычная c PS/2 разъёмом. Между ними и UART‑ом воткнут контроллер (младший STM32). Вообще‑то можно было без него, реализовать общение с клавиатурой и дисплеем в том же контроллере где интерпретатор крутится — но тогда это не был бы терминал, его нельзя было бы использовать с любым другим UART‑интерфейсом.

Покажу картинки, код — и немножко расскажу про устройство. А если сами строили что‑то похожее — расскажите и вы :)

Что ж, посмотрим!

Датчик линейного положения, работающий по принципу электронного штангенциркуля

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

Вы когда-нибудь мечтали о 500-герцовой системе датчиков линейного положения? Тогда вам повезло — для этого достаточно печатной платы, простого микроконтроллера и немного математики!

См. также полный исходный код и журнал моих исследований по этому проекту.
Читать дальше →

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читать далее

Простой АМ/ЧМ радиоприёмник с феноменальной чувствительностью

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


Эта скромная маленькая плата питается от двух пальчиковых батареек и невыгодно отличается от других распространённых разновидностей подобных радиоконструкторов тем, что выдаёт монофонический звук. Однако чувствительность у данного приёмника просто потрясающая.

Он успешно ловит сигналы далёкой средневолновой радиостанции на крошечную магнитную антенну, что мы услышим на видео. Причём это происходит в помещении с очень плохими условиями радиоприёма. Местные ультракоротковолновые станции также слышно хорошо, в той же комнате, на провод наушников в качестве антенны.

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

Quake на плате микроконтроллера с 276 килобайтами ОЗУ

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

Введение


В прошлом году в рамках празднования 30-летней годовщины Doom мы продемонстрировали его порт для платы Sparkfun Thing Plus Matter MGM240P. В этом году мы портируем Quake на плату Arduino Nano Matter.
Читать дальше →

Декодирование BPSK Модуляции из Звука (или передача данных по воздуху)

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

В этом тексте я реализовал возможность передачи бинарных данных звуком через BPSK модуляцию. Написал инструкцию как это можно делать.

Вся обработка происходит в post processing режиме на PC над записанным wav файлом.

Изучение ЦОС на примере работы со звуком - это доступная каждому возможность для экспериментов с различными алгоритмами DSP.

Читать далее

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

Как запустить свое электронное устройство в «серию» и не остаться без штанов

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

В общих чертах про разработку электроники, изготовление пластикового корпуса, поиск исполнителей и примерные цены на серийный выпуск.

Читать далее

Новые технологии и древние звуки

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

Привет всем, это статья про DIY разработку и изготовление оригинального музыкального инструмента.

Когда-то я увидел электронный конструктор «арфа» где на рамке стояло 7 лазерных диодов и простой генератор тона. И вот захотел сделать лучше и больше – начался проект Оптоарфа.

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

Читать далее

Игры на промышленных девайсах? Легко! Портируем эмуляторы и Wolfenstein 3D на ТСД за 500 рублей на практике

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

Дисклеймер: употребляемые слова ‭вроде «портируем‭», ‭«хакаем‭» и ‭«реверсим‭» совсем не значат, что статья предназначена исключительно для гиков! Я стараюсь писать так, чтобы было понятно и интересно абсолютно всем!

Наверняка многие мои читатели так или иначе слышали новости о том, что известные игры были портированы на самые разные платформы. В какой-то момент к такой же идее пришёл и я, однако мне хотелось портировать игры и эмуляторы на довольно диковинные промышленные девайсы, которые работают на платформе Windows CE. Как я портировал Wolfenstein и эмулятор NES на бравого, но списанного в утиль трудягу склада и зачем? Читайте в сегодняшней подробнейшей статье!

Читать далее

Звуковой Фазовый Дальномер (Микрофон = Датчик Расстояния)

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

Что если из микрофона можно сделать пассивный дальномер?

В этом тексте я проверил работу фазового детектора для звука.

Я собрал прототип фазового дальномера из двух обыкновенных мобильных телефонов.

Читать далее

Импортозамещение работает: две российские FPGA платы, полностью импортозамещающие 35 американских и китайских плат

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

Вчера известный разработчик FPGA дизайнов и печатных плат Николай Ковач, основатель marsohod.org из Таганрога, добавил поддержку платы Марсоход3GW2 в репозиторий примеров для Школы Синтеза Цифровых Схем, в которую сейчас идет регистрация. Плата покрывает нужды Школы для упражнений с цифровой логикой, синтезом простого микропроцессорного ядра, распознавания и генерации звука и красивой графикой на HDMI дисплее с 24-битным цветом.

Почему это важно и как это связано с Мишустиным, США, Китаем и другими глобальными обстоятельствами? Да от решения микроархитектурных задачек на таких платах непостредственно зависит уровень проектировщиков российcких чипов через несколько лет:

Читать далее

Создание аппаратно-независимых библиотек для микроконтроллеров

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

В данной статье я хотел бы вам расказать, как можно создавать свои аппаратно-независимые библиотеки для микроконтроллеров для работы с цифровыи микросхемами.

Суть создания аппаратно-независимой библиотеки состоит в том, чтобы отвязаться от того уровня абстракции (библиотеки и фреймворки), который предоставляет производитель микроконтроллеров, внутри реализуемой библиотеки. Например, для STM32 - HAL, ESP32 - ESP-IDF или Arduino, для AVR зачастую используют Arduino. Это позволит использовать одну и ту же библиотеку на различных микроконтроллерах (и не только) без изменения кода библиотеки под каждый камень.

Читать далее

Дэвид Харрис, автор «Цифровой схемотехники и архитектуры компьютера», ответил на вопросы про его следущую книгу и вообще

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

Встретился на ланч с Дэвидом Харрисом, автором (вместе с Сарой Харрис) популярного учебника «Цифровая Схемотехника и Архитектура Компьютера», который за последние 10 лет помог закрыть монументальную дыру в техническом образовании десятков вузов России и Украины. До этого учебника во многих вузах сразу после триггеров шло программирование микроконтроллеров, то есть раньше у многих студентов вообще не возникала база для проектирования современных чипов по маршруту RTL‑to‑GDSII, технологии, которая за последние 30 лет привела нас к смартфонам, быстрому интернету и ускорителям ИИ.

Учебник Дэвида активно используется на Школе Синтеза Цифровых Схем, которую поддерживают 24 российских и 1 белорусский университет. Регистрация на новый сезон Школы только что открылась.

Читать далее

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