Gast
#1209023
Hallo Gemeinde, ich habe folgendes Problem mit Uart0 MSP430F449 32.768 Khz Quarz an XT1. Eigenes Board, 1Startbit, 8 Datenbits 1 Stopbit kein Paritybit. Hardwarefehler schließe ich nun mal aus (Messungen ergaben keine Fehler an und vor dem MAX3221) Senden und empfangen funktioniert mit 9600 Baud tadellos 100% fehlerfrei. Bei 19200 Baud gibts bei ca 3000 Empfangenen zeichen im Schnitt 1-2 verschlucktes Zeichen (vermutlich kein RX Interrupt ausgelöst) hier mein Quellcode: .... TACTL = TASSEL0 + TACLR + TAIE; // ACLK, Clear TAR, Interrupt enable //FLL init SCFQCTL = 0x3C; //ignores M bit 7 SCFI0 = 0x40;//FLL_D.0 SCFI1 = 0; FLL_CTL0 |= (DCOPLUS + XCAP14PF); // load caps FLL_CTL1 = 0x20;//XT2OFF .... Uart Initialisierung // ================================================================ // Funktionsname: init_UART0() // ================================================================ void init_UART0(void) { STOP_WATCHDOG // Watchdog stoppen _BIS_SR(GIE); P2DIR |= 0x10; // P2.4 output direction P2SEL |= 0x30; // P2.4,5 = USART0 TXD/RXD U0CTL |= SWRST; // UART Control Register: Reset SWRST = 1 before initialisation Step <1> UCTL0 |= CHAR; // 8-bit character SWRST <Step 2> // Transmit Control Register U0TCTL |= SSEL1; // Transmitter Control Register: UCLK = SMCLK // Uart Baud register UBR00=0xD0; // 0xA0 = 9600 Baud 0xD0 = 19200 Baud UBR10=0x00; // 0x01 = 9600 Baud 0x00 = 19200 Baud UMCTL0=0x08; // 0x4A = 9600 Baud 0x08= 19200 Baud // UBR00=0xA0; // 0xA0 = 9600 Baud 0xD0 = 19200 Baud // UBR10=0x01; // 0x01 = 9600 Baud 0x00 = 19200 Baud // UMCTL0=0x4A; // 0x4A = 9600 Baud 0x08= 19200 Baud ME1 |= (UTXE0 + URXE0); // Enable USART0 TXD/RXD <Step 3> U0CTL &= ~SWRST; // UART Control Register: Clear Bit SWRST=0 <Step 4> IE1 |= URXIE0; // Enable USART0 RX interrupt <Step 5> } // End init_UART0 auf http://www.msp430.info/modules.php?name=Sections&op=viewarticle&artid=2 steht, dass es Probleme beim Empfang geben kann und man das Modulationsregister auf Receive speziell anpassen muss um Fehler zu vermeiden. Sind meine Modulationsregister richtig? (Für die Korrektur) FLL Clock D=2, wurde auf 3.9977 MHz initialisiert. An was könnte es liegen? Für alle Kritik / Tipps dankbar! Grüße Uli