Инициализация таймера ШИМ 1 и АЦП (Init_PWM_Timer1_plus_ADC)

 
в палитре на схеме

Блоки (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.