MSP430
MSP430, CCS, Gpio Interrupt
CoyoteUgly
2018. 9. 3. 17:30
MSP430, CCS, Gpio Interrupt
※ msp430.h 를 사용하는 소스입니다.
0. 참고 자료
1. 소스 설명
Port_1 또는 PORT1_ISR 인터럽트 함수를 통해 동작됩니다.
full 소스는 아래 github를 통해 확인하세요.
#include <msp430.h>
#if 1
#pragma vector = PORT1_VECTOR __interrupt void Port_1(void) { if (P1IFG & BIT1) { P1IFG &= ~BIT1; //Clear Pin 1.1 flag P1OUT ^= BIT0; // Toggle P1.0 } }
#else
// next isr is working well #pragma vector = PORT1_VECTOR __interrupt void PORT1_ISR(void) { switch(__even_in_range(P1IV, P1IV_P1IFG7)) { case P1IV_NONE : break; case P1IV_P1IFG0 : break; case P1IV_P1IFG1 : P1OUT ^= BIT0; // Toggle P1.0 break; case P1IV_P1IFG3 : break; case P1IV_P1IFG4 : break; case P1IV_P1IFG5 : break; case P1IV_P1IFG6 : break; case P1IV_P1IFG7 : break; } }
#endif
void main(void) {
// ....
P1DIR |= BIT0; // Set P1.0 to output direction
P1DIR &= ~BIT1; // Set P1.1 to input P1REN |= BIT1; // Enable internal pull-up/down resistors P1OUT |= BIT1; //Select pull-up mode for P1.1
P1IES |= BIT1; //Have flag set on High to Low P1IE = BIT1; //enable interrupts for Pin 1.1 P1IFG &= ~BIT1; //Clear Pin 1.1 flag
_BIS_SR(LPM0_bits + GIE); // Enter LPM0 w/ interrupt }
|
2. 소스
3. 결과