реклама на сайте
подробности

 
 
> Как организовать прерывание по уровню на MSP?
Alex2172
сообщение Feb 10 2005, 11:03
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 242
Регистрация: 25-08-04
Пользователь №: 537



Портирую код с ATmega на MSP430. Нужно прерывание по уровню, которого на MSP нет (по крайней мере на MSP430F149).
Можно ли как-нибудь программно на MSP организовать прерывание по уровню?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Alex2172
сообщение Feb 10 2005, 11:13
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 242
Регистрация: 25-08-04
Пользователь №: 537



Можно ли например организовать прерывание по уровню следующим образом...
На примере прерывания по уровню high на линии P1.0:

//==============================================
#define INT0_LINE 0x1

#define INT0_INIT() do {\
P1SEL &= ~INT0_LINE;/*alt. func*/ \
P1DIR &= ~INT0_LINE;/*as input*/\
P1IES &= ~INT0_LINE;/*rising edge */\
P1IFG &= ~INT0_LINE;/*clear pending int*/\
} while (0)

#define INT0_ENABLE() do{ \
P1IE |= INT0_LINE;\
P1IFG |= (INT0_LINE & P1IN);/*!!!!!!!!!!!!!*/\
}while(0)

#define INT0_DISABLE() do{ \
P1IE &= ~INT0_LINE;\
}while(0)

#define INT0_CLEAR() do{ \
P1IFG &= ~INT0_LINE;/* clear interrupt flag*/\
}while(0)
//==============================================
#pragma vector=PORT1_VECTOR
__interrupt void PORT1_INT(void)
{
__disable_interrupt();
if (P1IFG & INT0_LINE){ // if rising edge occured
INT0_DISABLE();

//... do something

INT0_CLEAR();
INT0_ENABLE();
}
}
//==============================================

Фишка в том, что когда делаем прерывание доступным - INT0_ENABLE(), то проверяем уровень линии и, если уровень-high, то вызываем прерывание. Если же уровень определен как low, то прерывание вызывается когда возникает rising edge.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 25th August 2025 - 07:01
Рейтинг@Mail.ru


Страница сгенерированна за 0.01408 секунд с 7
ELECTRONIX ©2004-2016