mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik UART0 Programmierung M16C/62P


Autor: oliver (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Zusammen


Ich möchte Euch um Rat fragen betreffend der Programmierung des UART0
auf meinem Glyn Board EVBM16C/62P
Zum schreiben des Codes verwende ich den Tasking Compiler.

Ich habe an UART0 einen Transponderleser "CONRAD" angeschlossen
Die Daten welche ich empfangen möchte mit 9600 baud sind:
<STX> [Byte1] [Byte2] [Byte3] [Byte4] <EOT>

[Byte1]... usw. sind ASCII codes
STX ist 002
EOT ist 004
******************************­******************************­*******

Nun der Buffer wird gefüllt mit Zeichen, das ist OK.

Das Startbit und das Stoppbit schlagen aber nicht an.
weiss jemand wieso?
ist meine initialisierungsroutine nicht korekt?
Was müsste geändert werden? um obengenannte Daten zu empfangen

Ist U0BRG = 0x67 in der initialisierungsroutine richtig für 9600 baud?
- ich schnalle es noch nicht ganz. wie man das berechnet.
vielleicht kann mir das jemand mal erklären?

Ist die Auswertroutine für die seriellen Daten so in Ordnung?
Das müsste man doch so machen können?

Vielen Dank

Gruss Oliver













Hat jemand ein Lösungsvorschlag für dieses Problem? wie ich auch die
anderen Bytes auswerten kann.
Stimmt die Initialisierung?
Evt. mache ich einen Grundsätzlichen Fehler, welchen ich mir gerne
erklären lasse.


oder Hat jemand eine lauffähige Routine um diese eingehenden Daten aus

4 Bytes abfragen zu können?


Besten Dank jetzt schon


Oli


Antworten

Autor: Uli Strobelt (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi Oli.

@"Ist U0BRG = 0x67 in der initialisierungsroutine richtig für 9600
baud?"

Ja, wenn Deine System Clock auf 16 MHz steht(clock division factor = 1,
kann man bei mir im Compiler(Tasking EDE) einstellen).
Berechnung:
System Clock durch 16 teilen, dann durch die gewünschte Baudrate und
dann minus 1. Das Ergebnis ist der Wert des BRG.
z.B: ( (16000000 / 16) / 9600 ) - 1 = 103.   (== 0x67)


Mit "Startbit" und "Stopbit" meinst Du sicher "Startbyte" und
"Stopbyte"!?!
Kann nicht sagen, warum's nicht tut, weil man die Initialisierung
im Quelltext nicht sehen kann.

Grundsätzlich (nach kurzem überfliegen) würd ich sagen, dass
man das so machen kann.

Gruß,
uli

P.S: Anbei meine "se_initialize_port()" - Routine.

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Uli für Deine Info bezüglich der Programmierung des UART0
Deine Erklärungen sind gut und auch für mich als "Anfänger" gut
verständlich.
Nun sind mir schon wieder einige Dinge klarer geworden

Ich werde mal wieder weiterprobieren, werde mich dan wieder melden

Nochmals besten Dank

Gruss Oliver

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ich weis, das ist bereits ein ziemlich alter Thread, jedoch habe auch 
gerade ein vergleichbares Problem und bin per Zufall hier gelandet. Im 
Sourcecode von Uli ist mir dabei ein kleiner Fehler aufgefallen:

Er setzt das UiBRG-Register praktisch als erstes bei seiner 
Initialisierung. Laut Datenblatt (für meinen M30626FHPFP) sollte man 
jedoch zuerst das UiC0 Register setzen, bevor man ins UiBRG-Register 
schreibt. (Jedenfalls wenn man an den CLK0 und CLK1 Bits des 
UiC0-Registers etwas ändert)

Damit ist zwar mein Problem noch nicht gelöst, aber ich wollte das nur 
ergänzen, damit möglichst keine Fehler durch solche Vorgaben entstehen.

Gruss,
Andreas

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.