unerklärliches UART Verhalten mit GPS Empfänger

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo zusammen,

    seit nunmehr drei Tagen versuche ich, die Daten, die ein GPS Empfänger Navilock 62571 permanent sendet, auf der UART Schnittstelle zu empfangen.

    Ich habe es mit einem C Programm versucht und auch über minicon.
    Und jetzt das unerklärliche:
    wenn ich das C Programm oder minicon starte (jedes mal exakt der gleiche Code bzw. exakt die gleichen Parameter) dann klappt es mal und mal nicht.

    Konkret minicon: ich starte mit minicon -b 4800 -o -D /dev/ttyAMA0 und dann kann ich ganz wunderbar die GPS Daten (NEMA-Protokoll) im Klartext lesen und zwar so lange, wie ich will. Beende ich minicon und starte gleich darauf noch einmal wie oben beschrieben, dann bekomme ich nur fehlerhafte Bytes, die ich gar nicht lesen kann. Ich kann so oft ich will beenden und neu starten und mal bekomme ich super Daten und mal nur Müll.

    Entscheidend ist - so kommt es mir vor - allein der Zeitpunkt des Startens. Wenn es gut läuft, dann bleibt es gut, wenn es Müll ist, dann bleibt es Müll. Daher will ich schlechte Abschirmung oder ähnliches ausschließen, das müsste sich ja auch bei einer gut beginnenden Übertragung irgendwann bemerkbar machen.

    Genau das gleiche gilt auch für das C Programm. Mal starte ich und alles ist ok und mal kommt nur Kappes. Ich habe an allen Parametern rumgedreht, was entweder zu keiner Änderung oder zum totalen Unfug geführt hat.

    Das Bild zeigt das Ergebnis von dem C-Programm, oben gut, erneuter Aufruf schlecht...

    Frage also: hat einer von Euch mal ein ähnliches Verhalten gehabt und weiß noch, woran es gelegen hatt?
    Frage2: hat einer von Euch den genannten GPS Empfänger mal verwendet? Es gibt nämlich eine fragwürdige Sache: Laut Datenblatt soll der default mit 9600 Baud arbeiten, aber erst als ich zufällig auf 4800 gegangen bin, habe ich überhaupt das erste mal die guten Daten gesehen. Ich bin mir sehr sicher, dass ich die Einstellungen an dem GPS Modul nicht verändert habe (sehr aufwendige Befehle mit Prüfsumme usw, das kann man versehentlich nicht ändern, zumal ich ohnehin nicht bewußt was ausgegeben habe).

    Bin für jeden auch noch so unwahrscheinlichen Hinweis dankbar!!!!

  • Hallo Bucko,

    wie ist denn die Ausgabe von

    Code
    cat /dev/ttyAMA0

    Dieses Linux-Kommando zeigt an, was irgendwelche anderen Programme oder Hardware auf die serielle Schnittstelle [font="Courier New"]/dev/ttyAMA0[/font] geschrieben hat und noch schreibt.

    Vorteil: Du brauchst keine Baudrate, Paritäten, Stopbits etc. einzustellen.

    Gelingt es Dir auf diese Weise auch, Datenmüll auszulesen?


    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

  • Hi,
    also die Baudrate scheint ja einstellbar zu sein ... allerdings nur mit der zugehörigen Software.
    Ich vermisse da ein Dokument der ... sagen wir mal Kommando-Schnitstelle ...
    Hast Du schon mal das Netz nach einer Liste mit Steuersequenzen duchsucht?

    cu,
    -ds-

  • Hallo Andreas,

    wenn ich das Kommando eingebe, dann passiert gar nix, ich muss dann mit Strg+C abbrechen. Auch mit sudo davor passiert nix. Habe das auch nach einem kompletten Neustart und ohne GPS Modul dran probiert. Idee?

    Danke Dir!
    Automatisch zusammengefügt:


    Hi,
    also die Baudrate scheint ja einstellbar zu sein ... allerdings nur mit der zugehörigen Software.
    Ich vermisse da ein Dokument der ... sagen wir mal Kommando-Schnitstelle ...
    Hast Du schon mal das Netz nach einer Liste mit Steuersequenzen duchsucht?

    cu,
    -ds-

    Hallo ds,

    meinst Du die Dokumentation für das GPS Modul? Wenn ja, die habe ich vor mir (u-blox M8 ....) Da sind alle Steuerbefehle vollständig enthalten. Aber das ist nicht das oder zumindest ein weiters Problem. Mit 4800 kann ich ja die Daten sauber empfangen, für mich bedeutet das, dass beide Seiten passend eingestellt sind. Und da ich noch nicht mal sauber empfangen kann, wage ich mich nicht an das Senden von Steuerbefehlen, ich kann ja nicht sehen, ob der Befehl was bewirkt, weil ich ja nicht sauber empfangen kann...

    VG
    Bucko

    Einmal editiert, zuletzt von Bucko (5. November 2015 um 17:50)

  • Hallo Bucko,


    Habe das auch nach einem kompletten Neustart und ohne GPS Modul dran probiert. Idee?

    Danke Dir!

    na, das GPS-Modul muss schon angeschlossen sein! Sonst kommt über TX/RX nichts an.

    Und das GPS-Modul muss außerhalb von Gebäuden sein... sonst empfängt es (meist) nichts.

    Kannst Du mal die Schaltung verraten?

    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    Einmal editiert, zuletzt von Andreas (5. November 2015 um 17:57)

  • Naja ... ich vermisse halt u.a. die Schnittstellen-Specs ... es gibt keine Angabe über das Protokoll (also mit oder Handshake und wenn mit, dann mit welchem) und die restlichen Parameter.
    Durchaus möglich, dass die Schnittstelle des Moduls erst mal initialisiert werden muss ...
    Und so weiter, und so weiter ...
    Ich hoffe, ich hab' das jetzt verständlich rübergebracht.
    -ds-

  • Also die GPS Empfänger die ich kenne - da ist die Kommunikation ziemlich einseitig. Die schreiben ihre Daten in NMEA raus fertig. Ohne init/handshake o.ä.

    Hast Du ggf. getty noch laufen?

  • Hallo Bucko,

    das war auch gerade meine Idee:


    Also die GPS Empfänger die ich kenne - da ist die Kommunikation ziemlich einseitig. Die schreiben ihre Daten in NMEA raus fertig. Ohne init/handshake o.ä.

    Hast Du ggf. getty noch laufen?

    läuft noch iregndeine Anwendung, die auf die serielle Schnittstelle schreibt oder ausliest?

    Hast Du die serielle Schnittstelle vor Beendigung der einzelnen Anwendungen geschlossen?

    Wie hast Du die serielle Schnittstelle freigegeben / aktiviert?

    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

  • na, das GPS-Modul muss schon angeschlossen sein! Sonst kommt über TX/RX nichts an.

    Und das GPS-Modul muss außerhalb von Gebäuden sein... sonst empfängt es (meist) nichts.

    Kannst Du mal die Schaltung verraten?

    Beste Grüße

    Andreas

    Also die "Schaltung" ist ganz einfach TX an RX und umgekehrt. Das GPS Modul hat nur die beiden Anschlüsse (und Spannung natürlich). Und empfangen tut es auch gut, wenn ich lesbare Daten bekomme und das NEMA Protikoll analysiere, dann sehe ich, dass bis zu 7 Satellieten empfangen werden.

    Was ich oben meinte: Was sollte denn nach Eingabe des Kommandos cat /dev/ttyAMA0 normalerweise passieren, also auf dem Bildschirm zu sehen sein? Bei mir passiert mit und ohne GPS Modul nix, ich muss dann mit ctrl+C abbrechen um den prompt wiederzubekommen. Ist das vielleicht schon ein Hinweis, wo das Problem liegen könnte? Kenne mich mit Linux leider gar nicht aus...

    Danke!!!!
    Bucko

  • Hallo Bucko,


    Also die "Schaltung" ist ganz einfach TX an RX und umgekehrt.

    Hast Du auch mal daran gedacht, GND miteinander zu verbinden? Bringt echt was...

    Was ist mit der Spannungsversorgung des GPS-Moduls?



    Was ich oben meinte: Was sollte denn nach Eingabe des Kommandos cat /dev/ttyAMA0 normalerweise passieren, also auf dem Bildschirm zu sehen sein? Bei mir passiert mit und ohne GPS Modul nix, ich muss dann mit ctrl+C abbrechen um den prompt wiederzubekommen. Ist das vielleicht schon ein Hinweis, wo das Problem liegen könnte? Kenne mich mit Linux leider gar nicht aus...

    Bei mir werden nach diesem Linux-Kommando alle Zeichen angezeigt, die auf der seriellen Schnittstelle [font="Courier New"]/dev/ttyAMA0[/font] eintrudeln. Egel aus welcher Quelle, egal mit welchen Einstellungen. Klappt immer. Und wenn das GPS-Modul Daten sendet, dann eben diese.

    Spendiere mal eine Strippe von GND des GPS-Moduls nach GND am GPIO-Port des RPi. Und dann nochmal [font="Courier New"]cat ...[/font]

    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    Einmal editiert, zuletzt von Andreas (5. November 2015 um 18:48)

  • Bei mir werden nach diesem Linux-Kommando alle Zeichen angezeigt, die auf der seriellen Schnittstelle [font="Courier New"]/dev/ttyAMA0[/font] eintrudeln. Egel aus welcher Quelle, egal mit welchen Einstellungen. Klappt immer. Und wenn das GPS-Modul Daten sendet, dann eben diese.

    Spendiere mal eine Strippe von GND des GPS-Moduls nach GND am GPIO-Port des RPi. Und dann nochmal [font="Courier New"]cat ...[/font]

    Beste Grüße

    Andreas

    Hallo Andreas,

    daran liegt es leider nicht, ich habe extra nachgemessen, es liegen 5V am GPS Modul an und auf dem Ding leuchtet ja auch eine LED. GND kann nur aus dem GPIO kommen, ich habe keine andere Versorgung als die, die aus der 40pol Leiste rauskommt.

    Aber aus irgendeinem Grund kommt jetzt bei Eingabe des Kommandos doch was auf den Schirm. Es ist wie gehabt. Ich starte das Kommando und es kommen gute Daten, ich breche ab und starte neu, wieder gute Daten, noch mal Abbruch und Neustart: jetzt kommen die schlechten. Es kommen mit jedem Start/Abbruch in beliebiger Reihenfolge gute und schlechte Daten... siehe Foto wenn es gut anfängt, dann bleibt es gut (auch über eine Stunde lang), wenn es schlecht startet, dann bleibt es schlecht. Es scheint sich wirklich mit dem Start des Programms / des Kommandos / des minicon zu entscheiden, ob gut oder schlecht. Ich habe das auch auf einem weiteren Raspi-Board getestet, da ist es das gleiche Drama....

    Mittlerweile habe ich ein weiteres GPS Modul von einer anderen Firma bestellt. Aber ich glaube kaum, dass es daran liegt. Das GPS Modul bekommt ja nicht mit, wann ich das Kommando starte, das sendet einfach so lange, bis ich den Strom abschalte. Irgendwie scheinen Startzeitpunkt des Kommandos und Zustand des Empfangsbuffers vielleicht nicht synchron zu sein.... ich habe keinen blassen Schimmer, woran das liegen kann...

    Beste Grüße
    Bucko

  • Bzgl. Schaltung: MMn reichen nur Tx-GPS auf Rx-RPi und GND. GND ist wichtig!

    Das Thema Getty o.ä. hast Du nicht angeschaut?

    Und Tschüss
    Werner


  • Hallöle,
    nichtsdestotrotz bist Du scheinbar dem Hinweis mit dem getty auf der seriellen Schnittstelle noch nicht nachgegangen.
    Entweder mal -> hier <- nachschauen oder über raspi-config die serielle Konsole deaktivieren.

    cu,
    -ds-

    doch, doch, habe es oben schon gesehen und kümmer mich gerade darum, melde mich gleich
    Automatisch zusammengefügt:

    doch, doch, habe es oben schon gesehen und kümmer mich gerade darum, melde mich gleich

    so, ich habe die beiden Dateien kontrolliert, sie waren und sind exakt so, wie oben beschrieben. Meintet Ihr das mit getty? oder ist das noch was anderes?

    2.
    Um noch offende Verbindungen zu eleminieren habe ich den Raspi runtergefahren, den Strom abgeschaltet und dann alles wiede hoch gefahren. Anschließend habe ich das Kommando cat /dev/ttyAMA0 eingegeben und nix ist passiert, obwohl das GPS Modul bereits sendet (habe ich mit dem Oszi kontrolliert). Ich habe das dann alles noch mal gemacht: runter, hochfahren, warten bis Oszi was anzeigt, Kommando eingeben: nix. Aber mit minicon konnte ich den Müll schon wieder sehen, aber auch nach minicon war mit dem Kommando nix zu sehen. Das ist so ähnlich wie vorhin, da kam beim Kommando erst mal nix, später war dann doch was zu sehen... also doch irgendeine Konfiguration? Wo kann ich noch suchen?

    Nachtrag: Nachdem ich mein C Programm 1x gestartet habe, bekomme ich jetzt auch mit dem Kommando cat /dev/ttyAMA0 was angezeigt (sowohl gut also auch schlecht)
    Danke Euch für die vielen Hinweise
    Bucko
    Automatisch zusammengefügt:


    Bzgl. Schaltung: MMn reichen nur Tx-GPS auf Rx-RPi und GND. GND ist wichtig!

    Das Thema Getty o.ä. hast Du nicht angeschaut?

    Und Tschüss
    Werner

    Hallo Werner,

    genau, eigentlich reicht diese minimale Beschaltung (und +5V für das Modul) alle Leitungen sind definitiv vorhanden.

    Zu getty habe ich unten schon die Ergebnisse meiner Prüfungen geschrieben. oder könntest Du bitte noch mal genauer ausführen, was Du mit o.ä. meinst, irgendwo muss da noch was sein.

    Vielen Dank
    Bucko

    Einmal editiert, zuletzt von Bucko (5. November 2015 um 20:05)

  • Schau in die /etc/inittab

    Dort

    Code
    T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100


    auskommentieren/löschen =>

    Code
    #T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
  • Ich bin weiter auf der Suche nach dem Problem.

    Heute habe ich einen komplett neuen Raspi aus der Pakung genommen, habe eine frische SD Karte gekauft, Wheezy darauf installiert und nur wiringPi und bcm2835 noch dazu, dann habe ich die o.g. Dateien bearbeitet um die sereielle Schnittstelle für andere Dienste zu sperren und anschließend getestet: es ist exakt das gleiche Problem wie gestern.

    Man sollte meinen, dass es fast nix einfacheres geben kann, als die Daten, die das GPS Modul freiwillig und dauerhaft sendet, einfach einzulesen...

    Ich bin mit meinem Latein erst mal am Ende und warte auf das GPS Modul von dem anderen Hersteller... Werde berichten.
    Bucko

  • ... das ist aber schade.

    Mach mal "ps x" und Poste das Ergebnis hier - ggf. stört noch ein Prozess.


    Und dein c++/c prgormm setzt alle Parameter korrekt?

    Ich hab hier eines welches meinen Stromzähler ausliest mit 96007E1


    Der gesamte Code müsste hier verfügbar (Stichwort Projekt Stromzähler auslesen)


  • ... das ist aber schade.

    Mach mal "ps x" und Poste das Ergebnis hier - ggf. stört noch ein Prozess.


    Und dein c++/c prgormm setzt alle Parameter korrekt?

    Hallo Werner,

    ich habe ein Screenshot von ps x angehängt, da siehst Du auch, wie ich mit minicom die Schnittstelle aufrufe. Auch mit minicom ist das Ergebnis mal gut mal schlecht. Gleiches gilt für cat /dev/ttyAMA0. Ich glaube, beides ist unabhängig von meinen Parametern im C Programm. (das habe ich noch nicht einmal ausgeführt und trotzdem bringt minicom schon gut/schlecht). Daran kann es dann doch eigentlich nicht liegen, oder doch?
    Ich bin ja kein Experte für Linux, siehst Du was verdächtiges bei dem ps x?

    Vielen Dank für Deine Hilfe
    Bucko

  • Hallo Bucko,

    gestern habe ich Dir nicht völlig grundlos den Befehl [font="Courier New"]cat /dev/ttyAMA0[/font] gegeben.

    Dieser liest die serielle Schnittstelle aus, egal mit welchen Parametern wer oder was darauf geschrieben hat. Das funktioniert immer.

    NUR: Wenn zwei Programme / Anwendungen gleichzeitig um die serielle Schnittstelle buhlen - wie es bei Dir der Fall zu sein scheint, dann passiert das Chaos, wie von Dir beobachtet.

    Und deswegen versucht WernerPi seit geraumer Zeit, Dir Informationen zu entlocken, ob und wenn ja welche Anwendungen dies sein könnten.

    Ich habe vor ein paar Wochen für ein Auftragsprojekt auch ein USB-GPS-Modul angeschlossen und zu keinem Zeitpunkt die von Dir beschriebenen Phänomene beobachten können - selbst nicht wenn [font="Courier New"]cat ...[/font] und [font="Courier New"]cuteCom[/font] gleichzeitig ausgelesen haben. Mal hat das eine, mal das andere Programm sinvolle Zeichen ausgelesen - meistens nur keine ganze Zeile. Aber jedes angezeigte Zeichen war auch im Ausgabe-Stream enthalten. Und mit meiner selbst geschriebeen Auslese-Routine gab es auch nie Probleme.

    Ansonsten kann es noch sein, dass die serielle Schnittstelle nicht vollkommen korrekt eingerichtet ist. Aber auch dazu wurdest Du aufgefordert.

    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!