Кто любит RISC в жизни, заходим, не стесняемся.
Ответить

STM32F100 ШИМ 5кГц с постоянно меняющейся скважностью

Чт апр 18, 2019 17:11:15

Всем привет!

Пытаюсь выжать аппаратно ШИМ сигнал из STM32F100C8T6, частота 4800Гц, фишка в том что скважность меняется каждый такт, импульсы повторяются в таком порядке: 30%, 70%, 95%, 95%, 70%, 30%, это значения скважности в %.
Использую TIM1 и каналы 2й и 4й, это ноги РА9 и РА11.
Скважность меняю в прерывании по сравнению, регистр таймера и регистр сравнения буферизованы, то есть их значения меняются после Update Event, который происходит после переполнения таймера.
На частоте 400Гц или чуть больше всё получается, но при увеличении частоты что-то ломается и пара импульсов идет не с той скважностью, причём у каждого канала это своя пара, но порядок чёткий и не меняется например при увеличении частоты на порядок.

Добавлено after 2 minutes 23 seconds:
Мне кажется проблема в аппаратных возможностях F100, поправьте если ошибаюсь :)

Код инициализации и обработчика прерывания:



Добавлено after 4 hours 51 minute 7 seconds:
В общем проблема была из-за использования float в прерывании.
Вложения
4800.PNG
4800Гц - сигнал портится
(18.14 KiB) Скачиваний: 305
400.PNG
400Гц - нормальный сигнал
(10.27 KiB) Скачиваний: 325
Последний раз редактировалось Millyvolt Чт апр 18, 2019 20:58:10, всего редактировалось 1 раз.

Re: F100 ШИМ 5кГц с постоянно меняющейся скважностью

Чт апр 18, 2019 20:16:16

Судя по описанию и коду, можно заранее вычислить значения для регистров сравнения и загружать их через DMA.

Re: F100 ШИМ 5кГц с постоянно меняющейся скважностью

Чт апр 18, 2019 20:56:59

Судя по описанию и коду, можно заранее вычислить значения для регистров сравнения и загружать их через DMA.


Через DMA и надо, но это сигнал для двигателя и у него должен быть разгон в течение нескольких секунд, и тут как быть? :)
Ответить