- •Содержание
- •1.6 Регистровый файл……………………….………………………...……13
- •Введение
- •1 Микроконтроллеры msp430
- •1.1 Архитектура msp430
- •1.2 Семейство микроконтроллеров msp430f5хх
- •1.3 Адресное пространство
- •1.4 Системный сброс
- •1.5 Прерывания
- •1.6 Регистровый файл
- •1.7 Режимы работы
- •1.8 Цифровые входы/выходы
- •1.9 Функционирование цифровых портов входов/выходов
- •1.10 Сторожевой таймер
- •1.11 Регистры сторожевого таймера
- •1.12 Таймер а
- •1.13 Режим прямого счёта
- •1.14 Модуль вывода таймера в режиме прямого счёта
- •1.15 Режим непрерывного счёта
- •1.16 Режим реверсивного счёта
- •1.17 Модуль вывода таймера в режиме непрерывного счёта
- •1.18 Модуль вывода таймера в режиме реверсивного счёта
- •1.19 Прерывания Таймера а
- •1.20 Регистры Таймера а
- •1.21 Лабораторный практикум
- •1.21.1 Лабораторная работа 1
- •1.21.2 Лабораторная работа 2
- •1.21.3 Лабораторная работа 3
- •1.21.4 Лабораторная работа 4
- •1.21.5 Лабораторная работа 5
- •2 Сигнальные контроллеры
- •2.1 Типовые алгоритмы dsp
- •2.2 Цифровой сигнальный контроллер tms320f2833x
- •2.2.1 Центральный Процессор (цп)
- •2.2.2 Шинная система
- •2.2.3 Структура памяти контроллера
- •2.2.4 Конвейер команд
- •2.2.5 Прямой доступ в память
- •2.2.6 Сброс – загрузка
- •2.2.7 Режимы работы f2833x
- •2.2.8 Модуль защиты кода
- •2.2.9 Подсистема цифрового ввода – вывода
- •2.2.10 Входной фильтр
- •2.2.11 Модуль тактового генератора
- •2.2.12 Сторожевой таймер
- •2.2.13 Подсистема прерываний f2833x
- •Регистр флагов прерываний (ifr)
- •Регистр разрешения прерываний (ier)
- •2.2.14 Таймеры cpu f2833x
- •2.2.15 Модули ePwm (шим)
- •2.3 Лабораторный практикум
- •2.3.1 Лабораторная работа 2.1
- •2.3.2 Лабораторная работа 2.2
- •2.3.3 Лабораторная работа 2.3
- •2.3.4 Лабораторная работа 2.4
- •2.3.5 Лабораторная работа 2.5
- •2.3.6 Лабораторная работа 2.6
- •2.3.7 Лабораторная работа 2.7
- •2.3.8 Лабораторная работа 2.8
- •2.3.9 Лабораторная работа 2.9
- •2.3.10 Лабораторная работа 2.10
- •2.3.11 Лабораторная работа 2.11
- •2.3.12 Лабораторная работа 2.12
- •2.3.13 Лабораторная работа 2.13
- •10/2012. Формат 60 х 84/16. Ум. Друк. Арк. .
- •84313, М. Краматорськ, вул. Шкадінова, 72.
Регистр флагов прерываний (ifr)
15 14 13 12 11 10 9 8
RTOSINT |
DLOGINT |
INT14 |
INT13 |
INT12 |
INT11 |
INT10 |
INT9 |
7 6 5 4 3 2 1 0
INT7 |
INT6 |
INT5 |
INT4 |
INT3 |
INT2 |
INT1 |
INT0 |
Регистр разрешения прерываний (ier)
15 14 13 12 11 10 9 8
RTOSINT |
DLOGINT |
INT14 |
INT13 |
INT12 |
INT11 |
INT10 |
INT9 |
7 6 5 4 3 2 1 0
INT7 |
INT6 |
INT5 |
INT4 |
INT3 |
INT2 |
INT1 |
INT0 |
Рисунок 2.26 – Регистры системы прерываний
Биты регистров можно установить и сбросить программно:
/*** ручная установка/стирание IFR ***/
extern сregister volatile unsigned int IFR;
IFR |= 0x0008; //установить INT4 в IFR
IFR &= 0xFFF7; //запретить INT4 в IFR
/*** Регистр разрешения прерываний ***/
extern сregister volatile unsigned int IER;
IER |= 0x0008; //разрешение INT4 в IER
IER &= 0xFFF7; //запрещено INT4 в IER
По этим командам компилятор генерирует атомарные инструкции для установления/стирания регистров. Если происходит прерывание в момент записи в IFR, то прерывание имеет больший приоритет. IFR (биты) очищаются, когда прерывание подтверждено ЦП. После сброса регистры очищаются.
Бит глобального разрешения/запрещения прерываний (INTM) находится в регистре ST1 (бит 0).
– разрешение: INTM = 0;
– запрещение: INTM = 1 (значение после сброса).
Модификация INTM выполняется только через ассемблерный код:
/*** Глобальные прерывания***/
asm(“ CLRC INTM”); //глобальное разрешение прерываний
asm(“ SETC INTM”); //глобальное запрещение прерываний
Все 96 возможных источников прерываний группируются в 12 PIE–линий, 8 источников на линию (рис.2.27). Для разрешения/запрещения отдельных источников, необходимо запрограммировать другую группу регистров: «PIEIFRx» и «PIEIERx» (рис.2.28).
Рисунок 2.27 – Расширение периферийных прерываний – PIE
Рисунок 2.28 – PIE Регистры
Пример программирования этих регистров:
#include “DSP2833x_Device.h”
PieCtrlRegs.PIEIFR1.bit.INTx4 =1; //установка IFR для XINT1 в PIE группе1
PieCtrlRegs.PIEIER3.bit.INTx5 = 1; //разрешение CAPINT1 в PIE группа 3 PieCtrlRegs.PIEACK.all = 0x0004; //подтверждение PIE группа 3
PieCtrlRegs.PIECTRL.bit.ENPIE = 1; //разрешение PIE
Все источники прерывания подключаются к линиям прерывания согласно таблице назначения (табл.2.5).
Примеры: ADCINT = INT1.6; T2PINT = INT3.1; SCITXINTA = INT9.2
Загрузка таблицы векторов после сброса показана на рисунке 2.29.
В таблице 2.5 показано размещение векторов в памяти, адреса 0x00 0D40 по 0x00 0DFF использованы в качестве области расширения. Теперь у нас есть 32 бита для каждого индивидуального вектора прерывания PIEINT1.1 до PIEINT12.8.
Алгоритм инициализации таблицы векторов показан на рисунке 2.30.
После того, как прерывание подтверждено ЦП, начинается автоматическая аппаратная контекстная последовательность. Она включает автоматическое сохранение 14 внутренних регистров со всеми важными внутренними битами управления и статуса, и загружает счетчик команд (PC) адресом ISR. Последовательность действий, выполняемая аппаратурой, в ответ на прерывание показана в таблице 2.6, а сохраняемые регистры в таблице 2.7.
Таблица 2.5 – F2833x PIE Таблица назначения прерываний
Рисунок 2.29 – Таблица векторов прерываний после сброса
Т аблица 2.5 – Размещение векторов PIE (ENPIE = 1)
Название |
Адрес вектора PIE |
Описание векторов PIE |
Сброс |
0x00 0D00 |
Вектор сброса |
INT1 |
0x00 0D02 |
INT1 отображен ниже |
… … … … |
… … … … |
… …отображен ниже … … |
INT12 |
0x00 0D18 |
INT12 отображен ниже |
INT13 |
0x00 0D1A |
XINT13 вектор прерывания Таймер1(RTOS) |
INT14 |
0x00 0D1C |
Таймер 2 – вектор RTOS |
Datalog |
0x00 0D1D |
Вектор регистрации данных |
… … … … |
… … … … |
… … … … |
USER11 |
0x00 0D3E |
Пользовательское прерывание |
INT1.1 |
0x00 0D40 |
PIEINT1.1 вектор прерывания |
… … |
… … |
… … |
INT1.8 |
0x00 0D4E |
PIEINT1.8 вектор прерывания |
… … |
… … |
… … |
INT12.1 |
0x00 0DF0 |
PIEINT12.1 вектор прерывания |
… … |
… … |
… … |
INT12.8 |
0x00 0DFE |
PIEINT12.8 вектор прерывания |
|
|
|
Рисунок 2.30 – Инициализация таблицы векторов
Таблица 2.6 – Реакция на прерывание
Действия ЦП |
Описание |
Registers ® stack |
Автоматическое сохранение 14 регистров |
0 –> IFR (бит) |
Стереть соответствующий бит в IFR |
0 –> IER (бит) |
Стереть соответствующий бит в IER |
1 –> INTM/DBGM |
Запрещение прерываний/событий отладки |
Вектор –> PC |
Загрузка PC адресом вектора прерывания |
Стирает другие биты статуса |
Стирает LOOP, EALLOW, IDLESTAT |
Таблица 2.7 – Автоматически сохраняемые регистры
T |
ST0 |
AH |
AL |
PH |
PL |
AR1 |
AR0 |
DP |
ST1 |
DBSTAT |
IER |
PC(старшее слово) |
PC(младшее слово) |
