Forum: Mikrocontroller und Digitale Elektronik Freescale S12x: SCI Schnittstelle nutzen


von peterguy (Gast)


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

von APW (Gast)


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.

von peterguy (Gast)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.