Hallo,
ich habe ein GPS-Modul welches brav und schön sauber Daten an das Hyperterminal sendet.
Diese Daten möchte ich mit meinem PIC auswerten.
Habe zuerst einmal ein ganz simples Programm geschrieben, welches Daten ab dem $-Zeichen in einen String kopiert, bis zu dem *-Zeichen.
Das Programm funktioniert im Debugger, sprich alle vorgegebenen Zeichen im RCREG1-Register werden in den String, Register für Register beschrieben.
Bei dem *-Zeichen wird die Schleife verlassen.
Jedoch funktioniert die Zeichenausgabe nur im Debugger.
In der Hardware wird nur der erste Buchstabe, ab zu zu mal richtig angezeigt (NMEA Protokoll ist das ein 'G').
Ich vermute, dass es letztendlich an der Baudrate hängt, jedoch wird ein Baudratenfehler von 0.17% von meinem Compiler ausgespuckt.
Ich habe leider keine Idee mehr wie ich den Fehler lokalisieren kann.
Darum frage ich euch, woran kann es liegen.
Oder hab ich einen Fehler in meinem Code:
Code:char uart_rd; char *zeigerZeichen = &uart_rd; char string[200]; unsigned short i = 0; void main() { ADCON1 |= 0x0F; // Configure AN pins as digital CMCON |= 7; // Disable comparators TRISB = 0; PORTB = 0; UART1_Init(4800); // Initialize UART module at 4800 bps Delay_ms(100); // Wait for UART module to stabilize while (1) { // Endless loop if (RCREG1 == '$') { //Prüft ob $-Zeichen im Register do{ if (PIR1.RC1IF == 1) { //Buffer Inerruptflag string[i] = RCREG1; ++i; } }while(RCREG1 != '*'); break; } } uart_rd = string[1]; PORTB = uart_rd; asm sleep; }
Vielen Dank im vorraus.
MfG frank85







Zitieren

Lesezeichen