2016-04-12 18 views
0

Verwenden von MSP430F6736A Embedded-Programmierung. Code, der in Code Composer Studio geschrieben wurde.MSP430 UART empfängt eine Zeichenfolge

Ich möchte eine Zeichenfolge zum Beispiel eine Nummer (26) senden und dann zurück auf dem Bildschirm an den PC senden. Jetzt bekomme ich nur seltsame Zeichen. Was soll ich verbessern?

int main(void) { 

    WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer 

    P2SEL |= BIT2 + BIT3; 

    UCA2CTLW0 |= UCSWRST; // 
    UCA2CTLW0 |= UCSSEL_1 ; // ACLK 

    UCA2BR0 = 0x1B; // 1200 Baud 32768/1200 = 27 0x1B 
    UCA2BR1 = 0x00; // 1200 Baud 
    UCA2MCTLW |= 0x94; 

    UCA2CTLW0 &= ~UCSWRST; // 

    UCA2IE |= UCRXIE; 
    UCA2IFG = 0; 

    __bis_SR_register(GIE); 

} 

#pragma vector=USCI_A2_VECTOR 
__interrupt void Recieve_ISR(void) 
{ 
    static char sprava[] = {""}; 
    int j = 0; 
    int i = 0; 

    for (i = 0 ; i < sizeof sprava; i++) 
    { 
     sprava[i] = UCA2RXBUF; 

    } 

    UCA2TXBUF = UCA2RXBUF; 
     for (j = 0 ; j < sizeof sprava+1; j++) 
     { 
      UCA2TXBUF = sprava[j]; 
     } 


} 

Antwort

0
  • nicht magische Zahlen wie 0x94 Verwenden Sie; Sie machen den Code unlesbar. Verwenden Sie stattdessen die richtigen Symbole. In einer eingebetteten Firmware können Sie nicht von main() zurückkehren. Sie müssen eine Schleife ausführen oder schlafen gehen.
  • Der Interrupt wird ausgelöst, wenn ein einzelnes empfangenes Byte verfügbar ist. Der Interrupt-Handler darf nicht versuchen, mehrere Bytes zu lesen.
  • TXBUF kann nur geschrieben werden, wenn der Sendepuffer leer ist. Darauf müssen Sie vor jedem Byte warten.