Эта учебная программа применима ко всем процессорам ADSP-21xx, имеющим последовательный порт.
Программа, приведенная в файле Описание_Лр9.doc, принимает значение, поступающее на вход SPORT1, затем передает его через SPORT1; это простое прохождение последовательных данных через последовательный порт. Компандирование разрешено, так что принятое значение расширено, затем сжато снова прежде, чем быть переданным.
Программа инициализирует все регистры управления, отображенные на память. Это действие не строго необходимо, так как большинство функций, управляемых этими регистрами, не используется в данном случае, но это - полезный приём программирования. Обратите внимание, что прерывания конфигурированы прежде, чем прерывание приема SPORT1 разрешено. Аналогично, SPORT1 не разрешен, пока он не был полностью конфигурирован.
Основная часть программы - цикл ожидания, когда прерывание (прерывание приема SPORT1) произойдет. Программа обслуживания прерывания выполняет всю обработку данных, в данном случае, пересылку данных из регистра приема последовательного порта в регистр передачи последовательного порта.
Регистры управления, отображенные на память, инициализированные этой программой, могут просматриваться из двух окон: окна регистров управления и окна регистров последовательного порта 1. Это - хорошая практика, чтобы закрыть окна, которые Вы не используете, потому что это уменьшает плотность на экране и освобождает имитатор от непроизводительных затрат.
Чтобы открыть окна регистров последовательного порта 1 и регистров управления:
1. Выбрать SPORT1 из меню Register.
2. Выбрать Control Registers из меню Register.
Переместите окна так, чтобы все окна были видимы.
Файл serin.dat в этом примере обеспечивает данные для ввода в последовательный порт. Вы можете создать выходной файл, чтобы собрать данные, переданные через последовательный порт. Этот файл позволит Вам проверить функционирование программы, поскольку выходные данные должны соответствовать входным данным в serin.dat.
Чтобы связать SPORT1 с файлами для последовательного ввода и вывода, откройте диалоговое окно Settings/Streams.Cоздайте связи файла serout.dat и файла serin.dat с портом SPORT1.
Программа инициализирует регистры и ожидает прерывание. SPORT1 был конфигурирован, чтобы генерировать RFS (кадровая синхронизация приема) внутренне с частотой 8 kHz . Следовательно, он произведет выборку входных данных на частоте 8 kHz и вызовет прерывание, когда примет полное слово с 8 битами. В ответ, моделируемый процессор переходит к ячейке памяти 0024, вектору прерывания приема для SPORT1. Оттуда программа переходит к подпрограмме обслуживания на метку sample.
Чтобы облегчить наблюдение за выполнением программы, установите контрольную точку по адресу 0x0024. Эта инструкция дает переход к подпрограмме обслуживания прерывания.
Теперь Вы можете инициализировать выполнение программы. Имитатор остановится, когда он столкнется с контрольной точкой.
Когда имитатор остановится, обратите внимание, что регистры в окне регистров управления и окне регистров SPORT1 были инициализированы, и регистр RX1 содержит значение 0x067F. Это - расширенное и с распространённым знаком значение, соответствующее принятому коду 10100101, первым 8 битам в файле serin.dat.
В случае необходимости, измените размеры окна вычислительных регистров так, чтобы содержание окна регистров SPORT1 было также видимо (Вы должны просмотреть только регистр AX0 в окне вычислительных регистров). Затем одиночный шаг в программе обслуживания и наблюдение содержания регистров RX1, AX0 и TX1
Еще два одиночных шага и наблюдают, что значение в RX1 появляется в AX0, затем в TX1. Ещё два одиночных шага и значение в TX1 изменяется на 0xFFA5, которое соответствует коду 0x067F, сжатому и с распространённым знаком. Аппаратные средства компандирования сжимают значение TX1, затем записывают его обратно в TX1 для передачи.
Вы можете определить точно, сколько циклов процессора проходит между прерываниями, читая счетчик циклов в окне регистров управления. Счетчик должен показать, что приблизительно 1500 циклов прошло после предыдущего прерывания.
В программе примера sport.asm SPORT1 конфигурирован для внутренней генерации RFS1, и таким образом процессор производит выборку через вход последовательных данных DT1 на внутренне программируемой частоте. Процессоры ADSP-21xx могут также использовать внешне сгенерированные сигналы синхронизации кадров. В этом случае внешнее устройство определяет, когда последовательные данные должны быть введены или выведены. Имитатор может моделировать ряд внешних воздействий, включая внешнюю синхронизацию кадров.
На следующем этапе Вы измените программу так, чтобы конфигурировать внешне сгенерированный RFS1. Затем Вы должны установить сигнал RFS1 и. сбросить указатели на файлы serin.dat и serout.dat.
Изменить программу, чтобы конфигурировать SPORT1 для внешней генерации RFS1:
1. Набрать в программе " ax0 = 0x6a27 " вместо ax0 = 0x6B27.
Теперь транслируйте программу, чтобы установить новую конфигурацию SPORT1.
2. Начать выполнение программы.
Имитатор выполнит инициализации и затем цикл на инструкции IDLE, ждущей прерывание. Но никакое прерывание не произойдет, потому что SPORT не получает никакого сигнала RFS, и не будет вводить никакие данные. Остановите выполнение программы командой Halt.
Установка режима генерации RFS1 через каждые 200 циклов: производится в окне Settings/Interrupts (указания приведены в “ Работа с VisualDSP++”, п.14.7.2)
Теперь, если Вы начинаете выполнение программы снова, моделирование выполняется как прежде. Когда SPORT1 получает 8 бит, генерируется прерывание приема SPORT1, и имитатор останавливается на контрольной точке в ячейке памяти 0024.
Чтобы завершить обработку данных в serin.dat, удалите контрольную точку и повторно запустите выполнение программы. Имитатор остановится, когда будет достигнут конец файла serin.dat.
Теперь.проверьте файл serout.dat. Данные в serout.dat должны соответствовать данным в serin.dat:
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.