Hallo zusammen!
Ich habe hier schon so viel über GPS gelesen, aber nirgendwo den
richtigen Anstoß für mich gefunden, da ich den HC12 benutze und keinen
ATMEGA.
Also zu dem was ich machen möchte:
Ich möchte "einfach" nur die Zeit aus den GPS-Daten in einer Variablen
speichern. Ich habe ein Navilock NL-501TTL-Modul, kann es also direkt an
den uC anschließen. Gesagt, getan. Habe also die RX/TX-Leitungen an den
SCI-Port des HC12 gepint.
Den SCI-Port habe ich wie folgt initialisiert:
1
SCIBD=0x68;//Baudrate=4800
2
SCICR1=0;
3
SCICR2=0b00001100;//TX und RX enable
4
SCISR2=0;//Standardbetrieb
5
DDRS=0x00;//PortS -> Eingang
Nun zu meiner uC-Anfänger-Frage. Wie komme ich nun an die Zeitdaten z.B.
die nach "RMC...."? Wenn ich den Inhalt des SCIDR-Registers
(Datenregisters) ausgebe, kommt da nicht wirklich etwas Sinnvolles
zustande.
Wäre schön, wenn jemand einen Tipp, Link o.Ä. hätte :)
Danke,
derLars
Ja ähm gute Frage. Weiß nicht genau was du damit meinst.
Also ich habe das Modul schon an den PC gehängt und mit einem
Terminalprogramm nachgesehen, ob es funktioniert. Da erschienen dann die
NMEA-Daten.
Hilft das weiter? :)
Der Lars wrote:
> Ja ähm gute Frage. Weiß nicht genau was du damit meinst.>> Also ich habe das Modul schon an den PC gehängt und mit einem> Terminalprogramm nachgesehen, ob es funktioniert. Da erschienen dann die> NMEA-Daten.
Dan wird das wohl so sein.
Also wird dein erstes Ziel mal sein, ein Programm zu schreiben, welches
ein komplette Zeile empfangen kann. Dazu brauchst du noch nicht mal den
GPS Empfänger. Es reicht schon, wenn dein Programm von deinem
Terminalprogramm eine Zeile empfangen kann und wieder zurückschickt.
Wenn du dann soweit bist, dass dein Programm eine komplette Zeile
empfangen kann (Hinweis: Der Zugriff auf das SCIDR Register ist nur Teil
der Lösung), dann ist der Rest reine Stringverarbeitung um den dich
interessierenden Teil aus einem Datensatz herauszuholen.
An der markierten Stelle bleibt das Programm stehen. Laut meinem
Verständnis kommen erkennt er gar kein Zeichen, richtig?
Sieht vielleicht jemand einen generellen Fehler? Hab alles mögliche
versucht, es ändert sich aber nichts. Die Baudrate müsste auch stimmen,
wenn ich das GPS-Modul an den PC mit einer Anzeigesoftware hänge, wird
die Baudrate von 9600 erkannt.
Vielen Dank schon mal für eure Mühe!
derLars
Wie "hängst" du den das Modul an den PC und wie an den MC?
Möglichkeiten:
- Falsche Belegung (kannst du an den PC senden/empfangen)?
- Fehlender Pegelwandler
- "flascher" Takt...
An den PC über einen MAX232 und an den MC über einen Pegelwandler(von
3,3V auf 5V). Das Ausgangssignal ist auch groß genug, um als Highpegel
erkannt zu werden.
Der PC empfängt die GPS-Daten korrekt. Das Modul funktioniert also. Ich
denke, dass die Pinbelegung auch richtig ist. Bin im Moment etwas
ratlos.
Der Lars wrote:
> An den PC über einen MAX232 und an den MC über einen Pegelwandler(von> 3,3V auf 5V). Das Ausgangssignal ist auch groß genug, um als Highpegel> erkannt zu werden.>> Der PC empfängt die GPS-Daten korrekt. Das Modul funktioniert also. Ich> denke, dass die Pinbelegung auch richtig ist. Bin im Moment etwas> ratlos.
Kannst du vom PC aus Kontakt mit dem HC12 herstellen?
Karl heinz Buchegger wrote:
> Kannst du vom PC aus Kontakt mit dem HC12 herstellen?
Das funktioniert einwandfrei. Habe das Board CardS12 und einen P&E-BDM.
Habe auch schon einige Sachen damit gemacht, nur noch nie etwas mit dem
SCI.
Da ich das SCI1SR1-Register ja nur maskieren will, dürfte die erste
Variante stimmen.
Der HC12 hat 2 SCI-Schnittstellen, habe alles auf SCI1 gemünzt. Hmmm,
ich werde jetzt nochmal alles durchgehen...
Langsam glaube ich, dass die SCI-Schnittstellen im Eimer sind :D
Aber leider habe ich die Erfahrung gemacht, dass 95% der Fehler doch an
demjenigen liegen, der vor der Kiste sitzt.
Habe aber noch eine Frage, habe zwar schon beides ausprobiert, aber es
interessiert mich dennoch:
Muss ich im Data Direction Register eigentlich den RX-Pin als Eingang
konfigurieren? Oder muss ich Widerstände(Pull-up, Pull-down) schalten?
Wenn der Pin als RX vorgesehen ist, müsste das doch nicht so sein, oder?
Der lernbereite Lars