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
Ist es immer das unterste Bit? Das wird zuerst übertragen. Ist im BT-Modul eine Art Schlafmodus aktiv? Passiert es auch in Folgebytes, die am Stück übertragen werden?
:
Bearbeitet durch User
Allenfalls ist der Rx Interrupt vermurkst ? Wird zu schnell gelesen?
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.
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.