mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PIC UART Rx im 7Bit-Modus?


Autor: heinzhorst (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Weiß jemand, wie man mit dem UART im 7-Bit Modus empfangen kann? 1 
Startbit, 7 Datenbits, 1 Stopbit, kein Paritätsbit, 9600 Baud. 
Controller ist ein PIC32MX795F512L (PIC32 Ethernet Starter Kit). Brauche 
nur den Rx-Modus. Der UART des angeschlossenen Gerätes kann nicht 
verändert werden. Hoffe, dass ich den UART nicht in Software machen 
muss.

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der kann das nicht laut Datenblatt. Würde es dennoch testen.
Der Knackpunkt ist folgender: Zwischen einem Frame und dem Nächsten ist
normalerweise 1.5 Bittime Pause, eigentlich 0.5 wenn man das Stop-Bit 
nicht
mitzählt. Wenn der Sender nun das nächste Frame zu schnell raussendet,
dann könnte der Pic einen Framing Error signalisieren.
Dem könntest du auch eventuell Abhilfe schaffen, wenn du das 
Timing(Baudrate)
etwas erhöhst, eventuell einen krummen Quarz oder PLL Einstellung.

Prinzipiell müsste es machbar sein, das mit dem Hw-UART zu machen und
die Daten mit 8Bit zu Empfangen.

Autor: Reinhard Kern (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Chris schrieb:
> Der kann das nicht laut Datenblatt. Würde es dennoch testen.
> Der Knackpunkt ist folgender: Zwischen einem Frame und dem Nächsten ist
> normalerweise 1.5 Bittime Pause...

Nein, wenn die Angaben stimmen nur 1 Stopbit. Dann nimmt der Empfänger 
das Stopbit als 8 Datenbit (wäre kein Problem), findet anschliessend 
aber statt des Stopbits das nächste Startbit und meldet einen Framing 
Error. Auch das wäre noch nicht schlimm, aber das nächste Zeichen 
startet schon fehlerhaft, weil das Startbit überlesen wurde, wo der 
Empfänger dann mit dem nächsten Zeichen beginnt ist ziemlich zufällig.

Es könnte nur funktionieren, wenn der Sender mit 2 Stopbits arbeiten 
würde.

Gruss Reinhard

Autor: chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zwischen zwei Byte wird minimal ein halbes Bit abgewartet, bis das 
naechste gesendet wird. Wei da auch noch FIFO drin sind, muss man die 
Frequenz erhoehen, entweder mit Einstellungen der Register, oder der 
Verwendung einer anderen PLL Frequenz oder eines leicht schnelleren 
Quarzes. Worst case. Angenommemn 9600bps oder 104uS dann wuerde byte 7 
bei 824uS starten und bei 828uS enden mit einer Toleranz von 4uS.
Bei 10 bit (S+8+S) waeren das 83uS oder 12000bps, dann muesste eine 
Einstellung nahe 10700bps funktionieren ohne irgendwelche Probleme zu 
machen, gehe nicht weiter auf die Register sowie der Validierung des 
Zeitrahmens ein da es nur ein fiktives Beispiel ist sowie keine weiteren 
infos Vorliegen.

Autor: heinzhorst (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Problem gelöst. Hab einfach das MSB abgeschnitten mit

data_array[data_index] &= 0b01111111;

Die empfangenen Bytes werden von meinem Programm in ein Array 
geschrieben. Hab dann mal mit dem Debugger den Inhalt des Arrays 
angesehen und mit den Daten verglichen, die ich mit PC und 
Terminalprogramm mit der Einstellung 7N1 von dem angeschlossenen Gerät 
empfange. Daten sind identisch. Trotzdem: Danke für Eure schnellen 
Lösungsvorschläge!

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.