Forum: Mikrocontroller und Digitale Elektronik Atmega8 + GPS Modul + gLCD


von Robin K. (robink)


Lesenswert?

Hallo,

ich habe ein GPS Modul und ein gLCD an einem Mega8. Das GPS-Modul 
liefert mittlerweile auch schon Daten. Die Bytes die ich per UART 
empfange gebe ich auch sofort auf dem gLCD aus. Leider sind es aber nur 
willkürliche Zeichen. Die Anzahl der Zeichen liegt um die 22/23 Zeichen 
(Schwankungen von einem Zeichen vorhanden). Ich kann mir vorstellen, 
dass der Takt der UART-EInstellung falsch ist.
Ausgabeformat der Daten soll GPGGA und GPRMC sein.
1
#include <avr/io.h>
2
#include <util/delay.h>
3
#include <avr/interrupt.h>
4
5
#include "glcd.h"
6
7
8
uint8_t urx = 0;
9
ISR(USART_RXC_vect) {
10
  urx = UDR;
11
  LCD_write_char(urx);
12
}
13
14
int main() {
15
16
  //USART
17
  UCSRB = (1 << RXEN);  //recieve aktivieren
18
  UCSRB |= (1 << RXCIE); //int aktivieren
19
  UCSRC = (1 << URSEL) | (1 << UCSZ0) | (1 << UCSZ1); //8 bit einstellen
20
  UBRRL = 25; // 8MHz  19.2k Baudrate
21
  
22
  LCD_init();
23
  LCD_write_string("Hallo");
24
  LCD_newline();
25
26
  
27
  sei();
28
 
29
  while (1) {    
30
  }
31
  
32
  return 0;
33
}

Könnte mir einer auf die Sprünge helfen? Welchen Fehler habe ich 
gemacht?

Grüße
Robin

von Gastt (Gast)


Lesenswert?

Zeig mal deine Schaltung.

von merk (Gast)


Lesenswert?

meist haben gps module 4800baud

von Philipp Karbach (Gast)


Lesenswert?

UBRRL = 25; // 8MHz  19.2k Baudrate
meist haben gps module 4800baud

!!

von Bastler (Gast)


Lesenswert?

Benutzt du den internen RC-Oszillator oder ein Quarz ?

Ohne Quarz wird das nichts!

von Robin K. (robink)


Lesenswert?

Danke für die schnellen Antworten!

Mit einer Baudrate von 4800 bits per second bekomme ich nur noch 6 bytes 
und diese sind auch willkürlich.

Anschlüsse des GPS-Moduls:
VCC -> 5V  Arbeitet ab 3,3V
MASSE -> 0V -> gleich der Masse des Mikrocontrollers
RX -> Spannungsteiler: 4,7kOhm an 5V und 10kOhm an Masse
TX -> an RX vom Mega8

Ich benutze den internen RC-Oszilator.


Das heißt für mich einen externen Quarz benutzen und die Spannung an VCC 
ein wenig zu minimieren? Wie ist das Möglich?

von Uwe N. (ulegan)


Lesenswert?

bau dir erstmal einen Pegelwandler und schliess das GPS-Modul an den PC 
an. Das kann ein Transistor, ein Inverter oder auch ein MAX232 sein.
Schau, was da bei verschiedenen Baudraten raus kommt.
Was ist das für ein Modul? Sendet das vielleicht Binärdaten, statt NMEA?

Bist du dir sicher, dass das
LCD_write_char(urx);
schnell genug ist und nicht der Empfangspuffer überläuft?

Puffere die Zeichen besser im RAM, warte im Hauptprogramm auf ein 
Zeilenende und schreibe dann alles aufs Display, während der Interrupt 
einen zweiten Puffer füllt. Grafische LCD's sind oft langsam.

Quarz ist auf jeden Fall notwendig, warum aber VCC absenken?
Naja, man könnte auch den internen Oszillator auf die Baudrate 
kalibrieren, aber das ist erstmal viel zu kompliziert...

Uwe

von Vlad T. (vlad_tepesch)


Lesenswert?

einige gps-Module brachen in der Versorgung 5V, benutzen aber 3V3 Pegel 
an den Datenleitungen.
Unter Umständen erkennt die ein mit 5V laufender AVR nicht (als high 
wird meist ein pegel > 2/3*VCC spezifiziert)

von Holger (Gast)


Lesenswert?

ich habe das problem auch. Wenn ich die GPS-Maus mit einer seperaten 
Speisung versorge funktionierts.

von Karl H. (kbuchegg)


Lesenswert?

Robin K. schrieb:

> Welchen Fehler habe ich
> gemacht?

Du hast die Teile nicht unabhängig voneinander getestet. So hast du 
jetzt 2 Komponenten, die nicht miteinander können und keine Ahnung, wer 
der Übeltäter ist.

Ist es die GPS-Maus, weil die auf einer ganz anderen Baudrate sendet als 
du glaubst oder weil sie etwas ganz anderes sendet als du glaubst

Oder ist es die UART, die falsch konfiguriert ist bzw. noch viele andere 
Gründe möglich sind, warum eine UART zunächst nicht wie gewollt 
arbeitet.

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.