MSP430 внешние прерывание
MSP430 внешние прерывание
Здраствуйте я только начинаю изучать МК MSP430 посоветуйте как реализовать( сконфигурировать параметри МК ) на внешние прерывание по обеим фронтам , то есть к примеру подключена кнопка если нажать загораетса светодиод если отпустить светодиод гаснет , привожу пример кода , он не мой взят из одного из сайтов.
#include <msp430g2553.h>
void main()
{
WDTCTL = WDTPW + WDTHOLD;
P1DIR &= ~BIT2;
P1REN |= BIT2;
P1IE |= BIT2; // Разрешение прерываний на P1.2
P1IES |= BIT2; // Прерывание происходит по 1/0 (отпусканию/нажатию)
P1IFG &= ~BIT2; // Очистка флага прерываний для P1.2
P1DIR |= BIT1;
P1OUT &= ~BIT1;
__bis_SR_register(GIE); // Установка флага глобального разрешения прерываний
while(true);
}
#pragma vector=PORT1_VECTOR
__interrupt void P1INT() // Обработчик прерывания
{
P1IE &= ~BIT2; // Запрет прерываний на P1.2
P1OUT |=BIT1;
for(volatile unsigned int i = 30000; i != 0; i--); // Задержка
P1IE |= BIT2; // Разрешение прерываний на P1.2
P1IFG &= ~BIT2; // Очистка флага прерываний для P1.2
}
#include <msp430g2553.h>
void main()
{
WDTCTL = WDTPW + WDTHOLD;
P1DIR &= ~BIT2;
P1REN |= BIT2;
P1IE |= BIT2; // Разрешение прерываний на P1.2
P1IES |= BIT2; // Прерывание происходит по 1/0 (отпусканию/нажатию)
P1IFG &= ~BIT2; // Очистка флага прерываний для P1.2
P1DIR |= BIT1;
P1OUT &= ~BIT1;
__bis_SR_register(GIE); // Установка флага глобального разрешения прерываний
while(true);
}
#pragma vector=PORT1_VECTOR
__interrupt void P1INT() // Обработчик прерывания
{
P1IE &= ~BIT2; // Запрет прерываний на P1.2
P1OUT |=BIT1;
for(volatile unsigned int i = 30000; i != 0; i--); // Задержка
P1IE |= BIT2; // Разрешение прерываний на P1.2
P1IFG &= ~BIT2; // Очистка флага прерываний для P1.2
}
- Реклама
Re: MSP430 внешние прерывание
Вы бы хоть конкретный кристалл указали. А то например для G-серии - никак. Там только по убывающему либо возрастающему фронту.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Re: MSP430 внешние прерывание
кристал указан в исходнике MSP430G2553 , жаль конечно ,,,
- Дмитрий
- Сверлит текстолит когтями
- Сообщения: 1219
- Зарегистрирован: Вс сен 25, 2005 10:07:31
- Откуда: Россия.
- Контактная информация:
Re: MSP430 внешние прерывание
Тогда сделайте так.slava 1 писал(а):кнопка если нажать загораетса светодиод если отпустить светодиод гаснет

Re: MSP430 внешние прерывание
"Дмитрий"
С удовольствием так поступил би , но надо отлеживать состояние пина и в случае изменения уровня на пине контролер должен проснутса из спячки и отреагировать" действием " (в зависимости от того по какому фронту било произведено преривание )
С удовольствием так поступил би , но надо отлеживать состояние пина и в случае изменения уровня на пине контролер должен проснутса из спячки и отреагировать" действием " (в зависимости от того по какому фронту било произведено преривание )
- Реклама
Re: MSP430 внешние прерывание
Запараллельте две ножки, одну настройте на передний фронт, другую на задний.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Re: MSP430 внешние прерывание
... или после того как принято прерывание по одному фронту в обработчике прерываний переконфигурируйте железо на прием прерываний по другому фронту.
Re: MSP430 внешние прерывание
"YS" так не получетса потому что все порти заняти
"Ser60" спасибо за идею завтра попробую отпишусь ,
"Ser60" спасибо за идею завтра попробую отпишусь ,
Re: MSP430 внешние прерывание
Проблему решил вставив в код "P1IES^=BIT2" всем кто откликнулса большое спасибо , особенно "Ser60" за подсказку , тему можно закривать . 
Re: MSP430 внешние прерывание
Согласно ДШ, при изменении P1IES может возникнуть флаг прерывания от порта. Я-бы посоветовал в любом случае гасить флаг прерывания при смене этого бита. Для приложений с кнопкой гашение флага реально не приведет к потери события.
Re: MSP430 внешние прерывание
"Ser60" спасибо учту


