mikrocontroller.net

Forum: Compiler & IDEs GPS Daten empfangen und wieder senden


Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich empfange NMEA Daten von einem GPS-Modul und parse diese.
Gleichzeitig werden die NMEA Daten wieder an die UART ausgegeben.
Meine Lösung sieht so aus:
#define UART0_TX_BUFFER_SIZE      0x60
#define UART0_RX_BUFFER_SIZE      0x60
#define UART1_TX_BUFFER_SIZE      0x10
#define UART1_RX_BUFFER_SIZE      0x10

uartSetRxHandler(0, gpsRxHandler);//Handler der RX Daten


void gpsRxHandler(u08 charIn)
{
  static u08 j=0,startflag=0;

  if  (systemState & SYSTEM_NMEA_OUTPUT)
  {
    uartAddToTxBuffer(0, charIn);
    txCharCounter++;    
  }
  if ((varioState & SYSTEM_NMEA_PARSER) == 0)
  {
    startflag = 0;
    j = 0;
  }
  else
  {
    if  (startflag)
    {
      if  (( charIn != '\r') && ( charIn != '\n') && (j < NMEA_BUFFERSIZE))
      {
        NmeaSentence[j++] = charIn;  //Fill String
      }
      else
      {
        NmeaSentence[j] = 0;    //String complete
        j = 0;
        startflag = 0;
        if  (!strncmp(NmeaSentence, "GPGGA", 5))
        {
          nmeaProcessGPGGA(NmeaSentence);
        }
        
          else
          {
            if  (!strncmp(NmeaSentence, "GPGSA", 5))
            {
              nmeaProcessGPGSA(NmeaSentence);
            }
            else
            {
              if  (!strncmp(NmeaSentence, "GPRMC", 5))
              {
                nmeaProcessGPRMC(NmeaSentence);
                nmeaCalculations();
                state_bits |= GPS_RDY;
              }
            }
          
        }
      }
    }
    if  (charIn == '$')
    {
      startflag = 1;
          }
  }
}

in der main loop:

if (txCharCounter > 70)
    {
      uartSendTxBuffer(0);
      txCharCounter = 0;
    }

zu 98% läuft der code wie gewünscht, aber manchmal verhaspelt sich die 
Ausgabe der NMEA Daten.

Autor: ... ... (docean) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was bedeutet verhaspelt?

Checkst du die Prüfsumme?

Autor: Michael (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
das logfile ist im Anhang.
Am Anfang stimmen die Daten, dann fehlerhaft und am Schluß wieder OK.
Als würde der buffer immer wieder gleiche Daten auslesen.
Die Prüfsumme wird nicht geprüft, ich denke nicht dass da ein Fehler 
ist.
Würde zwar den Datenmüll verhindern aber nicht die Ursache beheben.

Autor: FEHLER (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist normal. Per Software abfangen !

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.