5.1.4.1.6. Режим широтно-импульсной модуляции
Помимо базового режима сравнения, каждый таймер поддерживает специальный режим генерации ШИМ-сигналов. В этом режиме период ШИМ задается с помощью регистра автоматической перезагрузки таймера. Значение заполнения импульсов задается через регистр захвата/сравнения канала. Таким образом, каждый таймер может генерировать до четырех независимых ШИМ-сигналов. Позже мы увидим, что таймеры могут работать и синхронизированно, позволяя генерировать до 16 синхронизированных ШИМ-сигналов.
Каждый таймер поддерживает специальный режим ШИМ, в котором можно генерировать ШИМ-сигналы с выравниванием по фронту или центру
В каждом канале можно генерировать ШИМ-сигнал с выравниванием по фронту или по центру. В режиме с выравниванием по фронту, падающий фронт импульса всегда совпадает с моментом перезагрузки таймера. Изменение значения в регистре захвата/сравнения позволяет легко управлять моментом возникновения нарастающего фронта ШИМ-сигнала. В режиме с выравниванием по центру, таймер конфигурируется как реверсивный счетчик, который сначала считает в прямом направлении, а затем - в обратном. Когда будет выявлено совпадение счетчика с регистром захвата/сравнения канала, инвертируется состояние выходного сигнала канала.
TIM2->CR1 = 0x00000000; //по умолчанию
TIM2->PSC = 0x000000FF; //установка макс. знач. предделителя
TIM2->ARR = 0x00000FFF; //установка макс. перезагружаемого знач.
TIM2->CCMR1 = 0x00000068; //Устанавливаем режим ШИМ
TIM2->CCR1 = 0x000000FF; //Задаем стартовое значение ШИМ
TIM2->CCER = 0x00000101; //разрешаем выхода канала 1
TIM2->DIER = 0x00000000; //разрешаем обновление прерывания
TIM2->EGR = 0x00000001; //разрешаем обновление
TIM2->CR1 = 0x00000001; //разрешаем работу таймера
|
|