ВУЗ:
Составители:
66
для хранения коэффициентов фильтра в массиве coefficient. Коэффициенты
фильтра считываются из файла только при компоновке программы. Эти значе-
ния могут изменяться при повторном проходе компоновщика (linker) без до-
полнительной трансляции ассемблером.
В листинге 5 приведен пример основной программы main и подпрограм-
мы обработки прерываний fir_start. В модуле main программы определяются
переменные циклических буферов с помощью регистров I (указатель), L (дли-
на), M (модификатор). Каждое прерывание вызывает перемещение указателя I
на один шаг (М = 1) в каждом буфере. С помощью цикла clear все элементы
буфера обнуляются. В управляющие регистры заносятся числа, определяющие
параметры и режим работы последовательного порта SPORT0.
В подпрограмме fir_start заполняется буфер цифровых отсчетов аналого-
вого сигнала с использованием регистра приемника rx0, рассчитывается выход-
ной сигнал КИХ-фильтра N-го порядка и выводится на ЦАП кодека через вы-
ходной регистр порта tx0.
После проведения процессором инициализации в начале программы схе-
ма, состоящая из процессора, кодека и внешних генераторов на рис. 39, вы-
полняет циклическую обработку прерываний с периодом дискретизации T
S
в
следующем порядке:
- преобразование входного напряжения в 16-разрядный двоичный код;
- передача последовательным кодом двух слов по 16 бит АЦП каждого ка-
нала с синхронизацией сигналами кодека SCLK и SDOFS;
Листинг 4. Объявление буферов для хранения коэффициентов и данных кодека
#define taps 15 /* константа taps = 15 */
#define taps_less_one 14 /* константа taps_less_one = 14 */
.section/dm dm_data;
.var/circ data_buffer[taps]; /* циклический буфер отсчетов в области dm */
.section/pm pm_data;
var/circ coefficient[taps] =
''coeff.dat''; /* циклический буфер коэффициентов
в области pm заполняется числами из файла ''coeff.dat'' */
для хранения коэффициентов фильтра в массиве coefficient. Коэффициенты
фильтра считываются из файла только при компоновке программы. Эти значе-
ния могут изменяться при повторном проходе компоновщика (linker) без до-
полнительной трансляции ассемблером.
Листинг 4. Объявление буферов для хранения коэффициентов и данных кодека
#define taps 15 /* константа taps = 15 */
#define taps_less_one 14 /* константа taps_less_one = 14 */
.section/dm dm_data;
.var/circ data_buffer[taps]; /* циклический буфер отсчетов в области dm */
.section/pm pm_data;
var/circ coefficient[taps] = ''coeff.dat''; /* циклический буфер коэффициентов
в области pm заполняется числами из файла ''coeff.dat'' */
В листинге 5 приведен пример основной программы main и подпрограм-
мы обработки прерываний fir_start. В модуле main программы определяются
переменные циклических буферов с помощью регистров I (указатель), L (дли-
на), M (модификатор). Каждое прерывание вызывает перемещение указателя I
на один шаг (М = 1) в каждом буфере. С помощью цикла clear все элементы
буфера обнуляются. В управляющие регистры заносятся числа, определяющие
параметры и режим работы последовательного порта SPORT0.
В подпрограмме fir_start заполняется буфер цифровых отсчетов аналого-
вого сигнала с использованием регистра приемника rx0, рассчитывается выход-
ной сигнал КИХ-фильтра N-го порядка и выводится на ЦАП кодека через вы-
ходной регистр порта tx0.
После проведения процессором инициализации в начале программы схе-
ма, состоящая из процессора, кодека и внешних генераторов на рис. 39, вы-
полняет циклическую обработку прерываний с периодом дискретизации TS в
следующем порядке:
- преобразование входного напряжения в 16-разрядный двоичный код;
- передача последовательным кодом двух слов по 16 бит АЦП каждого ка-
нала с синхронизацией сигналами кодека SCLK и SDOFS;
66
Страницы
- « первая
- ‹ предыдущая
- …
- 64
- 65
- 66
- 67
- 68
- …
- следующая ›
- последняя »
