Quantcast
Channel: Forums - Recent Threads
Viewing all articles
Browse latest Browse all 262198

CCS/MSP430F5529: Problem in communication with UART while using timer with interrupt

$
0
0

Part Number: MSP430F5529

Tool/software: Code Composer Studio

Hello Sir/Mam,

I have two TI controllers one is MSP430f5529 and other is MSP430f5329.

I setup UART  interrupt communication protocol for communicating each other(full duplex communication).

Now the 5529 code part also have a timer setup with interrupt 

The problem is my timer is running in background and in the while part i send some data to other msp5329 for a certain condition.

when my program reaches to send part of uart its automatically goes to UART interrupt part. and after that return to send function

i dont know how to solve this strange problem because timer have different interrupt and uart has different.

Here is my code of MSP430F5529.  

void main()
{
Timer();
uartInit();
__enable_interrupt();
while(1)
{
//certain condition
send_uart("abcdef");
}
}

void Timer()
{
  TA0CCTL0 = CCIE;                          // CCR0 interrupt enabled
  TA0CCR0 = 1850;
  TA0CTL = TASSEL_2 + MC_1 + TACLR;
}
/////////////////////timer interrupt part////////////////////////////////////////////////////////
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
#pragma vector=TIMER0_A0_VECTOR
__interrupt void TIMER0_A0_ISR(void)
 #elif defined(__GNUC__)
 void __attribute__ ((interrupt(TIMER1_A0_VECTOR))) TIMER1_A0_ISR (void)
 #else
 #error Compiler not supported!
 #endif
{
    count++;
    P2OUT |= 0x07;
    P1OUT |= 0xF8;
    AllCondition();
    __bis_SR_register_on_exit(GIE);
}

void uartInit()
{
    P4SEL |= (BIT4+BIT5);

    P4DIR |= BIT6;                     //clock for send data
    P4REN |= BIT6;
    P4OUT &=~ BIT6;

    UCA1CTL1|=UCSWRST;
    UCA1CTL1|=UCSSEL_2;
    UCA1BR0 =9;
    UCA1BR1 =0;
    UCA1CTL1 &=~UCSWRST;
    UCA1IE |=UCRXIE;
 //   __bis_SR_register(GIE);
    __no_operation();
}

void send_uart(char *addr)
{  P4OUT|=BIT6;
    unsigned int i;
    unsigned int size =strlen(addr);
    for(i=0;i<size;i++)
    {
    while(!(UCA0IFG & UCTXIFG));
    UCA0TXBUF = addr[i];
    }
    P4OUT&=~BIT6;
}

//////////////////////////////////UART INTERRUPT///////////////////////////////////////
#if defined(__TI_COMPILER_VERSION__)|| defined(__IAR_SYSTEMS_ICC__)
#pragma vector=USCI_A1_VECTOR
__interrupt void USCI_A1_ISR(void)
#elif defined(__GNUC__)
void__attribute__((interrupt(USCI_A1_VECTOR))) USCI_A1_ISR (void)
#else
#error compiler not supported!
#endif
{

switch(__even_in_range(UCA1IV,4))
{
case 0:break;
case 2:
    //while(!(UCA1IFG & UCTXIFG));
    *received = UCA1RXBUF;
    *received++;

break;
case 4:break;
default:break;
}
}


Viewing all articles
Browse latest Browse all 262198

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>