MSP430

MSP430, CCS, Gpio Interrupt

CoyoteUgly 2018. 9. 3. 17:30

MSP430,  CCS, Gpio Interrupt



msp430.h 를 사용하는 소스입니다.


0. 참고 자료



출처: http://coyoteugly.tistory.com/185 [마이콤 개발자를 위한 여행]

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. 결과



'MSP430' 카테고리의 다른 글

MSP430, CCS, 16MHz Clock  (0) 2018.09.03
MSP430, CCS, 8MHz Clock  (0) 2018.09.03
MSP430. CCS, Timer Interrupt  (0) 2018.09.03
MSP430, CCS, BlinkLED-2  (0) 2018.09.03
MSP430, Code Composer Studio 시작하기 [ BlinkLED ]  (0) 2018.08.27