www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Zeichenketten von serieller Schnittstelle


Autor: Christoph Gillig (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
als Neuling in Sachen Programmierung der seriellen Schnittstelle 
folgende Frage:
Von einem GPS-Empfänger kommen im festen Rhythmus (4800 Baud) die 
einzelnen NMEA-Aussendungen. Diese fangen immer mit einem $-Zeichen an 
und enden mit CR+LF.
Wie kann ich diese in eine Variable einlesen? Das ganze will ich mit 
BASCOM machen. Dort wird nicht C sondern BASIC zum programmieren 
benutzt(sorry ;-)). Könnte mir jemand verraten, wie ich die Variable 
deklarieren muss (Typ) und wie ich dann per Interrupt die gesendeten 
Strings in die Variable zur weiteren Verarbeitung bekomme?

Vielen Dank im Namen aller Anfänger an die Profis

Christoph

Autor: Christoph (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Christoph,

schaum mal z.B unter www.rowalt.de/mc/index.htm nach, dort gibts
Beispiele zum einlesen von variablen Zeichenketten. Weiterhin könntest 
Du die Funktion IsCharwaiting in Verbindung mit einem seriellen 
Eingangspuffer verwenden (config serialin=buffered, size= ???). Wie 
sehen denn die NMEA-Werte aus ?

Gruß

Christoph

Autor: Christoph Gillig (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Namensvetter,
der von Dir angegebene Link ist mir gut bekannt. Das von Kollegen Rowalt 
gemachte Tutorial im Funkamateur mache ich gerade. Doch leider bin ich 
damit auch nicht schlauer geworden. Die Schaltung steht zwar, inkl. 
Ausgabe auf LCD.
Doch in dem Beispiel wird lediglich gewartet bis der Interrupt 
anspricht, und dann wird das was ankam auf dem Display ausgegeben.
Im Anhang habe ich mal so ein Beispiel-Mitschnitt vom GPS beigefügt.
Könntest Du das mit dem Eingangspuffer noch mal erklären oder mit Code 
angeben?

Gruß Christoph

Autor: Dieter Brüggemann (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Christoph

Da ich sowas auch in nächster Zeit mal vorhabe, habe ich mal einen 
ersten Anfang gemacht.

Das Programm wartet halt auf das Startzeichen "$" und liest dann erstmal 
20 Daten in ein Array ein. Zum auslesen des gesamten Protokolls, braucht 
man aber einiges an SRAM, sowie ich das sehe. Kommt aber darauf an, 
welche Daten du genau haben möchtest.

Bei Fragen Mail
Hier noch ein Link zum Thema http://www.kh-gps.de/

MFG
Dieter

Autor: Christoph (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Christoph,

also der eingangspuffer der seriellen Schnittstelle nutzt auch den Uart 
Interrupt, d.h. du musst Ihn nicht extra definieren
(funktioniert aber in Verbindung mit IsChrawiting) erst ab Version 
1.11.7.2 oder so (siehe History.txt bei MCSelec.com)
Der Eingangspuffer empfängt ankommende Daten automatisch, d.h. es gehen 
keine Daten verloren solange ausreichen Platz vorhanden ist.

Du könntest also z.B wie folgt vorgehen (siehe auch AVR-Sample
Programme 'RS232BUFFer oder so ähnlich)

config serialin=buffered, size = 20

Dim A as Byte
Dim B as Byte

Do
A = Ischarwaiting
if A = 1 then gosub Getbyte
loop

getbyte
A=Inkey()
if A=36 then

usw.

return


Ein Problem scheint mir zu sein, dass die empfangenen Daten aus Zeichen, 
Byte-Variablen, Integer-variablen etc bestehen,
und das laut deinem GPS-Beispiel nicht einmal in immer der gleichen 
Abfolge (und wenn, dann nur alle 6 Zeilen.
Ich weiß nicht so recht ob ein 2313 genügen SRAM zur Verfügung
stellt um dies alles korrekt zu analysieren.

Gruß Christoph

Autor: Christoph Gillig (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Christoph,
vielen Dank für die Tips. Habe mir erst mal die neue Version von BASCOM 
geladen. Auf dem von Dir gezeigten Weg werde ich mal versuchen 
weiterzukommen.
Im Handbuch zu der GPS-Maus sind die einzelnen gesendeten NMEA-Files 
aufgeführt. Da muss ich mir dann den passenden heraussuchen.
Mal sehen was wird. Vielen Dank schon mal

Gruss
Christoph

Autor: Sven (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Christoph!

GPS-Maus? Ich vermute
- Sie bestimmt ihre Position nicht mit Rädchen oder optisch, sondern 
über GPS. Cool!
oder
- Man kann über GPS ermitteln, in welcher Zimmerecke sie gerade wieder 
verschollen ist. Megacool!
oder
- Ganz was anderes. Nichtsocool.

Sven

Autor: Roadbook (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

mit den NMEA Daten aus einem GPS in Verbindung mit einem MC habe ich 
mich auch beschäftigt.

Was man mit den Daten anfangen kann unter:

GPS.Roadbook.bei.t-online.de

Gruß

Wolfgang

Autor: ____ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sven, ist doch nicht schlimm, daß du nicht weißt was eine GPS-Maus 
ist...

Autor: Maximilian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hat noch jemand die beispiele von der seite
'GPS.Roadbook.bei.t-online.de' ?
die scheint ja nicht mehr vorhanden zu sein...
ich möchte auch die NMEA-Daten in einem atmega oä. in variablen
schreiben, um sie dann weiter zu verarbeiten

Autor: Joern G. aus H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Sven: Das Teil in deiner rechten Hand nennst du Maus, weil es ein
wenig aussieht, wie eine Maus (oder es zumindest vor Funk noch tat).
Bei der GPS Maus ist es dasselbe. ;-) Mehr nicht.
jörn

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.