Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Ход работы. – сгенерируйте 1 KHz прямоугольный волновой сигнал на ePWM1A с переменной шириной импульса от 0 до 100%;Задание: – сгенерируйте 1 KHz прямоугольный волновой сигнал на ePWM1A с переменной шириной импульса от 0 до 100%; – отобразите сигнал на осциллографе. Используемые регистры: – TBPRD: задает частоту сигнала; – TBCTL: устанавливает операционный режим и время предделителя; – CMPA: устанавливает ширину импульса на ePWM1A; – AQCTLA: определяет форму сигнала на ePWM1A. Порядок выполнения. Создайте файл проекта. В «C/C++» вкладке CCS откройте файл проекта Lab7.pjt. Откройте файл «Lab7_1.c» и сохраните его как «Lab7_3.c» Исключите файл «Lab7_2.c» из build. Используйте правое нажатие мыши в файле «Lab7_2.c», и разрешите “Exclude File(s) from Build”. В файле «Lab7_3.c», отредактируйте функцию «Setup_ePWM1A()». Мы снова будем использовать режим счета «вверх–вниз A», так что мы можем использовать существующую установку для битовой области «TBCTL.CTRMODE». Тем не менее, теперь мы хотели бы установить ePWM1A в 1 по “CMPA – up match” и очистить ePWM1A по событию “CMPA – down match”. Измените установку для регистра AQCTLA соответственно. В функции “Setup_ePWM1A()” добавьте строку, чтобы проинициализировать регистр CMPA на 0, который определит ширину импульса 100%: EPwm1Regs.CMPA.half.CMPA = 0;
В «main()», измените вызов функции «ConfigCpuTimer()», чтобы определить период 100 микросекунд для таймера 0:
ConfigCpuTimer(&CpuTimer0, 150, 100); Установка CpuTimer0 из Лабораторного упражнения Lab6. Он проинициализирован, чтобы запросить обработку прерываний один раз каждые 100 микросекунд. Теперь мы можем использовать свою подпрограмму обработки прерываний «cpu_timer0_isr()», чтобы увеличить величину в регистре CMPA пока он не достигнет величины в TBPRD – таким образом мы изменим ширину импульса постепенно от 100% на 0%. Если Вы хотите, Вы можете добавить вторую последовательность, чтобы увеличить ширину импульса ePWM1A снова в обратной последовательности до100%. Примечание. Все регистры ePWM1загружены. Чтобы сравнить текущую величину CMPA с TBPRD, Вы можете использовать:
if (EPwm1Regs.CMPA.half.CMPA < EPwm1Regs.TBPRD) Скомпилируйте, загрузите и протестируйте. Теперь скомпилируйте, загрузите и протестируйте модифицированный проект. Осциллограмма сигнала ePWM1A должна выглядеть как на рисунке 2.51.
Рисунок 2.51 – Осциллограмма сигнала ePWM1A
Результат. Ширина импульса сигнала должна изменяться постепенно между 100% и 0 %.
|