Разное

Как сгенерировать ШИМ на dspic30f и dspic33f

Автор: Peter Berry
Дата создания: 16 Июль 2021
Дата обновления: 8 Май 2024
Anonim
[dsPIC33 Tutorial] Sec.1: Setting up system clock frequency
Видео: [dsPIC33 Tutorial] Sec.1: Setting up system clock frequency

Содержание

Автор завершил свой последний год инженерного проекта с микроконтроллерами dsPic, получив обширное представление об этих устройствах.

Что такое dspic30f и dspic33f?

Микроконтроллеры серий dspic30f и dspic33f представляют собой усовершенствованные 16-разрядные процессоры от Microchip, которые можно использовать для различных приложений ШИМ. Это пошаговое руководство научит вас настраивать модули ШИМ в dspic для получения желаемого вывода ШИМ.

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

Пример кода ШИМ для dspic30f и dspic33f

void PWM_Init (void) {TRISE = 0x00; // убедитесь, что выводы ШИМ установлены как выходы PORTE = 0x00; // очищаем выходы PTCONbits.PTOPS = 1; // ШИМ таймер пост-масштабирования PTCONbits.PTCKPS = 0; // Предварительное масштабирование таймера ШИМ PTCONbits.PTMOD = 2; // ШИМ постоянно работает в режиме «вверх-вниз» PTMR = 0; // Значение счетчика ШИМ, начало с 0 PTPER = 19999; // Базовый период ШИМ PWMCON1bits.PMOD3 = 0; // ШИМ в дополнительном режиме PWMCON1bits.PMOD2 = 0; // ШИМ в дополнительном режиме PWMCON1bits.PMOD1 = 0; // ШИМ в дополнительном режиме PWMCON1bits.PEN3H = 1; // Вывод высокого уровня PWM включен PWMCON1bits.PEN2H = 1; // Вывод высокого уровня PWM включен PWMCON1bits.PEN1H = 1; // Вывод высокого уровня PWM включен PWMCON1bits.PEN3L = 1; // Вывод низкого уровня ШИМ включен (управление направлением позже?) PWMCON1bits.PEN2L = 1; // Вывод низкого уровня ШИМ включен (управление направлением позже?) PWMCON1bits.PEN1L = 1; // Вывод низкого уровня ШИМ включен (управление направлением позже?) // PWMCON2 = 0x0000; // информация об обновлении ШИМ DTCON1bits.DTAPS = 0; // Устройство предварительного масштабирования мертвого времени DTCON1bits.DTA = 59; // Значение DeadTime для 4 мкс. // FLTACON = 0x0000; // Ошибка A Control // OVDCON = 0x0000; // Отмена управляющей информации // Рабочий цикл имеет максимальное значение 2xPeriod, поскольку выход // может измениться при нарастании или спаде Tcy PDC1 = 19999; // Регистр рабочего цикла ШИМ №1 (11 бит) PDC2 = 19999; // Регистр рабочего цикла ШИМ №2 (11 бит) PDC3 = 19999; // Регистр рабочего цикла ШИМ №3 (11 бит) PTCONbits.PTEN = 1; // Включить базу времени PWM! }

Важные регистры, используемые для инициализации ШИМ в dspic

регистрФункция

PTPER


Регистр периода времени ШИМ содержит значение временной базы.

PDC

Регистр рабочего цикла ШИМ хранит значение рабочего цикла.

PTCON

Регистры конфигурации ШИМ имеют биты конфигурации.

PTCON1

Регистры конфигурации ШИМ имеют биты конфигурации.

DTCON1

Регистр конфигурации мертвого времени.

ПТМР

Обычно это значение равно нулю.

1: Выберите режим работы ШИМ

Это делается с помощью битов конфигурации PTMOD в регистре PTCON, как показано в строке 8 нашего кода.

PTMODРежим

11

Непрерывный режим Up / Down с прерываниями для двойного обновления PWM

10

Режим непрерывного счета вверх / вниз

01

Режим одиночного события

00


Автономный режим

2: Рассчитайте базовый период ШИМ

Базовый период PWM можно рассчитать с помощью формулы, приведенной ниже:

Где:

1 / Tcy = 4 / (Частота генератора * PLLx)

Давайте рассчитаем это для периода времени 1 мс. Частота генератора - 10 МГц, ФАПЧ - x8.

Решение для PTPER дает значение 19 999, которое затем загружается в регистр PTPER в строке 12.

  • PTPER может быть загружен с максимальным значением 32 768.
  • Если рассчитанное значение больше этого, то следует отрегулировать предварительный делитель.

3: Рассчитайте значение рабочего цикла

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


  1. Умножить на 2 и
  2. Загружается в регистр PDC, как показано в строке 35.

В этом примере для 50% рабочего цикла 0,5 мс сохраняется вместо 1 мс в приведенной выше формуле. Решение для PTPER дает 9 999. Значение, загруженное в регистр PDC, - 19 999.

Выход ШИМ, полученный с этой конфигурацией, показан ниже:

ШИМ в режиме обратного отсчета

Режим счета вверх-вниз дает ШИМ, который выровнен по центру. Это особенно полезно в приложениях с векторным управлением.

  • В этом режиме развертка времени ШИМ вдвое больше, чем рассчитанная для автономного режима. Например, PTPER = 19,999 даст период 2 мс, а не 1 мс.
  • То же самое и со значениями рабочего цикла в регистрах PDC.

ШИМ в бесплатном режиме

Бесплатный режим - уникальная особенность серий dspic30f и dspic33f. Это позволяет нам настроить два канала ШИМ в дополнительном режиме так, чтобы выходной сигнал одного канала был точно противоположен выходному сигналу другого канала.

Чтобы настроить это,

  • Бит PMOD в регистре PTCON1 необходимо записать с нулем, как указано в строках 14–16.
PMODРежим

0

Бесплатный режим

1

Независимый режим

  • Бит разрешения высокого уровня ШИМ или PENxH и соответствующий бит низкого разрешения ШИМ PENxL должны быть записаны с единицей, как указано в строках 17–22.

Вставка мертвого времени в dspic

Когда ШИМ настроен в дополнительном режиме, мертвое время может быть легко вставлено между двумя дополнительными каналами, настроив регистр DTCON1.

  • Бит DTAPS используется для выбора предделителя мертвого времени.
  • В DTA загружается 6-битовое целое число, чтобы определить продолжительность вставляемого мертвого времени. Его можно рассчитать по той же формуле расчета значения PTPER, приведенной выше.
  • Поскольку это всего лишь 6-битное значение, оно не может быть больше 64. Если после расчета появляется большее значение, необходимо настроить предварительный делитель.
  • Строка 27 показывает значение 59, рассчитанное для 4 микросекунд, при этом предварительный делитель остается на нуле.

ШИМ-прерывание в dspic30f и dspic33f

Прерывание PWM доступно в dspic30f и dspic33f, которое может запускаться в различных местах во время цикла PWM.

РежимТочка срабатывания прерывания

Режим непрерывного счета вверх-вниз с прерываниями для двойного обновления

В начале и в конце каждого цикла ШИМ. Постскейлер в этом режиме не действует.

Непрерывный режим подсчета вверх-вниз

В начале каждого цикла ШИМ.

Режим одиночного события

В конце каждого цикла ШИМ. (Когда происходит сравнение между PTPER и PTMR.) Пост-скейлер не действует в этом режиме.

Автономный режим

В конце каждого цикла ШИМ. (Когда происходит сравнение между PTPER и PTMR)

Чтобы разрешить прерывание PWM, бит PWMIE в регистре IEC2 должен быть установлен в 1.

void Interrupt_Init (void) {IEC2bits.PWMIE = 1; }

Ниже приведен стандартный код функции прерывания ШИМ, которая будет вызываться при срабатывании прерывания.

void __attribute __ ((interrupt, auto_psv)) _PWMInterrupt (void) {// здесь ваш код IFS2bits.PWMIF = 0; }

Более подробную информацию о прерываниях можно найти в этом подробном руководстве: Как использовать прерывания в микроконтроллерах Pic.

Постскейлер прерывания PWM

Постскейлер может использоваться для уменьшения частоты срабатывания прерывания. Например, он может быть настроен на запуск после каждых 1, 2, 4 или 8 циклов ШИМ, в зависимости от битов PTOPS в регистре PTCON, как показано в строке 6 нашего ссылочного кода.

Эта статья точна и правдива, насколько известно автору. Контент предназначен только для информационных или развлекательных целей и не заменяет личного или профессионального совета по деловым, финансовым, юридическим или техническим вопросам.

Вопросы и Ответы

Вопрос: Я пытаюсь получить дополнительный режим для одного вывода ШИМ, используя эталонную программу, dspic30f4011 и Pickit 3. Единственное, что я включил, это биты конфигурации для внутреннего выбора частоты и c-компилятора, но не могу получить никакого вывода на ШИМ1 булавки?

Отвечать: Иногда, когда вы меняете биты конфигурации, микроконтроллер перестает работать, и я имею в виду, когда осциллятор работает некорректно, ваш код не начинает выполняться.

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

Читайте сегодня

Популярное сегодня

Соберите игровой компьютер Witcher 3 Blood and Wine за 400 долларов в 2017 году
Компьютеры

Соберите игровой компьютер Witcher 3 Blood and Wine за 400 долларов в 2017 году

Я оставил свою финансовую работу 6 лет назад, чтобы работать на начальника своей мечты. Я никогда не оглядывался назад. Я сосредотачиваюсь на обзорах технологий, игр и оборудования.Ведьмак 3, выпущенн...
Как использовать PowerPoint для создания видеоуроков
Компьютеры

Как использовать PowerPoint для создания видеоуроков

Джошуа - аспирант U F. Он интересуется бизнес-технологиями, аналитикой, финансами и бережливым производством шести сигм.Здесь мы рассмотрим, как можно использовать функцию вставки видео в PowerPoint д...