
- •Введение в дсп.
- •Работа номер 1
- •9.Сдача работы:
- •If cond jump label;// условный переход
- •2.Показать как минимум две программы с разным темпом мигания от
- •Задание 2.5 - работа с таймером
- •Сдача задания 2.5: Задание – задать заметную на глаз частоту прерываний таймера
- •Задание 2.6 Использование таймера и прерывания от кнопки
- •Сдача задания 2.6: Задание – при нажатии на кнопку светодиод должен прекращать мигать, при повторном нажатии опять начинать мигать.
- •Сдача задания 3.1:
- •Сдача заданий 3.1.2 и 3.1.3:
- •If ne jump firstdac; // переход к пустому ацп Сдача задания 3.1.4:
- •Сдача задания 3.1.5:
- •1.Oб`ясните, почему нельзя использовать обычное сложение.
- •2.Почему инициализация регистров делается после вызова CodecInit ?
- •3.Почему запрещаются прерывания перед инициализацией регистров
- •If eq jump nofiltr; // если 0, не делаем фильтрацию
Сдача задания 2.5: Задание – задать заметную на глаз частоту прерываний таймера
и мигать диодом на каждое прерывание таймера.
Вопрос: почему невозможно остановить программу командой «Halt»?
Задание 2.6 Использование таймера и прерывания от кнопки
После старта программы светодиод должен моргать, при нажатии кнопки останов переключения светодиода, повторное нажатие – светодиод опять начинает моргать.
Для работы необходима декларация переменной:
.section/data seg_data;
.VAR ButtonFlag = 0; // декларация переменной
Использование переменной:
АR=DM(ButtonFlag); // занесение в регистр
NONE = PASS AR; // проверка (уставка флагов)
IF NE JUMP not0; // NE - не 0
AR=0;
DM(ButtonFlag)=AR; // занесение значения переменной
В программе должно быть следующее:
1.Таблица прерываний с вызовом процедур обработки прерываний таймера
и прерывания IRQE.
2.Задание регистров таймера, частота прерываний порядка 0.1 - 10 герц.
3. Бесконечный цикл.
4. Процедура обработки прерываний таймера - мигание или нет
светодиодом в зависимости от значения переменной.
5. Процедура обработки прерываний IRQE - смена значения переменной.
Процедуры обработки прерываний не должны портить основной банк
регистров.
Сдача задания 2.6: Задание – при нажатии на кнопку светодиод должен прекращать мигать, при повторном нажатии опять начинать мигать.
Вопрос: как переключить банки регистров и зачем это надо делать?
Работа номер 3.
Аудио кодек, основы ацп/цап.
Введение.
Aналого-цифровые преобразователи (АЦП) - одна из важнейших составляющих аппаратуры обработки данных. АЦП преобразует аналоговый сигнал в цифровые данные, которые затем могут обрабатываться процессором. Цифро-аналоговые преобразователи (ЦАП) делают обратную операцию и преобразуют цифровые данные в аналоговый сигнал, который подается на оконечное устройство.
Кодек в составе 2189EZ-KIT - это микросхема AD73322, подключенная к ДСП через SPORT0. Микросхема представляет из себя два 16-битных АЦП с максимальной скоростью 64000 отсчетов в секунду и два 16-битных ЦАП. Микросхема предназначена в основном для работы в системах телефонии и обработки речи, но может использоваться и для других целей.
Основной особенностью микросхемы, важной для данной работы, является сдвоенность АЦП/ЦАП и синхронизация работы ЦАП с работой АЦП. Это означает, что мы всегда получаем сигнал с двух АЦП, сначала с первого, затем со второго, и выдавать данные в ЦАП можно только после получения отсчета АЦП, причем выдача данных будет тоже в оба ЦАПа по очереди.
Более подробная информация о микросхеме AD73322 находится в файле AD733222_b.pdf.
Задание 3.1
Программа пересылки данных из АЦП в ЦАП.
Имеющиеся компоненты для выполнения работы:
Файл codec.asm - файл с процедурами для работы с кодеком:
CodecStop
CodecInit
File 2189ezkit.ldf - файл для линкера - включить в Linker files.
Файл codec.asm надо включить в папку Sourse Files.
Необходимый вид секции обслуживания прерываний кодека (порта0):
.section/pm seg_rth;
…….
JUMP SPORT0_tx; NOP; NOP; NOP; /*SPORT0_TX*/
JUMP SPORT0_rx; NOP; NOP; NOP; /*SPORT0_RX*/
…….
Процедура SPORT0_tx определена в файле codec.asm и используется для инициализации кодека. Микросхема AD73322 имеет режим программирования, в котором она находится после сигнала RESET. В этом режиме данные, записываемые в выходной регистр порта, попадают в конфигурационные регистры микросхемы. Далее микросхема переводится в рабочий режим, в котором данные из выходного регистра TX0 направляются в ЦАПы.
В рабочем режиме микросхема считывает данные из АЦП и пересылает их в порт. Порт генерирует прерывание SPORT0_RX и данные из АЦП можно забрать из RX0. В этот же момент времени и соответствующий ЦАП готов к принятию данных. Их можно сразу же переслать в регистр TX0 и тем самым передать в ЦAП.
Процедура SPORT0_rx используется для пересылки данных из АЦП в ЦАП и пишется студентом. В процедуре обработки прерывания используйте второй набор регистров.
Программа должна включать в себя следующее:
1.Инициализация кодека: CodecInit.
2.Бесконечный цикл.
3.Процедура обработки прерывания Sport0_RX, принимающая данные из
RX0 и пересылающая их в TX0.
Правильно написанная программа должна пересылать данные со входа
кодека на выход.
Сигнал с генератора НЧ должен быть подан на вход АЦП (ближний к краю
платы раз`ем).
Выходной сигнал со второго разъема наблюдается при помощи
осциллографа.