Forum: Mikrocontroller und Digitale Elektronik Atmega32 UART Endzeichen wird nicht erkannt


von Peter (Gast)


Lesenswert?

Hallo

Ich habe folgendes Problem.
Ich bekomme von einem Navilock folgenden String gesendet:

$GPRMC,120135.100,V,2400.00004,N,12100.00004,E,0000.00,000.00,280606,,,N 
*4D\r\n
$GPVTG,000.00,T,,M,0000.00,N,00000.00,K,N*02\r\n
$GPGGA,120135.200,2400.00004,N,12100.00004,E,0,00,0.0,0.00,M,0.00,M,,000 
0*6F\r\n

Angezeigt werden diese auch richtig aber wenn ich auf das "uart_new==1" 
im Code abfrage und dann was im Display anzeigen will kommt nichts. Ohne 
die Abfrage kommt es. Woran kann es liegen?

1
ISR(USART_RXC_vect)
2
{
3
  static uint8_t str_count=0;
4
  char nextChar;
5
  nextChar = UDR;
6
   if ( nextChar != '\n')
7
  {
8
    uart_string[str_count] = nextChar;
9
    str_count++;
10
  }
11
  else
12
  {
13
    uart_string[str_count] = nextChar;
14
    str_count=0;
15
    uart_new=1;
16
  }
17
}

von Mike (Gast)


Lesenswert?

Peter schrieb:
> Angezeigt werden diese auch richtig aber wenn ich auf das "uart_new==1"
> im Code abfrage und dann was im Display anzeigen will kommt nichts. Ohne
> die Abfrage kommt es. Woran kann es liegen?

Irgendwie fehlt da etwas.
Wie ist uart_new deklariert und wo wird uart_new gesetzt.

von Detlef K. (adenin)


Lesenswert?

Hmm, da fehlt der Code wo *uart_new==1* abgefragt wird.
Wie soll man da rausfinden, was passiert?

von Manuel S. (steinerhippo)


Lesenswert?

Mike schrieb:
> Irgendwie fehlt da etwas.
> Wie ist uart_new deklariert und wo wird uart_new gesetzt.

Hast du uart_new als Flag verwendet, um in der Main oder wo anders eine 
Ausgabe am Display zu machen? In diesem Fall nehme ich an, uart_new ist 
global definiert. Die Variable muss dann auch volatile sein.

Falls das nicht die Verwendung ist, kann man nur raten :) In diesem Fall 
bitte die Fragen von Mike beantworten.

von Peter (Gast)


Angehängte Dateien:

Lesenswert?

Hier die ganze Datei!

von J.-u. G. (juwe)


Lesenswert?

Peter schrieb:
> Hier die ganze Datei!

Wie Manuel bereits geschrieben hat, "uart_new" muß volatile deklariert 
werden, da darauf sowohl in der ISR als auch in der main-Funktion 
zugegriffen wird.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.