mikrocontroller.net

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


Autor: Robin K. (robink)
Datum:

Bewertung
0 lesenswert
nicht 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.
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>

#include "glcd.h"


uint8_t urx = 0;
ISR(USART_RXC_vect) {
  urx = UDR;
  LCD_write_char(urx);
}

int main() {

  //USART
  UCSRB = (1 << RXEN);  //recieve aktivieren
  UCSRB |= (1 << RXCIE); //int aktivieren
  UCSRC = (1 << URSEL) | (1 << UCSZ0) | (1 << UCSZ1); //8 bit einstellen
  UBRRL = 25; // 8MHz  19.2k Baudrate
  
  LCD_init();
  LCD_write_string("Hallo");
  LCD_newline();

  
  sei();
 
  while (1) {    
  }
  
  return 0;
}

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

Grüße
Robin

Autor: Gastt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zeig mal deine Schaltung.

Autor: merk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
meist haben gps module 4800baud

Autor: Philipp Karbach (Gast)
Datum:

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

!!

Autor: Bastler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Benutzt du den internen RC-Oszillator oder ein Quarz ?

Ohne Quarz wird das nichts!

Autor: Robin K. (robink)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Uwe Nagel (ulegan)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Vlad Tepesch (vlad_tepesch)
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: Holger (Gast)
Datum:

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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

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.