// Функция находится в библиотечном файле DSP280x_Gpio.c [2];
// позволяет задать конфигурацию модуля GPIO, используемую по умолчанию.
// InitGpio(); // В данном случае не используется.
// Шаг 3. Очистить все прерывания и инициализировать таблицу векторов прерываний блока PIE:
// Запретить прерывания на уровне ЦПУ.
DINT;
// Задать изначальное состояние управляющих регистров блока PIE:
// все прерывания блока PIE запрещены, флаги прерываний сброшены.
InitPieCtrl(); // Размещение – файл DSP280x_PieCtrl.c [2]
// Запретить прерывания на уровне ЦПУ и очистить все флаги прерываний:
IER = 0x0000;
IFR = 0x0000;
// Инициализировать таблицу векторов прерываний указателями
// на функции-обработчики прерываний.
// Это действие приведет к заполнению всей таблицы, включая прерывания,
// которые не используются в данном примере. Это может пригодиться в целях отладки.
InitPieVectTable(); // Функция располагается в файле DSP280x_PieVect.c [2].
// Используемые в данном примере прерывания перераспределяются соответственно
// используемым в файле функциям.
EALLOW; // Команда, необходимая для разрешения изменения содержимого ряда служебных защищенных регистров
PieVectTable.TINT0 = &cpu_timer0_isr;
EDIS; // Запрет изменения содержимого защищенных регистров
// Шаг 4. Инициализация всех периферийных модулей:
// Функция находится в файле DSP280x_InitPeripherals.c
// InitPeripherals(); // В этом примере не используется
InitCpuTimers(); // Здесь инициализируется только Таймер 0 ЦПУ
// Конфигурирование таймера таким образом, чтобы прерывание происходило 1 раз
// в секунду:
// Частота тактирования ЦПУ - 100 МГц, период счета - 1000000 (в мкс)
ConfigCpuTimer(&CpuTimer0, 100, 1000000);
StartCpuTimer0();
// Шаг 5. Пользовательский код, разрешение прерываний:
// Разрешить прерывания по линии INT1 ЦПУ, которая подключена к Таймеру 0:
IER |= M_INT1;
// Разрешить прерывание от Таймера 0 в блоке PIE: Группа 1 прерывание 7
PieCtrlRegs.PIEIER1.bit.INTx7 = 1;
// Разрешить глобальные прерывания и обработку событий отладки в реальном
// масштабе времени, имеющим более высокий приоритет:
EINT; // Разрешение глобального прерывания INTM
ERTM; // Разрешение глобального прерывания реального времени DBGM
// Шаг 6. Пустой бесконечный цикл:
for(;;);
}
interrupt void cpu_timer0_isr(void)
{
CpuTimer0.InterruptCount++; // Счетчик прерываний
// Подтверждение прерывания
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
}
3. ЗАДАНИЯ К ЛАБОРАТОРНОЙ РАБОТЕ
Общие
1) Проанализировать файлы DSP280x_PieVect.h, DSP280x_PieCtrl.h, DSP280x_PieVect.c, DSP280x_PieCtrl.c (файл ПРИЛОЖЕНИЯ).
2) Подключить отладочную плату P07162 к ПК, согласно рекомендациям руководства к плате.
3) Открыть учебный проект (C:\Projects\28xx\ Lab2\Lab2.pjt: Projects ® Open ® Lab2.pjt), и предварительно проанализировав текст исходного файла main.cpp, запустить проект на компиляцию.
4) Запрограммировать процессор. При успешном завершении процедуры наблюдается мигание светодиода, установленного на отладочной плате, с определенной частотой. При выполнении двух последних пунктов придерживаться методики, изложенной в указаниях к лабораторной работе № 1.
Если программа не выполняется, проверьте:
- есть ли в папке лабораторной работы Lab2 файл program.hex;
- включено ли питание платы, подключена ли плата к ПК;
- правильно ли задан номер COM-порта;
- не занят ли порт другой программой (например, Termina1.exe).
Сбросьте процессор кнопкой на стенде и повторите загрузку.
Если по-прежнему ничего не получается, позовите преподавателя.
Индивидуальные
1) Измените программу таким образом, чтобы частота мигания светодиода увеличилась/уменьшилась, используя счетный регистр таймера. Объясните результат
2) Измените программу таким образом, чтобы частота мигания светодиода увеличилась/уменьшилась, используя регистр делителя таймера. Объясните результат.
ЛИТЕРАТУРА
1. SPRU712: TMS320C28xx, 2801x, 2804x DSP system control and interrupts. Reference guide.
2. SPRC191: C280x/C2801x C/C++ header files and peripheral examples library. V. 1.7.
3. SPRAA85B: Programming TMS320x28xx and 28xxx peripherals in C/C++
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.