UART send same character continuously though i sent it only once. my following program run correctly in debug mode but once i came out of debug mode controller send that character continuously. please suggest me suitable changes in following code.
#include <msp430.h>
#include <stdio.h>
/*
* main.c
*/
volatile unsigned char transmit;
void UART_send_data(unsigned char character) {
transmit = character;
UCA0IE |= UCTXIE;
UCA0IFG |= UCTXIFG;
}
}
int main(void) {
WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer
P3SEL = BIT3+BIT4; // P3.4,5 = USCI_A0 TXD/RXD
UCA0CTL1 |= UCSWRST; // Put state machine in reset
UCA0CTL1 |= UCSSEL_2; // SMCLK
UCA0BR0 = 6; // 1MHz 9600
UCA0BR1 = 0; // 1MHz 9600
UCA0MCTL = UCBRS_0 + UCBRF_13 + UCOS16; // Modln UCBRSx=0, UCBRFx=0,
UCA0CTL1 &= ~UCSWRST; // Initialize USCI state machine
__enable_interrupt();
UART_send_data(0x55);
while(1);
}
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
#pragma vector=USCI_A0_VECTOR
__interrupt void USCI_A0_ISR(void)
#elif defined(__GNUC__)
void __attribute__ ((interrupt(USCI_A0_VECTOR))) USCI_A0_ISR (void)
#else
#error Compiler not supported!
#endif
{
switch(__even_in_range(UCA0IV,4))
{
case 0:break; // Vector 0 - no interrupt
case 2: break;
case 4: // Vector 4 - TXIFG
UCA0TXBUF = transmit;
UCA0IFG &= ~UCTXIFG;
break;
default: break;
}
}