ЦПУ фиксирует приоритет прерываний для линий INT1 – INT2. Блок PIE контролирует приоритет каждого из 8 прерываний группы. Таблица векторов защищена от непреднамеренной записи командой EALLOW.
Из 96 возможных аппаратных прерываний [1] фактически используется только 43. Остальные прерывания зарезервированы и могут быть использованы в новых процессорах по мере развития их семейства. Однако зарезервированные прерывания могут быть использованы в качестве программных прерываний. Для этого они должны быть доступны (разрешены) на уровне регистра флагов прерываний PIEIFRx при условии, что ни одно из прерываний в пределах используемой группы не используется в качестве аппаратного. В противном случае прерывания от периферийных модулей могут быть потеряны из-за случайной очистки их флагов в процессе модификации регистра PIEIFR.
Резюмируя, можно предложить два варианта безопасного использования зарезервированных прерываний в качестве программных прерываний:
1. Ни для одного периферийного модуля (в пределах группы) прерывания не используются (не назначены).
2.
1.4. Конфигурирование блока PIE
Краткое описание регистров блока PIE
Регистры управления блока PIE и их краткое описание приведены в табл. 1.1.
Таблица 1.1 Сводная таблица регистров управления блока PIE |
|||
Обозначение |
Адрес hex |
Размер (x16) |
Описание |
PIECTRL |
0x0000 – 0CE0 |
1 |
Управляющий регистр блока PIE (PIE Control) |
PIEACK |
0x0000 – 0CE2 |
1 |
Регистр подтверждения (PIE Acknowledge) |
PIEIER1 – PIEIER12 |
1 x 12 |
Регистры разрешения прерываний групп INT1 – INT12 (PIE INTx Group Enable) |
|
PIEIFR1 – PIEIFR12 |
1 x 12 |
Регистры флагов прерываний групп INT1 – INT12 (PIE INTx Group Flag Register) |
Обращение к управляющим регистрам и программирование блока PIE
При обращении используются назначенные регистрам мнемоника и определения (в терминах битовых полей и структур, сведенных в регистровые файлы), прописанные в библиотечном заголовочном файле DSP280x_PieCtrl.h [2]. Его листинг приведен в файле ПРИЛОЖЕНИЯ. Более подробная информация об используемом при программировании периферийных модулей подходе приведена в методических указаниях к лабораторной работе № 1 и в [3]. Ниже для примера представлен фрагмент текста программы, реализующей функцию инициализации регистров блока PIE – InitPieCtrl(). Исходный текст функции является частью библиотечного файла DSP280x_PieCtrl.c (см. файл ПРИЛОЖЕНИЯ) [2], содержащего элементарные процедуры для работы с блоком PIE.
void InitPieCtrl(void)
{
// Запрещение прерываний на уровне ЦПУ:
DINT;
// Отключение блока PIE
PieCtrlRegs.PIECTRL.bit.ENPIE = 0;
// Очистка всех регистров разрешения прерываний PIEIER:
PieCtrlRegs.PIEIER1.all = 0;
.
.
.
PieCtrlRegs.PIEIER12.all = 0;
// Очистка всех регистров флагов прерываний PIEIFR:
PieCtrlRegs.PIEIFR1.all = 0;
.
.
.
PieCtrlRegs.PIEIFR12.all = 0;
}
2. ТАЙМЕРЫ ЦПУ
2.1. Общие сведения
ЦПУ процессоров семейства 280x включает в себя 3 32-разрядных таймера (Timer0/1/2). Timer1 и Timer2 ЦПУ зарезервированы для выполнения системных функций, например, таких как DSP/BIOS. Если в приложении не предусмотрено использование функций DSP/BIOS, то Timer2 может быть использован в приложениях пользователя. Timer0 непосредственно предназначен к использованию программистом. На рис. 2.1 представлена функциональная схема Таймера 0 ЦПУ.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.