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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.