при помощи синусоидальных импульсов
Во второй части работы необходимо вывести синусоидальный ШИМ - сигнал. Отметим, что музыкальная нота – это гармоническое синусоидальное колебание определенной частоты, поэтому, изучив принцип получения синусоидальных колебаний, можно получить чистоту звучания нот, близкую к реальности. В таблице представлено соответствие частот и нот музыкального звукоряда.
Для расчета частоты синусоидальных колебаний используется формула:
(1) |
где - частоты модулированных импульсов;
- число модулированных импульсов за период.
1. Создание нового проекта.
1.1 Создаем новый проект Lab5А.pjt.
1.2 Добавляем в проект файлы (см. п. 1.2 части I), кроме файла
DSP281x_CpuTimers.c, и вместо lab5.c загружаем lab5А.c.
2. Настройка параметров проекта, компоновка проекта и загрузка выходного файла (аналогично п.п. 2.1 – 2.4 части I данной лабораторной работы). В закладке Compiler выбираем Preprocessor и в поле Include Search Path (-i) вводим:
C:\tidcs\C28\dsp281x\v100\DSP281x_headers\include;
|
|
..\include; C:\tidcs\C28\IQmath\cIQmath\include
3. Преобразование файла Lab5А.c.
Удаляем те строки программы, которые касаются работы таймера 0 ядра процессора F2812: ConfigCpuTimer(&CpuTimer0, 150, 50000), InitCpuTimers(), CpuTimer0Regs.TCR.bit.TSS = 0, переменные i и time_stamp, массив frequency [8].
Переименовываем подпрограмму “cpu_timer0_isr()” в “T1_Compare_isr” и в ней добавляем строку: PieCtrlRegs.PIEACK.all = PIEACK_GROUP2, устанавливаем бит T1CINT регистра EVAIFRA в 1.
Добавляем инструкцию, разрешающую в модуле расширения прерываний PIE прерывание от GP таймера 1: PieCtrlRegs.PIEIER2.bit.INTx5=1 и устанавливаем разрешение прерывания ядра процессора INT2: IER = 2.
Настраиваем таймер 1 Менеджера Событий (аналогично пп. 3.5.1 – 3.5.2 части I): записываем коэффициент деления равный 1, устанавливаем бит T1CINT регистра EVAIMRA в 1.
В регистр периода (T1PR) заносим значение, рассчитанное по формуле:
(2) |
где кГц, МГц,HISCP = 2, TPS = 1.
Рис. 4.14. Принцип формирования синусоидального сигнала
широтно-импульсной модуляцией
4. Тестирование программы.
Сбрасываем ЦСП: Debug → Reset CPU, Debug → Restart.
Переходим к главной подпрограмме: Debug → Go main.
Запускаем программу: Debug → Run.
Устанавливаем точку останова на строчке: PieCtrlRegs.PIEACK.all = PIEACK_GROUP2.
5. Включение библиотеки “IQ-Math” в проект.
Добавляем в начальную часть текста программы строки:
#include "IQmathLib.h",
_iq30 sine_table[512],
#pragma DATA_SECTION(sine_table,"IQmathTables");
и добавляем файл Lab5A.cmd.
6. Расчет необходимого значения регистра сравнения.
Учитывая, что разность значений регистра периода и регистра сравнения определяет ширину выходного модулированного импульса (см. рис. 4.15), а значения функции синуса изменяются от минус 1 до плюс 1, рассчитываем значение регистра сравнения по формуле:
|
|
T1CMPR = T1PR – _IQ30mpy(sine_table[index] + _IQ30(0.9999),T1PR/2) | (3) |
где функция IQ30mpy(a, b) – умножение чисел a и b в формате IQ30; _IQ30(0.9999) – оттранслированное значение единицы.
Рис. 4.15. Изменение ширины импульса при ШИМ по
синусоидальному закону
Чтобы избежать переполнения, применим функцию насыщения _IQsat (x, max, min). Тогда окончательно записываем в подпрограмму T1_Compare_isr формулу для расчета необходимого значения регистра сравнения:
EvaRegs.T1CMPR = EvaRegs.T1PR - _IQsat(_IQ30mpy(sine_table[index]+_IQ30(0.9999), EvaRegs.T1PR/2),EvaRegs.T1PR,0).
7. Расчет частоты синусоидальных колебаний.
Для этого используем формулу (1), задаемся = 50 кГц, = 128, т.е. из таблицы значений синуса выбираем каждое четвертое число, добавляем строку:
index += 4.
Тогда = 390,6 Гц.
Компонуем проект: Project → Rebuild All.
Содержание отчета:
Отчет должен содержать цель работы, краткие теоретические сведения по теме работы, рисунки, поясняющий принцип формирования ШИМ – сигналов, тексты исследуемых программ, результаты их выполнения, выводы.
Контрольные вопросы:
1. Назначение и структура Менеджера Событий DSP TMS320F2812.
2. Структура таймеров Менеджера Событий, их отличие от таймеров ЦПУ по структуре и назначению.
3. Режимы работы таймеров Менеджера Событий.
1. Регистры Менеждера Событий.
2. ШИМ – сигнал: определение, формирование с помощью Менеджера Событий.
3. Прерывания Менеджера Событий.