Gast
#301501
MSP430 UART Zeichenkette ausfiltern? Von einer GPS-maus werden die Daten über UART ständig zum µC übertragen. Wenn die Maus die Zeichenkette $GPRMC gesendet hat, soll ein Unterprogramm angesprungen werden, um die jetzt folgenden Daten weiter zu bearbeiten. Zur Zeit werden bei mir alle eingehenden Zeichen in einem [Feld] gespeichert und wenn 512 Bytes angekommen sind, auf eine Speicherkarte geschrieben. Hier ein von mir verwendeter Programmausschnitt: (geschrieben mit IAR für MSP430) #pragma vector=UART0RX_VECTOR __interrupt void usart0_rx (void) { GPS = RXBUF0; // Register RXBUF0 wird gelesen, // Inhalt von RXBUF0 der Variablen // GPS zuordnen und RXBUF0 leeren zwischenspeichernGPS(); } void zwischenspeichernGPS(void) { Tabelle[t]=GPS; } Und so sieht der z. B. der Datenstrom aus: ,05,300,33*49 $GPGSV,3,3,08,,,,,,,,,15,43,069,4*,,,*4D $GPRMC,122905,A,5127.3760,N,01200.9286,E,0.00,323.02,080206,0.0,W*60 $GPGGA,122906,5127.3760,N,01200.9286,E,1,07,1.1,156.3,M,156.3,M,0.0,0000 *50 $GPGSA oder in Hexadezimaldarstellung: 00000140h: 35 2C 33 30 30 2C 33 33 2A 34 39 0D 0A 24 47 50 ; 5,300,33*49..$GP 00000150h: 47 53 56 2C 33 2C 33 2C 30 38 2C 2C 2C 2C 2C 2C ; GSV,3,3,08,,,,,, 00000160h: 2C 2C 2C 31 35 2C 34 33 2C 30 36 39 2C 34 2A 2C ; ,,,15,43,069,4*, 00000170h: 2C 2C 2A 34 44 0D 0A 24 47 50 52 4D 43 2C 31 32 ; ,,*4D..$GPRMC,12 00000180h: 32 39 30 35 2C 41 2C 35 31 32 37 2E 33 37 36 30 ; 2905,A,5127.3760 00000190h: 2C 4E 2C 30 31 32 30 30 2E 39 32 38 36 2C 45 2C ; ,N,01200.9286,E, 000001a0h: 30 2E 30 30 2C 33 32 33 2E 30 32 2C 30 38 30 32 ; 0.00,323.02,0802 000001b0h: 30 36 2C 30 2E 30 2C 57 2A 36 30 0D 0A 24 47 50 ; 06,0.0,W*60..$GP 000001c0h: 47 47 41 2C 31 32 32 39 30 36 2C 35 31 32 37 2E ; GGA,122906,5127. 000001d0h: 33 37 36 30 2C 4E 2C 30 31 32 30 30 2E 39 32 38 ; 3760,N,01200.928 000001e0h: 36 2C 45 2C 31 2C 30 37 2C 31 2E 31 2C 31 35 36 ; 6,E,1,07,1.1,156 000001f0h: 2E 33 2C 4D 2C 31 35 36 2E 33 2C 4D 2C 30 2E 30 ; .3,M,156.3,M,0.0 00000200h: 2C 30 30 30 30 2A 35 30 0D 0A 24 47 50 47 53 41 ; ,0000*50..$GPGSA Hat jemand einen Vorschlag, wie man den Anfang des Datensatzes $GPRMC, (in HEX 24 47 50 52 4D 43 2C ) programmtechnisch erkennen kann? MfG Wolfgang