ЛР4(б) > Механизм управления обработкой прерываний DSP процессора TMS320F2812
Статьи по теме
- ЛР5 > Аналогово-цифровой преобразователь процессора TMS320F2812
- ЛР4(г) > Разработка программы обработки прерываний от таймера процессора TMS320F2812
- ЛР4(в) > Использование таймера в процессоре TMS320F2812
- ЛР4(а) > Система прерываний процессора TMS320F2812. Начальная инициализация
- ЛР3 > Работа с портами ввода/вывода процессора TMS320F2812
- ЛР2 > Визуализация данных в среде Code Composer Studio на примере выполнения логических и арифметических операций
- ЛР1 > Знакомство со средой Code Composer Studio. Первый проект
Тема: Источники запросов прерываний, регистр флагов прерываний, маскируемые прерывания, расширенная таблица векторов прерывания
Рассмотрим более подробно механизм управления обработкой прерывания процессора TMS320F2812. На рисунке 3 показан принцип мультиплексирования запросов на прерывание с применением контроллера управления прерываниями от периферии. Все 96 источников запросов на прерывание группируются в 12 групп по 8 источников в каждой. Запросы на прерывание от каждой группы подаются на одну из двенадцати линий маскируемых запросов на прерывание процессорного ядра INT1 – INT12. Поступающие запросы на прерывание фиксируются в регистре флагов прерывания IFR (логическая «1» соответствует наличию запроса на прерывание). Структура регистра флагов прерывания показана на рисунке 4. После поступления запроса на прерывание, проверяется состояние регистра масок прерывания IER. Структура регистра масок прерывания соответствует структуре регистра флагов прерывания (см. рис. 4).
Скачать Материалы к лабораторной работе по ЦСП ТМS320F2812 №4.
Рисунок 3. Мультиплексирование запросов на прерывание в ЦСП TMS320F2812 [1].
Если в регистре IER для данного прерывания установлена логическая «1» (т.е., разрешена его обработка), то запрос на прерывание поступает дальше. Если обработка данного запроса на прерывание запрещена (в соответствующем бите регистра IER записан логический «0»), то поступивший запрос игнорируется. Существует еще один регистр масок прерывания – DBGIER, структура которого полностью совпадает со структурой регистра IER. Он предназначен для маскирования запросов на прерывание в том случае, когда процессор находится в состоянии останова и используется отладочный режим в реальном масштабе времени [2].
Рисунок 4. Структура регистров флагов прерывания IFR и масок прерывания IER [2].
Последним проверяется состояние бита запрета всех маскируемых запросов на прерывание INTM (бит 0 в регистре статуса ST1 [2]). Если данный бит установлен в состояние логического «0» (разрешение обработки маскируемых запросов на прерывание), то поступивший запрос на прерывание будет обработан процессорным ядром. При установке этого бита в состояние логической «1» (запрет обработки маскируемых запросов на прерывание), все поступающие запросы на прерывание от маскируемых источников будут игнорироваться.
Для сгруппированных в двенадцать групп источников запросов на прерывания (рисунок 5) используются свои регистры флагов прерывания PIEIFR1 – PIEIFR12 и свои регистры масок прерывания PIEIER1 – PIEIER12 (по одной паре для каждой группы). Принцип их работы аналогичен регистрам IFR и IER, только значащими у них являются восемь младших разрядов. Настройки контроллера управления прерываниями от периферии выполняются с помощью двух управляющих регистров – регистра управления PIECTRL (PIE control register) и регистра разрешения PIEACK (PIE acknowledge register).
Рисунок 5. Распределение источников запросов на прерывание процессора TMS320F2812 по группам [1].
Адреса регистров флагов прерывания, регистров масок прерывания и управляющих регистров контроллера управления прерываниями от периферии указаны в таблице 3 [5] (располагаются в области памяти данных).
Таблица 3. Адреса регистров контроллера управления прерываниями от периферии [5].
Регистр |
Адрес |
Назначение |
PIECTRL |
0x00 0CE0 |
Регистр управления PIE |
PIEACK |
0x00 0CE1 |
Регистр разрешения PIE |
PIEIER1 |
0x00 0CE2 |
Регистр масок прерывания группы 1 |
PIEIFR1 |
0x00 0CE3 |
Регистр флагов прерывания группы 1 |
PIEIER2 |
0x00 0CE4 |
Регистр масок прерывания группы 2 |
PIEIFR2 |
0x00 0CE5 |
Регистр флагов прерывания группы 2 |
PIEIER3 |
0x00 0CE6 |
Регистр масок прерывания группы 3 |
PIEIFR3 |
0x00 0CE7 |
Регистр флагов прерывания группы 3 |
PIEIER4 |
0x00 0CE8 |
Регистр масок прерывания группы 4 |
PIEIFR4 |
0x00 0CE9 |
Регистр флагов прерывания группы 4 |
PIEIER5 |
0x00 0CEA |
Регистр масок прерывания группы 5 |
PIEIFR5 |
0x00 0CEB |
Регистр флагов прерывания группы 5 |
PIEIER6 |
0x00 0CEC |
Регистр масок прерывания группы 6 |
PIEIFR6 |
0x00 0CED |
Регистр флагов прерывания группы 6 |
PIEIER7 |
0x00 0CEE |
Регистр масок прерывания группы 7 |
PIEIFR7 |
0x00 0CEF |
Регистр флагов прерывания группы 7 |
PIEIER8 |
0x00 0CF0 |
Регистр масок прерывания группы 8 |
PIEIFR8 |
0x00 0CF1 |
Регистр флагов прерывания группы 8 |
PIEIER9 |
0x00 0CF2 |
Регистр масок прерывания группы 9 |
PIEIFR9 |
0x00 0CF3 |
Регистр флагов прерывания группы 9 |
PIEIER10 |
0x00 0CF4 |
Регистр масок прерывания группы 10 |
PIEIFR10 |
0x00 0CF5 |
Регистр флагов прерывания группы 10 |
PIEIER11 |
0x00 0CF6 |
Регистр масок прерывания группы 11 |
PIEIFR11 |
0x00 0CF7 |
Регистр флагов прерывания группы 11 |
PIEIER12 |
0x00 0CF8 |
Регистр масок прерывания группы 12 |
PIEIFR12 |
0x00 0CF9 |
Регистр флагов прерывания группы 12 |
Запросы на прерывание, связанные с векторами INT13 и INT14, поступают непосредственно в процессорное ядро минуя контроллер управления прерываниями от периферии.
Структура регистра управления PIECTRL представлена на рисунке 6. Этот регистр доступен для чтения (запись разрешена только в младший значащий разряд).
Рисунок 6. Структура регистра PIECTRL [5]
В поле PIEVECT (биты 15 – 1 данного регистра) фиксируется адрес вектора прерывания в расширенной таблице векторов прерывания для активного запроса. Поле ENPIE (бит 0 данного регистра) служит для разрешения обращения к расширенной таблице векторов прерывания. Установка этого бита в состояние логической «1» разрешает использовать расширенную таблицу векторов прерывания контроллера управления прерываниями от периферии. Установка бита ENPIE в состояние логического «0» указывает процессору на доступность таблицы векторов прерывания, расположенной только в области загрузочной памяти (начиная с адреса 0x3F FFC0).
Структура регистра разрешения PIEACK представлена на рисунке 7. Этот регистр доступен для чтения и записи.
Рисунок 7. Структура регистра PIEACK [5]
Биты 15 – 12 этого регистра не используются (зарезервированы). Поле PIEACK (биты 11 – 0 данного регистра) используется для разрешения выдачи контроллером управления прерываниями от периферии запроса на прерывание процессорному ядру. Установка одного из битов в состояние логической «1» разрешает передачу запроса на прерывание от соответствующей группы устройств процессорному ядру. Запись логического «0» – запрещает передачу. Бит 0 регистра PIEACK -соответствует линии INT1, а бит 11 – соответственно линии INT12.
Расширенная таблица векторов прерывания располагается в области ОЗУ (память данных ЦСП) по адресам 0x00 0D00 – 0x00 0DFF. Так как эта область памяти не является энергонезависимой, то ее вначале необходимо инициализировать (выполнить загрузку расширенной таблицы векторов прерывания). Распределение адресного пространства расширенной таблицы векторов прерывания показано в таблице 4.
Таблица 4. Распределение адресного пространства расширенной таблицы векторов прерывания [5].
Вектор |
Абсолютный адрес |
Описание |
RESET |
0x00 0D00 |
Не используется. Этот вектор всегда связан с адресом 0x3F FFC0 ПЗУ |
INT1 |
0x00 0D02 |
Не используется. Вектор перенаправлен на группу 1. |
… |
… |
… |
INT12 |
0x00 0D18 |
Не используется. Вектор перенаправлен на группу 12. |
INT13 |
0x00 0D1A |
Внешнее прерывание XINT13 или прерывание от таймера 1. |
INT14 |
0x00 0D1C |
Прерывание от таймера 2. |
DATALOG |
0x00 0D1E |
Прерывание для отладки. |
… |
… |
… |
USER12 |
0x00 0D3E |
Пользовательское программное прерывание. |
INT1.1 |
0x00 0D40 |
Прерывание 1 группы 1. |
… |
… |
… |
INT1.8 |
0x00 0D4E |
Прерывание 8 группы 1. |
… |
… |
… |
INT12.1 |
0x00 0DF0 |
Прерывание 1 группы 12. |
… |
… |
… |
INT12.8 |
0x00 0DFE |
Прерывание 8 группы 12. |