Функция пред загрузки регистров таймера.



 Пред загрузка (preload) в контексте таймера STM32 относится к дублированию некоторых регистров таймера или некоторых битовых полей управления. Так как содержимое некоторых регистров таймера и некоторых битовых полей непосредственно влияет на выводимые из каналов таймера формы сигнала, обновление содержимого этих регистров и управляющих битовых полей должно быть четко синхронизировано с событием обновления таймера (update event), которое происходит на начале нового цикла счета. Эта жесткая синхронизация на практике не была бы возможна, если бы не было специальной функции пред загрузки регистров и управляющих битовых полей.

Когда у регистра таймера есть функция пред загрузки, то существует два экземпляра регистров таймера:

• Активный регистр (также называемый теневым регистром): его содержимое используется логикой таймера для генерации выходного сигнала в канале таймера.
• Регистр пред загрузки: этот регистр доступен со стороны программного обеспечения, когда разрешена функция пред загрузки соответствующего регистра.

Если функция пред загрузки выключена, как показано на рис. 8, то вступают в действие две основные характеристики:

• Регистр пред загрузки рассматривается как не существующий.
•  Любая попытка доступа на запись в соответствующий регистр со стороны программного обеспечения будет выполнена над активным регистром.

Рис. 8. Механизм пред загрузки регистра канала таймера запрещен.

Если функция пред загрузки включена, как показано на рис. 9, то вступают в действие две основные характеристики:

• Любой доступ на запись в соответствующий регистр выполняется над регистром пред загрузки, в то время как активный регистр не изменяется.
• Как только таймером сгенерируется "update event", содержимое регистра пред загрузки немедленно переносится в активный регистр. Содержимое регистра пред загрузки передается жестко синхронизированным с событием обновления. Другими словами, этот процесс строго синхронен с соответствующего нового цикла формирования выходного сигнала ШИМ.

 

Рис. 9. Механизм пред загрузки регистра канала таймера разрешен.

Функция предзагрузки доступна для следующих регистров и управляющих битовых полей:

• Auto-reload timer register (TIMx_ARR).
• Timer prescaler register (TIMx_PSC) (его предзагрузка не может быть выключена).
• Timer channel registers (TIMx_CCRy).
• Битовые поля CCxE и CCxNE в регистре таймера TIMx_CCER.
• Битовое поле OCxM в регистрах таймера TIMx_CCMRn.

Функция пред загрузки представляет большой интерес при выводе сигнала ШИМ (PWM) на определенном канале таймера. Уровень на выходе канала зависит от постоянного сравнения между значением счетчика таймера и регистром TIMx_CCRy, по этой причине любое изменение регистра канала таймера может привести к немедленному изменению уровня на выходе таймера. В следствие этого прямая запись в регистр канала посередине периода PWM может привести к генерации случайных сигналов.

Чтобы решить эту проблему, должна быть разрешена функция пред загрузки для соответствующего регистра канала таймера. Когда функция пред загрузки разрешена, любой доступ на запись в регистр канала приведет к записи в регистр пред загрузки, в то время как активный регистр канала останется нетронутым. Это устранит пертурбации генерируемого периода ШИМ.

Как только произойдет событие обновления таймера, содержимое регистра пред загрузки будет передано в активный регистр. Содержимое активного регистра будет использоваться для формирования следующего периода ШИМ для осуществления операции сравнения и определения новой скважности периода ШИМ.

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

 


Дата добавления: 2020-01-07; просмотров: 197; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!