Pull to refresh

Переходим с STM32F103 на К1986ВЕ92QI. Или первое знакомство с российским микроконтроллером

Reading time 8 min
Views 163K
Debugging *
Tutorial
Sandbox

Введение


В преддверии нового года я, как и многие россияне, активно следил за состоянием зарубежной валюты. Но не просто из-за собственного интереса, а из-за того, что на тот момент заканчивал свое устройство, которое требовалось показать на школьной и районной конференции. Так как в названии работы было такое слово как «бюджетное», то приходилось в презентации указывать стоимость каждого компонента, вплоть до резисторов и перемычек. Изначально, когда доллар стоил порядка 30 рублей, устройство и вправду было бюджетным. Как при домашней сборке, так и при конвейерной. Но когда цена доллара перевалила за 100 рублей, я решил, нужно искать альтернативу зарубежным компонентам.

К этому моменту уже как несколько месяцев изучал работу микроконтроллеров STM32F100 и STM32F103, применяя их на практике в презентационном устройстве. От таких гигантов, как STM32F429, мне пришлось отказаться. Так как стоимость в 1800 рублей за корпус является заоблачной для «бюджетного» устройства, функционал которого только начал превосходить возможности AVR Atmega32.
Читать дальше →
Total votes 81: ↑72 and ↓9 +63
Comments 56

Переходим с STM32 на российский микроконтроллер К1986ВЕ92QI. Настройка проекта в keil и мигание светодиодом

Reading time 6 min
Views 65K
Debugging *C *
Tutorial

Вступление


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


Читать дальше →
Total votes 37: ↑29 and ↓8 +21
Comments 34

Переходим с STM32 на российский микроконтроллер К1986ВЕ92QI. Системный таймер (SysTick)

Reading time 3 min
Views 32K
Debugging *C *
Tutorial
Вступление

В предыдущей статье мы помигали светодиодом, но сделали это не совсем правильно. Дело в том, что в качестве задержки мы использовали пустой цикл, который под каждый временной интервал приходится подбирать. Такой способ так же не подходит, когда нам нужны точные временные интервалы. Для решения данной проблемы в нашем микроконтроллере имеются сразу три полноценных таймера и один системный. Для начала поставим небольшую подзадачу. Нам нужно получить мигание светодиодом с интервалом в одну секунду. Задача очень простая и для этого нам вполне хватит системного таймера. Из-за своей легкости он идеально подходит для такого рода задач. Рассмотрим его по подробнее.
Читать дальше →
Total votes 20: ↑17 and ↓3 +14
Comments 17

Переходим с STM32 на российский микроконтроллер К1986ВЕ92QI. Настройка тактовой частоты

Reading time 8 min
Views 37K
Debugging *C *
Tutorial

Общее представление о системе тактирования


В прошлой статье мы научились создавать стабильные задержки с помощью простого таймера SysTick, а так же немного окунулись в механизм работы прерываний. Тогда мы принимали как постулат то, что тактируя таймер от источника HCLK – мы получаем 8 Мгц. Теперь настало время разобраться, откуда эти цифры.
Читать дальше →
Total votes 23: ↑15 and ↓8 +7
Comments 7

Переходим с STM32 на российский микроконтроллер К1986ВЕ92QI. Генерируем и воспроизводим звук. Часть первая

Reading time 15 min
Views 25K
Debugging *C *
Tutorial

Вступление


В предыдущей статье мы поговорили о настройке тактовой частоты микроконтроллера. Сейчас мне хотелось бы рассмотреть варианты работы со звуком: его генерирование и воспроизведение. По началу мне хотелось написать одну большую статью, в которой было бы рассмотрено все. От генерации прямоугольных импульсов до воспроизведения FLAC с microSD карты. Но статья получилось просто гигантской. Так что я решил разбить ее на несколько статьей поменьше. В каждой из которых я разбираю по одному периферийному модулю.
Читать дальше →
Total votes 17: ↑15 and ↓2 +13
Comments 13

Переходим с STM32 на российский микроконтроллер К1986ВЕ92QI. Генерируем и воспроизводим звук. Часть вторая: освоение DMA

Reading time 9 min
Views 20K
Debugging *C *
Tutorial
В прошлой статье нам удалось получить звук, но это очень дорого нам далось. Во первых, мы разогнали контроллер до максимальной скорости. А во вторых, кроме генерирования звука контроллер ничего не может, так как большая часть процессорного времени занята постоянным обновлением значения ЦАП-а. Не хорошо это. Именно сейчас остро стоит вопрос об использовании ДМА.
DMA, или Direct Memory Access – технология прямого доступа к памяти, минуя центральный процессор.
— (с) отсюда.
Читать дальше →
Total votes 20: ↑16 and ↓4 +12
Comments 8

Переходим с STM32 на российский микроконтроллер К1986ВЕ92QI. Генерируем и воспроизводим звук. Часть третья: TIM + DMA

Reading time 14 min
Views 19K
Debugging *C *
Tutorial

Вступление

В предыдущей статье я рассказал о своем первом знакомстве с DMA. В ней мы делали связку DMA + SysTick. Статья получилась очень специфичной и сложной, ввиду неопытного кривого подхода. Набравшись опыта, в данной статье я расскажу о куда более простом и понятном способе работы с DMA.
Читать дальше →
Total votes 31: ↑23 and ↓8 +15
Comments 7

Переходим с STM32 на российский микроконтроллер К1986ВЕ92QI. Генерируем и воспроизводим звук. Часть четвертая: финал

Reading time 115 min
Views 17K
Debugging *C *
Tutorial

Введение.


В данной статье мы закончим тему генерации звука средствами нашего микроконтроллера. Создадим одноголосную и многоголосую основу для музыкальной открытки.
Читать дальше →
Total votes 32: ↑21 and ↓11 +10
Comments 6

Переходим с STM32 на российский микроконтроллер К1986ВЕ92QI. Опрашиваем клавиши, генерируем ШИМ. Часть первая

Reading time 15 min
Views 29K
Debugging *C *
Tutorial

Вступление


Отступление

С последней написанной мною статьи прошло уже довольно много времени, за что прошу прощения: ЕГЭ, поступление, начало учебы. Теперь же, когда до сессии еще далеко, а учебный процесс уже отнимает не так много времени, я могу продолжить писать статьи об освоении нашего К1986ВЕ92QI.

План работы

В комментариях к предыдущим статьям меня просили осветить не только работу с микроконтроллером через настройку регистров, но и с использованием SPL (Универсальной библиотеки для авто настройки периферии.). Когда мы только начинали, я не стал этого делать, ибо соблазн использовать SPL вместо ручной настройки по средствам CMSIS был бы велик, и вы бы, очень вероятно, вопреки здравому смыслу, начали бы использовать SPL везде, где только можно было бы. Сейчас же, научившись работе с некоторыми блоками периферии вручную, мы можем коснуться SPL и сравнить КПД обоих подходов в реальной задачи.

Цель

В качестве учебной цели, давайте помигаем светодиодом по средствам ШИМ-а (Широтно-импульсной модуляции.), при этом регулируя кнопками его частоту. Кнопки так же будем опрашивать в прерывании, вызванного другим таймером, а в момент опроса — будем инвертировать состояние второго светодиода. В реализации данной задачи нам понадобится:

1. Настроить вывод порта ввода-вывода, подключенного к светодиоду, для ручного управления. Этим светодиодом будем показывать, что мы зашли в прерывание и опросили кнопки.
2. Настроить вывод порта ввода-вывода, подключенного ко второму светодиоду, в режим управления от таймера. Именно сюда будет подаваться ШИМ сигнал от первого таймера.
3. Настроить первый таймер в режим подачи ШИМ сигнала на второй светодиод.
4. Настроить таймер для вызова прерывания, в котором мы будем опрашивать клавиши.
5. Разрешить использование прерываний на уровне таймера (по конкретному событию) и на уровне общей таблице векторов прерываний от второго таймера в целом.


Читать дальше →
Total votes 19: ↑18 and ↓1 +17
Comments 6

Переходим с STM32 на российский микроконтроллер К1986ВЕ92QI. Опрашиваем клавиши, генерируем ШИМ. Часть вторая

Reading time 30 min
Views 21K
Debugging *C *
Tutorial

Вступление.

В предыдущей статье мы с вами повторили общую структуру таймера и детально рассмотрели ручной способ настройки ШИМ канала с использованием CMSIS. Но многим не нравится «копаться в регистрах» и они предпочитают принципиально другой уровень абстракции, позволяющий, как им кажется, упростить задачу. В этой статье я попытаюсь показать вам все плюсы и минусы данного подхода.
Читать дальше →
Total votes 15: ↑13 and ↓2 +11
Comments 16

Переходим с STM32 на российский микроконтроллер К1986ВЕ92QI. Практическое применение: управляем яркостью светодиода

Reading time 5 min
Views 20K
Debugging *C *
Tutorial

Вступление


В двух предыдущих статьях мы генерировали при помощи ШИМ тактовый сигнал нужной нам частоты, получая на светодиоде равный промежутки свечения и его отсутствия. Данная задача имеет место быть на практике (в одной из последующих статей мы с ней точно столкнемся). Но чаще всего ШИМ используют по другому назначению. Одно из самых распространенных — управление яркостью светодиодов или скоростью вращения моторов. Так же при помощи ШИМ можно генерировать звук (о чем будет следующая статья). А в данной статье мне хотелось бы рассказать, как на нашем контроллере можно реализовать управление яркостью светодиода.


Читать дальше →
Total votes 18: ↑15 and ↓3 +12
Comments 0

Modbus на российском микроконтроллере К1986ВЕ92QI

Reading time 7 min
Views 41K
Programming microcontrollers *DIY Electronics for beginners
Sandbox

Попал мне в руки российский микроконтроллер К1986ВЕ92QI производства АО "ПКК Миландр" с 32-битным RISC ядром ARM Cortex-M3 128кБ Flash и 32кБ ОЗУ, сразу же захотелось изучить и опробовать его в действии.


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


Читать дальше →
Total votes 61: ↑60 and ↓1 +59
Comments 72

Измерение положения ротора СКВТ с помощью микроконтроллера K1986BE92QI

Reading time 21 min
Views 11K
Programming microcontrollers *Manufacture and development of electronics *
Sandbox

Здравствуйте, уважаемые читатели! Сегодня я расскажу вам об интересном эксперименте - измерении угла положения синус-косинусного вращающегося трансформатора с помощью микроконтроллера K1986BE92QI фирмы Миландр без применения каких-либо специализированных микросхем-контроллеров СКВТ!

Недавно мне на глаза попалось техническое описание советского комплектного электропривода "Размер-2М". Конструктивно это был самый настоящий сервопривод! В качестве датчиков обратной связи на двигателях шпинделя и подач были установлены синус-косинусные вращающиеся трансформаторы (СКВТ), или по-другому, резольверы. С помощью СКВТ помимо фактической скорости вращения определялся фактический угол поворота ротора и эмулировались сигналы инкрементальных энкодеров - двухфазные импульсы для передачи информации о перемещения в УЧПУ станка. Разрешающая способность была равна 10000 дискрет на один оборот ротора. При шаге винта в 10мм это означало что одна дискрета равна одному микрону - и всё это уже было в начале 1980-х! А у меня как нельзя кстати завалялся трофейный советский СКВТ ФВ67-12-008 от "Размера", доставшийся мне на опыты. И мне стало интересно, а как же в "Размере" определялось положение ротора СКВТ? Оказывается, конструкторы "Размера" применили довольно простой фазовый метод. Недолго думая, я решил воспроизвести "Размеровский" измеритель положения СКВТ в лабораторных условиях. Изначально вся затея с СКВТ была чистым экспериментом, который неожиданно дал хорошие результаты и вылился в небольшое исследование по повышению производительности программного кода для микроконтроллеров с ядром ARM Cortex-M3.

Читать далее
Total votes 38: ↑37 and ↓1 +36
Comments 11