Hyperterminal, Bluetooth, Enhanced USART, PIC

Ich verwende PIC16F1824, Xtal 8 MHz und ein Bluetooth-Modul mit einer Baudrate von 9600. Wenn ich Daten über Hyperterminal an das BT-Modul gesendet habe, funktioniert es einwandfrei. Aber wenn ich dieselben Daten mit Android (Amarino) sende, wurden die empfangenen Daten beschädigt.

Was schief gelaufen ist?


Zusätzliche Informationen: Beschädigte Daten. @Kevin: Originaldaten: 1234567890 Aber als ich mit Android gesendet habe, lautet es 1234!!0 Irgendwie hat 56789 gefehlt.**

Ein anderes Beispiel: ABCDEF, aber es liest sich nur als ABCD!! Grundsätzlich kann es nur die ersten 4 Zeichen lesen.

Wir brauchen viel mehr Details als diese. Es gibt Tonnen von Dingen, die schief gehen könnten.
Sicher, dass die Einstellungen des Amarino mit denen Ihres Hyperterminals übereinstimmen? Sieht nach so einem Problem aus.
Können Sie beschreiben, was Sie mit „beschädigt“ meinen? Hast du es tatsächlich abgegrenzt?
Was sie zu sagen versuchen, ist, dass eine einfache Scope-Aufnahme der Daten auf der Leitung Ihnen sagen wird, wo das Problem seinen Ursprung hat.
Die gleichen beschädigten Zeichen beide Male mit unterschiedlichen Daten bedeuten, dass dies fast garantiert von Android oder dem Modul beabsichtigt ist.

Antworten (2)

Sie haben nicht viele Informationen gegeben, aber das riecht nach einem Konfigurationsproblem der seriellen Schnittstelle. Sind Sie wirklich sicher, dass die Baudrate, die Anzahl der Datenbits, die Parität und die Anzahl der Stoppbits in beiden Fällen gleich sind? Wahrscheinlich nicht. Da es mit Hyperterm funktioniert, sehen Sie, worauf es eingestellt ist, und stellen Sie dann sicher, dass das Android auf dasselbe eingestellt ist.

Sehen Sie sich auch an, wie die Flusskontrolle gehandhabt wird. Wenn das Gerät erwartet, RTS/CTS zu verwenden, und das Android diese Leitungen nicht angeschlossen hat oder nicht eingeschaltet hat, könnte es dazu führen, dass es nicht funktioniert.

wo er zwei verschiedene Plattformen für Terminals hat, scheint dies wahrscheinlich.
Danke @Oline. Ich werde mich mit RTS/CTS-Sachen befassen. Es gibt keine Einstellungen für Baudrate, Parität oder RTS/CTS in Android. Ich werde mehr darüber recherchieren. Normalerweise werden alle Einstellungen im Bluetooth-Modul vorgenommen. Wobei ich das BT Module 9600 8 N 1 eingestellt habe und es für Hyperterminal funktioniert. Eine weitere Sache, ich habe eine andere MCU, PIC18F452. Es funktioniert einwandfrei ok. Mit demselben BT-Modul kann ich Daten mit Hyperter und Android senden. Der Unterschied besteht darin, dass PIC18F452 USART verwendet, während PIC16F1824 ENHANCED USART verwendet.
@Olin, die Tatsache, dass einige der Daten unbeschadet durchkommen, andere aber nicht, sagt mir, dass es heimtückischer ist als die Baudrate. Wenn es Baudrate wäre, wären seine Daten im Großen und Ganzen beschädigt. Mit einem Fehler wie diesem beschädigt jemand die Daten, fast garantiert, dass es im Android-Telefon ist, obwohl ich Android liebe.
Danke @Kortuk. Am Anfang habe ich nicht viele Details zu den Daten und dem Code preisgegeben. Basierend auf diesen Informationen bat mich @Olin, RTS/CTS zu überprüfen.
@mlam, jetzt, da Sie mehr Informationen gegeben haben, könnte es sich möglicherweise um ein Pufferüberlaufproblem handeln. Das könnte bedeuten, dass das Modul eine Art Flusskontrolle erwartet, die Android nicht durchführt.
@Olin, ich habe die Porteinstellungen überprüft. Die Flusskontrolle ist Keine. Ich habe andere serielle RS232-Software und verschiedene Flow COntrol ausprobiert, aber alle sind fehlgeschlagen. Es werden nur 4 Zeichen gelesen. Könnte es an den MCU-Einstellungen liegen? Oszillator? Timer?
Du hast auf die Quelle hingewiesen, Android. Es hat keine Einstellungen, aber ich habe das Senden von Daten verlangsamt. Anstatt die gesamte Zeichenfolge zu senden, wird im Grunde genommen Byte für Byte gesendet. Danke @Oline!

Ich habe dies mit einer Sena Bluetooth-App in Android für mein Android versucht. Ich habe sichergestellt, dass mein CTS und RTS meines Bluetooth-Moduls miteinander verbunden sind. Meine Bluetooth-App erforderte, dass ich die Baudrate auf 115200 einstellte. Ich war erfolgreich bei der Datenübertragung.

Sie müssen Ihr Bluetooth-Modul einschalten und die Baudrateneinstellungen ändern. Siehe folgenden Link:

Wie ändere ich die Baudrate für Bluesmirf, ohne eine Verbindung zum PC herzustellen?

Danke @ Sai. Ich verstehe nicht, was Sie mit "Ich habe sichergestellt, dass mein CTS und RTS meines Bluetooth-Moduls miteinander verbunden sind." Meine Baudrateneinstellungen sehen ok aus, 9600 8 N 1. Es funktioniert mit Hyperter.
Bitte verwenden Sie keine Signaturen. Ihr Gravatar, Benutzername, Ruf, Badge-Zähler usw. befinden sich alle in der unteren rechten Ecke Ihrer Antwort.
Sofern Sie keine Flusskontrolle verwenden, können Sie Ihre CTS- (clear to send) und RTS- (ready to send) Pins miteinander kurzschließen, um anzuzeigen, dass das Gerät immer sende- und empfangsbereit ist.
Außerdem sollten Änderungen weitgehend unabhängig von den Kommentaren sein und Ihre Antwort möglichst zusammenhängend hinterlassen: Sie möchten, dass es so einfach zu lesen und zu verstehen ist wie möglich! Um die Frage von @mlam zu beantworten, sollten Sie im zweiten Satz erläutern, warum Sie CTS und RTS verbunden haben, nicht als Bearbeitung, oder direkt in einem Kommentar antworten, wenn Sie nicht der Meinung sind, dass die Informationen in Ihre Antwort gehören, oder beides.
@Kevin: Tut mir leid. Ich konnte den Beitrag von mlam nicht kommentieren. Das kann ich jetzt