www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik µ-Blox Protokollverständnisfrage


Autor: Daniel Lancelle (bucho)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute!

Ich hab hier das SAM-LS Modul von µ-Blox an einen Mega128 gebaut. Daten
kommen schonmal raus. Allerdings will ich die Datenausgabe etwas
konfigurieren. Zum Einstellen des USARTS wollte ich eine Proprietary
NMEA Message verwenden. Diese ist folgendermaßen aufgebaut:

$PUBX,41,usart_id,in_proto,out_proto,baudrate,autobauding*cs<CR><LF>

Ich verstehe nicht genau, wie ich die Werte in_proto und out_proto
setzen soll, um die Protokolle festzulegen, die gesendet bzw. empfangen
werden dürfen. In der Protokoll beschreibung steht nur:

Bitmask, specifying which protocols(s) are allowed for input. The
following bits are valid protocol numbers: 0: UBX 1: NMEA 2: RTCM
12-15: USER0-USER3

Ich werde aus dieser beschreibung nicht ganz schlau. Hat jemand
schonmal damit gearbeitet und kann mir einen Tip geben? Das wäre nett.
Danke und Gruß

Autor: Axel R. (axelr) Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nunja, WAS soll denn aus USART0 rauskommen? NMEA sicher, oder?->Dann
$PUBX,41,0,1,1,19200,0*CHECKSUMME<CR><LF>
Ich denke nicht, dasss Du an USART1 was machen willst?

Die Datanausgabe etwas konfigurieren?
Mit dem Befehl $PUBX stellst Du nur das Protkoll und die Baudrate ein.

Wäre es für dich nicht interessanter, zB nur die NMEA Sätze GGA und RMC
alle Sekunde zu konfigurieren? Das geht mit diesem Befehl leider nicht.

Autor: Daniel Lancelle (bucho)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aus dem USART soll NMEA rauskommen. Ich will USART1 verwenden. USART0
gibt es bei diesem Modul nicht; nur USART1 und 2. Wie ich die Ausgabe
der NMEA-Sätze konfiguriere, weis ich. Mir geht es nur darum
einzustellen, daß am USART1 NMEA mit 9600 Baud ausgegeben wird. Ich
glaube nicht, daß für in_proto und out_proto eine 1 reicht denn im
Beispiel steht folgendes Konstrukt:

$PUBX,41,1,0007,0003,19200,0*25<CR><LF>

Also für die Bitmasken steht da: 0007 und 0003.
Allerdings steht nicht dabei, was man damit einstellt. Ich verstehe
nicht genau wie diese Bitmasken gebildet werden. Hat hier noch keiner
mit diesem Modul gearbeitet?

Gruß

Autor: Axel R. (axelr) Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da war ich wohl ein wenig voreilig... schäm

Ich zieh mir mal das Datenblatt.
Gruß zurück
AxelR.

Autor: Axel R. (axelr) Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PUBX 41 - Set Protocols and Baudrate
$PUBX,41,usart_id,in_proto,out_proto,baudrate,autobauding*cs<CR><LF>


Name ASCII String Units Description
Format Example
$PUBX  string  $PUBX    Message ID  Proprietary NMEA sentence header
41  numeric  41      Proprietary message identifier
usart_id    1    USARTID  Range: 0..2
in_proto  hexadecimal  0007    Input Protocol Mask  Bitmask, specifying
which protocols(s) are allowed for input. The following bits are valid
protocol numbers: 0: UBX 1: NMEA 2: RTCM 12-15: USER0-USER3
out_proto  hexadecimal  0003    Output Protocol Mask  Bitmask,
specifying which protocols(s) are allowed for output. The following
bits are valid protocol numbers: 0: UBX 1: NMEA 3: RAW 12-15:
USER0-USER3
baudrate    19200  bits/s    Baudrate
autobauding  numeric  0      Autobauding:
1 = enable
0 = disable
cs  hexadecimal  *25    checksum  Message checksum
<CR> <LF>          End of message


Example

$PUBX,41,1,0007,0003,19200,0*25<CR><LF>

Soo, jetzt siehts etwas klarer aus:
die 0007 bedeutet, dass Bit 0,1,2 gesetzt sind, also
UBX(Bit0) erlaubt ist, NMEA(Bit1) erlaubt ist und ebenso RTCM(Bit2)
erlaubt ist.
Wenn Du ausschliesslich mit NMEA arbeiten willst, darfst Du nur Bit1
setzen.
Folglich war mein Post sowieso falsch .-(

Wenn Du nur NMEA Daten "ziehen"(also ausgeben) willst, musst Du
folglich auch Bit1 in der Bitmaske für proto_out setzen.

Input: erlaubte werte

2^0  =     1 => UBX
2^1  =     2 => NMEA
2^2  =     4 => RTCM
2^3 bis 2^11 nicht definiert
2^12 =  4096 => User0
2^13 =  8192 => User1
2^14 = 16384 => User2
2^15 = 32768 => User3

Je nach dem, was Du nun machen möchtest, addierst Du alles zusammen,
rechnest nach HEX um trägst das entsprechend ein.

Bei output werden andere Werte aktzeptiert, das Prinzip ist das
gleiche.
2^0 = 1 => UBX
2^1 = 2 => NMEA
2^2 = 4 nicht definiert
2^3 = 8 => RAW
2^4 bi 2^11 nicht definiert
2^12 =  4096 => User0
2^13 =  8192 => User1
2^14 = 16384 => User2
2^15 = 32768 => User3

könnte man auch anders schreiben (quer von links nach rechts), bekomme
ich aber nicht hin (inselbegabung gg )

NMEA aus UART1 in+out mit 9K6 sähe dann so aus.
$PUBX,41,1,0002,0002,9600,0*CHECKSUMME<CR><LF>

Die Checksumme  musst Du alleine ausrechnen XOR über alles ausser
"Dollar" und "stern", glaube ich. Bin mir aber nicht sicher!

Autor: Daniel Lancelle (bucho)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
AAAAHHHHHH! Jetzt geht ein Licht auf. Vielen Danke. DAs mit der
Checksumme ist kein Problem, daß krieg ich hin. Werde gleich mal ein
wenig experimentieren und gucken ob das klappt. Nochmals Danke für
Deine Bemühungen.

Gruß

Autor: Daniel Lancelle (bucho)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schade, kommt nur Kraut und Rüben raus. Da muß irgendwo anders noch ein
Fehler sein. Ich denke, daß das Protokoll so richtig ist, wie Du es
geschrieben hast. Naja, mal schauen.

Gruß

Autor: Marco S. (masterof)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
abo

Autor: Axel R. (axelr) Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, steht sicher auf UBX.
BTW: wenn man schon länger mit dem Zeuchs zu tun hat, wird man eh auf
UBX umstellen, ist mehr an infos drinne.
Kannst ja vom "Gemüsegarten" einen Scrennshot machen. kannst Du die
Werte in HEX ausgeben lassen?
Andere Baudrate hast Du sicher schon probiert...

Autor: Daniel Lancelle (bucho)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Im Anhang ist ein Bild davon. Ich habe alle möglichen Baudraten
ausprobiert. Laut Datenblatt sollte aber Defaultmäßig NMEA bei 9600
Baud rauskommen. Ich vermute eher einen Bauraten- oder Hardwarefehler,
denn die Daten kommen Bruchstückweise und nicht als ganze Sätze raus.
Manchmal hängt sich Hyperterminal auch auf. Vielleicht liegt es auch an
der Hardware, die ich dazwischen gesetzt hab um die 5V Pegel auf 3V3
umzusetzen. Auch weis ich nicht genau ob das Signal invertiert ist.
Aber eigentlich müßten die Signale so rauskommen, daß man sie direkt an
den UART eines µCs stricken kann. Ich habe leider kein Oszi hier um die
Pegel zu überprüfen.

Gruß

Autor: Axel R. (axelr) Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Man kann ja auch was andres nehm, als ausgerechnet Lehm (altes Berliner
Volkslied)

Probier mal ein anderes Prog als wie als Hyptertrm.
Sieht sehr nach "invertiert" aus.

Gab es hier in der leztzen Woche schonmal einen Thread drüber. sah
ähnlich aus, finde ich jezt (auf Anhieb) nicht mehr. Muss ich mal
meinen email Posteingang durchforsten.

Autor: Daniel Lancelle (bucho)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So, ich hab jetzt endlich die richtige Baurate gefunden. Es kommen UBX
Daten raus. Hab jetzt mal
$PUBX,41,1,0002,0002,9600,0*CHECKSUMME<CR><LF> an das Modul geschickt,
aber nix ändert sich. Naja, immerhin ein kleiner Schritt weiter, aber
leider funzt es noch nicht so, wie ich es mir vorstelle.

Autor: Axel R. (axelr) Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was hast als Checksumme? kann ja nur die noch falsch sein...
Oder - da er ja keine USART0 hat, fängt der Index für die USARTs bei
NULL an und nicht bei EINs

Autor: Daniel Lancelle (bucho)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo...

Checksumme ist 14. Ich bin mir sicher, daß sie richtig ist. Hab mir
nämlich ein Programm zum Senden von NMEA-Atrings geschrieben, daß hat
immer funktioniert. Ich probier nochmal andere UART-Nummern.

Gruß

Autor: Daniel Lancelle (bucho)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmm, hab für den UART 0-2 alles durchprobiert. Zeigt leider keine
Wirkung. Ich seh das schon allein daran, daß die Baudrate nicht
geändert wird. Verdammte Axt, das kann doch nicht so schwer sein, einen
Einfachen Befehl laut Datenblatt an das Modul zu schicken!

Gruß

Autor: Daniel Lancelle (bucho)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sooo. Inzwischen bin ich etwas schlauer. Da da Modul auf UBX
konfiguriert war, muß die Umstellung ja auch im UBX-Format vorgenommen
werden. Ich habe mir jetzt U-center von der U-Blox Homepage
runtergeladen und das Modul an den Comport angebaut. Ich kann Buadrate
und Protokoll ändern. Die Kommunikation zum Modul funktioniert.
Allerdings kann ich die Einstellungen im Modul nicht fest speichern,
sodaß sie nicht flüchtig sind. Ich habe gehört, daß man dazu unter
Tools/Configuration einmal die Einstellungen auslesen und dann wieder
schreiben muß; dabei ist dann das Kontrollkästchen zu makieren, daß die
Daten fest gespeichert werden sollen. Soweit sogut, daß Problem ist
jetzt, daß wenn das Modul auf NMEA eingestellt ist, kann man die
Einstellungen nicht lesen/schreiben. DAs funzt nur, wenn das Modul auf
UBX eingestellt ist. Das ist natürlich ein Problem, wenn man NMEA haben
will. Gibts noch ne andere Möglichkeit, die Einstellungen fest zu
speichern?

Gruß

Autor: Axel R. (axelr) Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi, Du brauchst die Flash Update SW und den Flashloder.bin (komme jetzt
nicht auf die Dateieendung) Damit geht das dann. Stellt man einmalig
ein und gut.
Gibt es auch bei ublox.

Autor: Daniel Lancelle (bucho)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, ich schau mal.


Gruß

Autor: mgiaco (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie kann man den das Modul umstellen das UBX Daten herauskommen, wenn
ich das mit dem u-center umstelle kommt nichts mehr. Nur wenn ich NEMA
einstelle kommen Daten.

Besten Dank,

mfg mathias

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.