Gast
#212769
Hallo!
Ich habe ein Problem beim Einstellen der Baudrate. Im folgenden
Quelltext, der eigentlich nur einen minimalen Funktionsumfang (eine
Echofunktion) zur Verfügung stellt, sollen Zeichen, die ich über das
Terminal an den MSP schicke wieder zurückgesandt und ausgegeben werden.
Mit 4800 Baud funktioniert das problemlos. Wenn ich die Baudrate nun wie
in diesem Fall versuche auf 9600 zu erhöhen werden nur noch kryptische
Zeichen ausgegeben, also in jedem Fall nicht mehr das Zeichen, was ich
ursprünglich eingegeben habe. Die Frequenz meines Quartzes beträgt 32
kHz.
Beispielprogramm:
#include <msp430x16x.h>
#include <signal.h>
int main(void)
{
WDTCTL = WDTPW + WDTHOLD;
P3SEL = 0x30;
ME1 |= UTXE0 + URXE0;
UCTL0 |= CHAR;
UTCTL0 |= SSEL0;
UBR00 = 0x03; // 9600 Baud
UBR10 = 0x00;
UMCTL0 = 0x4A;
UCTL0 &= ~SWRST;
IE1 |= URXIE0; // Interrupts an
IFG1 &= ~UTXIFG0; // Interruptflag loeschen
_EINT(); // Enable interrupts
}
interrupt(USART0RX_VECTOR) usart0_rx(void)
{
TXBUF0 = RXBUF0;
}
Weiß jemand woran das liegen könnnte? Ich habe keine wirklich plausible
Erklärung dafür. Die Baudrate im Terminal ist natürlich auch
entsprechend angepasst (->9600).
Gruß,
Martin.
P.S.: Ich verwende das Headerboard von Olimex mit externer
Spannungsversorgung und erforderlicher Peripherie (MAX232).