- •Содержание
- •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.
1.21.3 Лабораторная работа 3
Тема: изучение принципов работы прерываний контроллера MSP430G2211.
Цель работы: изучить принцип работы с прерываниями контроллера MSP430G2211, Разработать программу в соответствии с вариантом.
Ход работы.
Прерывание (англ. interrupt) – сигнал, сообщающий процессору о наступлении какого–либо события. При этом выполнение текущей последовательности команд приостанавливается и управление передаётся обработчику прерывания, который реагирует на событие и обслуживает его, после чего возвращает управление в прерванный код. Механизм прерываний создан для обеспечения максимально оперативной реакции программы на определенные события.
Пример использования прерывания.
#include "msp430G2211.h"
void main()
{ WDTCTL = WDTPW + WDTHOLD;
P1DIR &= ~BIT3;
P1REN |= BIT3;
P1IE |= BIT3; // Разрешение прерываний на P1.3
P1IES |= BIT3; // Прерывание происходит по 1/0 (отпусканию
// нажатию)
P1IFG &= ~BIT3; // Очистка флага прерываний для P1.3
P1DIR |= BIT0 + BIT6;
P1OUT |= BIT0;
P1OUT &= ~BIT6;
__bis_SR_register(GIE); // Установка флага глобального
// разре шения
// прерываний
while(true);
}
#pragma vector=PORT1_VECTOR
__interrupt void P1INT() // Обработчик прерывания
{ P1IE &= ~BIT3; // Запрет прерываний на P1.3
P1OUT ^= BIT0; // P1.0 меняет своё состояние
P1OUT ^= BIT6; // P1.6 меняет своё состояние
for(volatile unsigned int i = 30000; i .= 0; i––); // Задержка
P1IE |= BIT2; // Разрешение прерываний на P1.2
P1IFG &= ~BIT2; // Очистка флага прерываний для P1.2
}
В программе используются побитовые операции Си, «|=» установит соответствующий значению справа бит в регистре слева в единицу, а «&= ~» напротив установит его в 0.
В данном примере по нажатию на кнопку (P1.3) происходит прерывание, которое меняет состояние двух светодиодов (P1.0 и P1.6).
PxIE разрешает прерывания для пинов порта Px. Значение «1», записанное в определенный разряд позволяет получать прерывания от определенного пина.
PxIES определяет по какому уровню сигнала будет происходить прерывание. В нашем случае это означает, что единица, помещенная в конкретный разряд данного регистра, позволит получать событие нажатия кнопки. И наоборот, ноль позволит получать событие отпускания кнопки. Кнопка в данном примере «подтянута» до единицы, это означает что нажатая кнопка имеет значение ноль.
На схеме подключения (рисунок 1.26) резистор R1 нарисован показательно, на самом деле он находится внутри микроконтроллера и включается регистром P1REN.
Рисунок 1.26 – Схема подключения подтягивающего резистора
PxIFG – флаг прерывания. В случае возникновения события нажатия кнопки он будет установлен в единицу, что и вызовет обработчик прерывания (__interrupt void P1INT()). Соответственно, сразу после обработки события флаг необходимо сбросить.
Если убрать из примера строчку 31 в конце обработчика, тогда, сразу после первого нажатия кнопки, лампочки будут переключаться так, как будто вы постоянно нажимаете на кнопку.
__bis_SR_register(GIE) устанавливает флаг глобального разрешения прерываний (Global Interrupt Enable) в status register. Фактически это эквивалентно записи SR |= GIE, но обращаться к регистру SR можно только по средствам функций __bis_SR_register и __get_SR_register.
На рисунке 1.27 приведена схема битов в SR регистре.
Рисунок 1.27 – Схема битов в SR регистре
Таким образом 0, 1, 2 и 8 биты – это биты математических операций. 4, 5, 6, 7 – биты управления уровнями энергопотребления, за счёт уменьшения частоты или отключения АЛУ.
Бит 3 – это глобальное разрешение прерываний. Пока этот бит не установлен в единицу, никакие прерывания обрабатываться не будут. #pragma vector – директива, которая определяет что нижеследующая функция является обработчиком указанного прерывания.
Список всех доступных векторов прерываний можно посмотреть в заголовочном файле для Вашего контроллера. В данном случае это msp430G2211.h.
Дребезг контактов возникает при нажатии кнопки, благодаря чему обработчик прерываний будет вызван многократно. В данном примере этого удалось избежать следующим образом:
Сразу после вызова обработчика устанавливается запрет прерываний (строка 24); после переключения состояний светодиодов делается задержка (строка 29); снова устанавливается разрешение прерываний (строка 30).
Директива volatile в 29 строке кода означает, что переменная i не будет оптимизироваться при компиляции. Если её убрать, то задержки не будет.
Задания в соответствие с вариантом указаны в таблице 1.14
Таблица 1.14 – Варианты заданий для лабораторной работы 3
№ Варианта |
Задание |
1 |
Для контроллера MSP430G221 Обеспечить зажигание красного светодиода по прерыванию от кнопки S2, при повторном нажатии горит зеленый при третьем нажатии горят оба. Цикл повторяется |
2 |
Для контроллера MSP430G2211Мигают оба светодиода, по прерыванию от кнопки S2 мигают поочередно при отпускании кнопки снова мигают оба |
3 |
Для контроллера MSP430G2211 Поочередно мигают светодиоды с частотой 2Гц по прерыванию от кнопки S2 частота меняется на 1Гц при отпускании снова 2Гц |
4 |
Для контроллера MSP430G2211 По прерыванию от кнопки S2 светодиоды начинают поочередно светится с частотой 1Гц при отпускании зажигаются оба на 3с и гаснут. |
5 |
Для контроллера MSP430F5438A Обеспечить зажигание красного светодиода при одном нажатии (прерывание от кнопки S2) на кнопку, при повторном нажатии горит зеленый при третьем нажатии горят оба. Цикл повторяется |
6 |
Для контроллера MSP430F5438A Мигают оба светодиода, по прерыванию от кнопки S2 мигают поочередно при отпускании кнопки снова мигают оба |
7 |
Для контроллера MSP430F5438A Поочередно мигают светодиоды с частотой 2Гц по прерыванию от кнопки S2 частота меняется на 1Гц при отпускании снова 2Гц |
8 |
Для контроллера MSP430F5438AПо прерыванию от кнопки S2 светодиоды начинают поочередно светится с частотой 1Гц при отпускании зажигаются оба на 3с и гаснут. |
9 |
Для контроллера MSP430F5438A Зажечь оба светодиода, по прерыванию от кнопки S2 погасить |
Продолжение таблицы 1.14
10 |
Для контроллера MSP430F5438A Обеспечить зажигание светодиодов при четырехкратном нажатии (прерывании) на кнопку S2 |
11 |
Для контроллера MSP430G2211 Обеспечить зажигание светодиодов при четырехкратном нажатии (прерывании) на кнопку S2
|
12 |
Для контроллера MSP430G2211 Обеспечить зажигание светодиодов при четырехкратном нажатии (прерывании) на кнопку S2 |
Отчет должен содержать: название лабораторной работы, номер варианта, тема, цель, ход работы, выводы
В ходе работы необходимо привести блок схему алгоритма программы, листинг готовой программы с построчным описанием , электрическую принципиальную схему подключения контроллера к отладочному комплекту.
