Freescale S12x: SCI Schnittstelle nutzen

Gast #1362564
Lesenswert?

Hallo Forum,

ich weiß daß die Freescale MCUs hier wenig verbreitet sind, aber 
vielleicht kennt sich der Ein oder Andere ja doch aus... Es kann auch 
sein, daß das Problem auf andere Controller übertragen werden kann.

Ich verwende einen S12X MCU und möchte über die SCI Schnittstelle mit 
einem GPS Modul reden.
Empfangen von Daten (GPS --> S12X)klappt soweit problemlos.
Jetzt möchte ich aber auch Daten an das GPS Modul senden. Leider habe 
ich keine gute Idee wie das zu implementieren ist, denn es gibt nur ein 
Dateneregister.
Dieses wird zum lesen und schreiben genutzt. Was passiert wenn ich in 
das Register Daten schreibe und kurz vorher ein neues Byte empfangen 
wurde. Führt das nicht zu Datenverlusten?

Viele Grüße,
Peter
Gast #1362843
Lesenswert?

Ich benutze zwar noch den 9S12 (ohne X), aber auch beim S12X ist es so, 
dass du ins Datenregister (SCIDRH/SCIDRL) reinschreiben kannst, ohne die 
Daten im Empfagspuffer zu beeinflussen. Das was du reinschreibst, wird 
gesendet, das was empfangen wurde, kann aus demselben Register 
ausgelesen werden.
Man muss nur aufpassen, dass der Sendepuffer bereits wieder frei ist, 
wenn man neue Daten reinschreiben will (TDRE Flag). Genauso muss man das 
empfangene Byte rechtzeitig lesen, bevor das darauffolgende Byte 
komplett empfangen wurde (siehe Beschreibung zu RDRF + OF (Overrun Flag) 
im Datasheet)

Was damit natürlich nicht geht, ist, dass du Daten ins Senderegister 
reinschreibst und genau diese woanders im Programm aus dem Register 
rücklesen willst. Da würdest du den Empfangspuffer auslesen.
Gast #1363269
Lesenswert?

Ah, also hat das Register je nach Zugrif (lesend/Schreibend) eine andere 
Funktion? Das würde bedeuten, lesend bekommt man immer das Receive 
Register zurückgeliefert und wenn man schreibt, wird der Wert auf das 
transmit register umgeleitet?

Ich meine das könnte echt sein, Freescale belegt ja ganz gerne Register 
mit Doppelfunktion.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren