GPS-Daten auswerten

Gast #2782786
Lesenswert?

moin moin,

ich versuche gps daten über einen attiny85 auszulesen. Dazu verwende ich 
einen Timer Interrupt, der alle 208 us aufgerufen wird (Test mit Oszi). 
Versuche über folgende Quellcode mir anzeigen zu lassen, wann ein neuer 
GPS Satz angekommen ist (Laut Navi-Testsoftware werden 5 versch. Sätze 
pro Sekunde empfangen. Also sollte meine LED 5 mal pro sek. blinken. Sie 
blinkt aber ziemlich willkürlich (manchmal 2 mal pro sek. manchmal gar 
nicht). Hoffe, dass mir jmd. meine Fehler erklären kann.

Gruß
Sascha


ISR(TIMER0_COMPA_vect)
{
  cli();
  TIFR = (1<<OCF0A);

  if(laenge == 0)
    USIBR = 0;

  if(laenge < 8)
  {
      laenge++;
      USIBR = (USIBR << 1);

    if(PINB & (1<< PB0))
      USIBR |= 0x01 ;
    else
      USIBR &= ~0x01;
  }
  else
  {
    gps = USIBR;
    laenge = 0;

    if(gps== '$')
      PINB |= (1 << PB3);

    USIBR = 0;
  }
  sei();
}
Gast #2782791
Lesenswert?

du kannst doch nicht einfach im Timer die RS232 abfragen, du musst doch 
wengisten prüfen ob die vorliegen.

Auch eine Sei und ein cli hat nichts in der ISR zu suchen.

Vergiss den code und fang noch mal von vorne an.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren