mikrocontroller.net

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


Autor: peterguy (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: APW (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: peterguy (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.