Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Ход работы. В данной работе, для мигания светодиодом используется таймер А0





В данной работе, для мигания светодиодом используется таймер А0. Он будет периодически переключать вывод порта Р1.0, тем самым управляя свечением светодиода. Использование таймера преследует еще одну цель. Так как микроконтроллер, у которого постоянно идет пустая работа в цикле, крайне неэффективен с точки зрения энергопотребления, чтобы использовать все его возможности нужно научиться работать с прерываниями, а на остальное время переводить его в состояние пониженного энергопотребления. Это особенно важно, если питание происходит от батарей, что позволяет продлить срок службы прибора, особенно автономного, доступ к которому затруднен.

Пример программы, с использованием задержки посредством таймера, приведен ниже.

 

#include <msp430x11x1.h>
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Останавливаем сторожевой таймер WDT
P1DIR |= 0x01; // P1.0 на выход
TACCTL0 = CCIE; // Разрешаем прерывание CCR0
CCR0 = 50000;
TACTL = TASSEL_2 + MC_2 + TAIE;// Тактирование от SMCLK, непрерывный режим
_BIS_SR(LPM0_bits + GIE); //Разрешаем глобальные прерывания и

// переходим в режим пониженного

// энергопотребления
while (1)
{
}
}
// Timer A0 interrupt service routine
#pragma vector=TIMERA0_VECTOR
__interrupt
void Timer_A ( void )
{
P1OUT ^= 0x01; // Переключаем P1.0
}

 

Принцип работы программы следующий.

TACTL = TASSEL_2 + MC_2 + TAIE; // Тактирование от SMCLK, непрерывный режим.

Перед запуском таймера надо выбрать источник тактирования. Таймер может тактироваться от 4 разных источников – двух внутренних: ACLK, SMCLK и двух внешних: TACLK или INCLK. Выбор источника тактовых импульсов осуществляется при помощи установки битов TASSELx (находятся в регистре TACTL). В данном случае используем тактирование от SMCLK (TASSEL_2 как раз и выбирает этот сигнал, определение можно посмотреть как обычно в заголовочном файле используемого микроконтроллера). Т. к. предделитель мы не используем, то биты его управления IDx не используются. MC_2 определяет режим работы таймера, в данном случае это непрерывный режим работы.

Бит TAIE разрешает работу прерывания от Timer A0. Непрерывный режим характеризуется тем, что таймер считает от 0 до 0xFFFFh, как только он дойдет до 0xFFFFh происходит сброс и генерация прерывания с установкой флага TAIFG. Одним из возможных способов применения данного режима – это генерация временных интервалов или частот. В данном примере формируется постоянная частота, управляющая выходом P1.0.
В строке «TACCTL0 = CCIE; // Разрешаем прерывание CCR0» – разрешается прерывание от канала сравнения CCR0. Тем самым при совпадении значения в регистре TAR с регистром CCR0 будет генерироваться прерывание. Для задания значения, при котором будет генерироваться прерывание, необходимо в регистр CCR0 занести число CCR0 = 50000.

Далее разрешаем глобальные прерывания и переводим микроконтроллер в режим пониженного энергопотребления LPM0 (_BIS_SR(LPM0_bits + GIE);//Разрешаем глобальные прерывания и переходим в режим пониженного энергопотребления).

Пример программы, обработчик прерывания от Timer A0.

 

#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
{
P1OUT ^= 0x01; // Переключаем P1.0
}

 

В этом обработчике происходит смена значения на выводе Р1.0 при помощи обычной операции XOR.

Задание на лабораторную работу находятся в таблице 1.15.

 

Таблица 1.15 – Задания к лабораторной работе 4

№ варианта Задание
  Для контроллера MSP430G2211 Мигать красным светодиодом с частотой 1Гц Задержку осуществить на таймере А0
  Для контроллера MSP430G2211 Мигать красным светодиодом с частотой 2Гц Задержку осуществить на таймере А0
  Для контроллера MSP430G2211 Мигать красным светодиодом с частотой 0,5Гц Задержку осуществить на таймере А0
  Для контроллера MSP430G2211 Поочередно мигать красным и зеленым светодиодами с частотой 1Гц Задержку осуществить на таймере А0
  Для контроллера MSP430G2211 Поочередно мигать красным и зеленым светодиодами с частотой 1Гц Задержку осуществить на таймере А0
  Для контроллера MSP430G2211 Поочередно мигать красным и зеленым светодиодами с частотой 0,5Гц Задержку осуществить на таймере А0
  Для контроллера MSP430G2211 Поочередно мигать красным и зеленым светодиодами с частотой 2Гц Задержку осуществить на таймере А01с
  Для контроллера MSP430G2211 Оба диода мигают с частотой 1Гц Задержку осуществить на таймере А01с

Продолжение таблицы 1.15

  Для контроллера MSP430G2211 Оба диода мигают с частотой 0,5Гц Задержку осуществить на таймере А01с
  Для контроллера MSP430G2211 Оба диода мигают с частотой 2Гц Задержку осуществить на таймере А01с

 

Отчет должен содержать:

- название лабораторной работы, номер варианта, тема, цель, ход работы, выводы;

- в ходе работы необходимо привести блок схему алгоритма программы, листинг готовой программы с построчным описанием, электрическую принципиальную схему подключения контроллера к отладочному комплекту.

 

 

Date: 2015-06-06; view: 612; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию