Dyikot
@Dyikot

Почему может не заходить в обработчик таймер [STM32]?

Требуется измерить переменный сигнал частотой 100 Гц - 2 КГц. Мк STM32F103x8.
Я использую два таймера. Частота микроконтроллера 8МГц. TIM2 служит для индикации и вызывается каждые 10 мс, а TIM3 для измерения значения АЦП и вызывается каждые
от 2мс до 250 мкс. Все бы хорошо но если я уменьшаю время вызова второго таймера до 125 мкс, то почему-то не заходит в обработчик этот таймер. Почему так? Симуляцию произвожу в proteus. Это он не может так быстро обработать? Для 2 КГц получается нужно чтобы было 125 мкс. Может DMA использовать?
  • Вопрос задан
  • 56 просмотров
Решения вопроса 1
@AiR_WiZArD
0) Где код?
1) Настолько ли важно замеры проводить с помощью АЦП? Может простейший ФВЧ + компаратор + таймер в режиме input capture? Это проще с программной точки зрения, а рассыпуха копейки стоит
2) Какие параметры АЦП? Какая частота АЦП, время семплирования, используется ли прерывание по окончании, или блокирующая функция в прерывании?
3) Правильно ли я понял - вызывается обработчик 3 таймера? Если так, то другой вопрос - зачем? TIM3_TRGO может напрямую запускать преобразование
4) DMA? Да! И ещё раз - да!
5) Не понял, зачем тут упомянут TIM2 - если он используется для других задач, стоит выключить на время отладки АЦП, что бы не мешал.
6) "Симуляцию произвожу в proteus" - не надо, отлаживать надо на реальном железе, симуляторы в таком виде не используются, только изредка qemu для юнит тестов
7) "Это он не может так быстро обработать" - если симулятор не может обрабатывать в реальном времени, она начинает обрабатывать не в реальном времени, но на логику кода это никак не влияет, просто занимает больше времени.
8) 8МГц это мало, если нет гонки за каждым миллиампером (в таком случае F1 выкидывается, ставится L0/L1), лучше выставить максимальную частоту (72МГц)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы