Freescale S12x: SCI Schnittstelle nutzen

Gast #1362564
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
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
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

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.