Merkwürdige Fehler mit UART

Gast #4461314
Lesenswert?
• ▲
▼
Hallo,

ich habe ein Bluetooth-Modul vom Typ HC-06 an einen PIC18F24J50 
angeschlossen. Kommuniziert wird über den PIC-eigenen USART mit 9600 
Baud.
Empfänger ist ein Android-Handy mit Bluetooth-Terminal-App.

Das Senden über Bluetooth funktioniert problemlos, die Daten treffen auf 
dem Mobiltelefon ohne Fehler ein. Die Rückrichtung macht aber Ärger, 
etwa 50% der gesendeten Bytes haben Fehler. Es scheint, dass Bits 
"verschluckt" werden, z.B. wird aus dem ASCII-Zeichen 'E' = 0x45 häufig 
ein 'D' = 0x44.

Das Bluetooth-Modul und der PIC scheinen OK zu sein, wenn ich das 
TxD-Beinchen des Moduls mit RxD verbinde (Loopback ohne PIC), werden die 
gesendeten Daten 1:1 zurückgeschickt. Das Gleiche, wenn ich am PIC RX 
mit TX zusammenschalte.

Eigentlich kann das dann nur an einer fehlerhaften Baudrate liegen, doch 
warum treten die Fehler nur beim Empfangen auf? Senden und Empfangen 
nutzen ja die gleiche Rate.

Das Bluetooth-Modul ist von dieser Art:

http://www.ebay.de/itm/HC-06-Wireless-Serial-4-Pin-Bluetooth-RF-Transceiver-Modul-RS232-TTL-for-Arduino/161932084118?_trksid=p2141725.c100338.m3726&_trkparms=aid%3D222007%26algo%3DSIC.MBE%26ao%3D1%26asc%3D20150313114020%26meid%3De3fced382c0f44889a774dfb65daaa0e%26pid%3D100338%26rk%3D1%26rkt%3D10%26mehot%3Dag%26sd%3D351627831125
Gast #4461423
Lesenswert?
• ▲
▼
Ich würde mal versuchen eine andere Baudrate (falls möglich) zu 
verwenden oder im Mikrocontroller die Baudrate in !kleinen Schritten! 
(weiß nicht ob das mit dem PIC geht) nach oben oder unten zu ändern und 
schauen wie sich das auf die Fehlerrate auswirkt. Ansonsten mit einem 
Oszilloskop oder Logic-Analyzer (falls vorhanden) die Länge der 
übertragenen Bits messen. Damit lässt sich zumindest 
ausschließen/feststellen, ob eine zu große Abweichung in der Taktung 
vorliegt.
Gast #4462190
Lesenswert?
• ▲
▼
Vielen Dank für die Tipps!

Inzwischen habe ich den Fehler gefunden. Auf dem Adapterboard des 
Bluetooth-Moduls befindet sich in der Spannungsversorgung eine Diode und 
ein Spannungsregler, die die 3.3V Versorgungsspannung auf knapp 2.5V 
reduzieren. Damit kann der TxD-Pin des Moduls auch nur etwa 2.4V im 
High-Pegel ausgeben. Da der PIC einen Schmitt-Trigger-Eingang hat, ist 
dieser Pegel knapp am bzw. unter dem Limit für logisch 1, wodurch einige 
Einsen zu Nullen werden.

Leider war die dem Modul beiliegende Beschreibung falsch. Dort war eine 
Betriebsspannung von 3-6V angegeben. Erst das Oszilloskop brachte den 
Fehler ans Licht.

Nach Brücken der überflüssigen Bauteile funktioniert die Übertragung 
jetzt fehlerfrei.

Antwort schreiben

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.

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.