Функция пред загрузки регистров таймера.
Пред загрузка (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; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!