Цель работы
Генерация синусоидального сигнала на микропроцессоре Texas Instruments с выводом на осциллограф.
Методические указания
В микропроцессорной технике генерация текстовых гармонических сигналов используется постоянно. Применяются два подхода:
1) В первом случае значение полупериода гармонического сигнала предсавляются в виде таблицы. Чем точнее должен быть сгенерирован сигнал, тем больше размер этой таблицы. Этот метод имеет главное достоинство – быстрое получение результата. Недостаток – низкая точность при генерации высоких частот.
2) Второй подход заключается в представлении синуса и косинуса в виде степенного ряда. Этот подход используется в DSPLIB. Достоинство – высокая точность, зависящая от количества составляющих ряда. Недостаток – длительность вычислений.
В задании для генерации синусоидального сигнала используется стандартная библиотека DSPLIB, которая предоставляется Texas Instruments. В этой библиотеке содержится много полезных функция для работы с сигналам, например:
|
|
● функция БПФ
● функции синуса, косинуса, тангенса
● функции экспоненты и логарифма
● и т.д.
Каждая из функций оптимизирована для работы с конкретным процессором.
Ход выполнения
Генерация синусоидального сигнала на микропроцессоре
Аналогично предыдущей лабораторной работе необходимо импортировать готовый проект для другого микроконтроллера и перенастроить его для используемого микроконтроллера. Затем сконфигурировать подключение микроконтроллера, подключить его и прошить скомпилированной программой.
В коде генерируются две синусоиды на два разных канала:
left_output = generate_sinewave_1(250, 5000);
right_output = generate_sinewave_2(500, 10000);
Первый параметр – частота генерируемой синусоиды, второй – амплитуда.
Для генерации сигнала используется функция sine(int &count, float &sinusoid, 1). Аргументы этой функции:
● count – адрес памяти, в котором содержится значение частоты
● sinusoid – адрес памяти, в который помещается рассчитанное значение синуса
● третий параметр всегда 1
sine() вычисляет синус угла, для чего на вход функции подается число с фиксированной точкой, которое соответствует значению угла:
● 0 ->
● 16383 ->
● 32767 ->
● 65534 ->
Результат выполнения программы можно наблюдать через осциллограф: