реклама на сайте
подробности

 
 
> Поведение таймеров в STM32., Очевидное может стать невероятными граблями.
KnightIgor
сообщение Sep 12 2013, 12:40
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725



Вопросов нет. Хочу указать на замаскированные грабли в STM32.

Таймеры в них имеют предварительный делитель частоты Prescaler (PSC). Как честно и описано в доках, этот регистр имеет скрытый буфер, доступный для программы, а собственно действующий регистр загружается новым значением из того буфера только в момент выработки события переполнения (ну, когда счетчик CNT достигнет ARR). Из этого логически следует, что при начальной инициализации в программе, если в PSC требуется что-то отличное от 0, то оно будет действовать только после первого прохода счетика! И это оказалось для меня граблями, т.к. при первом проходе первое событие выработалось у меня значительно раньше, что оказалось критично в некотором приложении.

Короче, work around вполне прост и организуется штатными средствами: после записи требуемого значения в PSC надо программно сгенерировать событие переполнения/обновления установкой бита UG в регистре EGR таймера. Это пропишет рабочий регистр PSC значением из буферного.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
AHTOXA
сообщение Sep 12 2013, 16:15
Сообщение #2


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(KnightIgor @ Sep 12 2013, 18:40) *
Хочу указать на замаскированные грабли в STM32.

Грабли сии уже неоднократно замечены и заботливо огорожены sm.gif


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 06:59
Рейтинг@Mail.ru


Страница сгенерированна за 0.03031 секунд с 7
ELECTRONIX ©2004-2016