Tool/software: Code Composer Studio
Hello,
I am trying to make interrupt program in MSP430FR2433,
but it it not working.
Can you please check my program ,
I am uploading my program.
Program :
#pragma vector=PORT2_VECTOR __interrupt void Port_2(void) { if (P2IFG & 0x80) { P2IFG &= ~0x80; P3OUT &= ~BIT2; putchar('A'); regi_fl = 1; LPM3_EXIT; } #pragma vector=USCI_A1_VECTOR __interrupt void USCIA1RX_ISR (void) { unsigned char data; while(!(UCA1IFG & UCTXIFG)); //Interrupt used, receive data theorugh interrupt data = UCA1RXBUF; putchar(data); ////transmit data regi_f2 = 1; LPM3_EXIT; } int main(void) { WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer P2SEL0 |= BIT0 | BIT1; // P2.0: XOUT; P2.1: XI1 __bis_SR_register(SCG0); // disable FLL CSCTL3 |= SELREF__REFOCLK; // Set REFO as FLL reference source CSCTL0 = 0; // clear DCO and MOD registers CSCTL1 &= ~(DCORSEL_7); // Clear DCO frequency select bits first CSCTL1 |= DCORSEL_3; // Set DCO = 8MHz CSCTL2 = FLLD_0 + 243; // DCODIV = 8MHz __delay_cycles(3); __bic_SR_register(SCG0); // enable FLL while(CSCTL7 & (FLLUNLOCK0 | FLLUNLOCK1)); // Poll until FLL is locked CSCTL4 = SELMS__DCOCLKDIV | SELA__XT1CLK; // set default XT1CLK(~32768Hz) as ACLK source, ACLK = 32768Hz // default DCODIV as MCLK and SMCLK source PM5CTL0 &= ~LOCKLPM5; // Disable the GPIO power-on default high-impedance mode //======================LED ON========================================== P3DIR |= BIT2; //LED P1DIR |= BIT3; //===================MAGNET============================================= P2DIR &= ~BIT7; //p7 --magnet, P2DIR &= ~BIT7; P2IES |= BIT7; // P2IES &= ~BIT7; // Configure P1.3 as low to high transition.. //tried with this one also P2IE |= BIT7; P2IFG &= ~BIT7; uart_1(); while(1) { __bis_SR_register(LPM3_bits | GIE); if(regi_fl > 0) { regi_fl = 0; ////pairing working P3OUT |= BIT2; } if(regi_f2 > 0) { regi_f2 = 0; // P3OUT |= BIT2; } } } void uart_1() { P2SEL0 |= BIT5|BIT6; // P6.5,6 = USCI_A0 RXD/TXD UCA1CTLW0 |= UCSWRST; UCA1CTLW0 |= UCSSEL__SMCLK; UCA1BR0 = 52; // 8000000/16/9600 UCA1BR1 = 0x00; UCA1MCTLW = 0x4900 | UCOS16 | UCBRF_1; UCA1CTLW0 &= ~UCSWRST; // Initialize eUSCI UCA1IE |= UCRXIE; // Enable USCI_A0 RX interru } void putchar(unsigned char DATA) { while(!(UCA1IFG&UCTXIFG)); UCA1TXBUF = DATA; }
Can you please check it.
I just want to know , why interrupt is not working?
regards,
Srijit