Блоки (1,2,3) реализует настройку широтно-импульсной модуляции с использованием аппаратных
таймеров микроконтроллера, тактируемых импульсами определенной частоты CLK. Таймер
подсчитывает количество тактовых импульсов и в нужные моменты формирует передний и задний
фронты. По истечению периода ШИМ возникает прерывание результатом которого является выход из
функции DelayTimer_pwm() и в зависимости от свойств блока опрос канала
выбранного АЦП (1|2). Смысл использования блока заключается в том, что перед самым началом
цикла выполнения алгоритма происходит считывание значений каналов АЦП. Это необходимо для
того, что бы разнести во времени получение измерений с помощью АЦП и работу других элементов
блока управления с целью уменьшения уровня шумов в измерениях (например получаем с помощью АЦП
значения токов на фазах двигателя и переключаем ключи на инверторе, два процесса лучше
разнести по времени).
Входы
- On – включить таймер;
- Init_port – инициализация каналов таймера (каждый из трех
таймеров имеет свои каналы, они представлены в соотв. документации), канал представляет
из себя линии ввода-вывода микропроцессора и контроллера АЦП;
- Sort_block – порт необходимый для определения
последовательности сортировки блока.
Выходы
- ready – возвращает 1, это необходимо для определения порядка
сортировки последующих блоков.
Свойства:
- Номера каналов – CHANALS - Перечислены каналы (линии ввода
вывода) используемые при ШИМ. По умолчанию - 1;
- Период ШИМ – PWM_Period - Период ШИМ. По умолчанию - 8000;
- Заполненин импульса канала (1,2,3) – CCR1...CCR3 - При работе в
режиме ШИМ, выходной сигнал может формироваться на основании сравнения значения в
регистре CCR и основного счетчика CNT или регистров CCR, CCR1 и значения основного
счетчика CNT. По умолчанию - 4000.
- Предделитель частоты – PSG - Значение предварительного делителя
счетчика – TIMx_PSG, при этом основной счетчик будет считать на частоте CLK=
TIMx_CLK/(PSG+1). По умолчанию - 0;
- Включить прерывание – Intr - После истечения периода ШИМ будет
возникать прерывание, в обработчике которого будет уменшина на еденицу глобальная
переменная fl_pwm (fl_pwm = fl_pwm – 1 ). Это необходимо для того что
бы основной поток программы мог выйти из функции ожидания прохождения периода ШИМ
DelayTimer_pwm(). По умолчанию - Нет (нет прерывания);
- Режим основного счетчика – Centr_PWM - Центрированный ШИМ или
обыкновенный. По умолчанию - Нет (обыкновенный);
- Использовать опрос АЦП каналов – ON_ADC - В обработчике
прерываний использовать ли опрос каналов АЦП или не использовать. По умолчанию -
ДА;
- Количество каналов АЦП – NUM_ADC_CH - Количество
последовательно опрашиваемых АЦП каналов. По умолчанию - 1;
- Выбор контроллера АЦП – ADC - Можно выбрать АЦП1 или АЦП2. По
умолчанию - ADC1.
Примечание: Стоит отметить. Что прерывние от UART не работает одновременно с прерыванием от
Timer1.