Part Number: MSP430FR2433
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