Всем привет!
Пытаюсь выжать аппаратно ШИМ сигнал из 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 раз.