Ich habe versucht, ein ASCII-Zeichen "A" mit einem Oszilloskop zu sehen, aber der tatsächliche Binärwert und die Oszilloskopwerte sind unterschiedlich, warum ist das so? ASCII "A" Binärwert - 01000001
Das Oszilloskop zeigt diese Grafik an:
Ich verwende ein Arduino Uno, um den ASCII-Wert mit dem Code zu senden:
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println("A");
delay(1000);
}
So lesen Sie die Wellenform des Oszilloskops. Ich habe mir die Zeit genommen, Ihr Wellenformbild zu bearbeiten und zu kommentieren, um zu zeigen, welches Bit welches ist. Der Mikrocontroller sendet 10 Bits pro Zeichen; START, das immer 0 ist, 8 Datenbits und STOP, das immer 1 ist. Die Leitung ruht auch auf 1, sodass die erste fallende START-Flanke den Empfänger darauf aufmerksam macht, dass ein Byte kommt. Die Bits werden zuerst LSB gesendet. Wenn Sie sie also arithmetisch "ansehen" möchten, müssen Sie sie horizontal spiegeln, damit sie einen Sinn ergeben. Die Breite jedes Bits wird durch die Baudrate bestimmt, und Sender und Empfänger müssen beide die Baudrate kennen.
Aus dem unteren Bild können Sie sehen, dass drei Zeichen gesendet werden: ASCII-Zeichen 'A', ein Wagenrücklauf und ein Zeilenvorschub.
Wenn Sie sich die Dokumentation von Arduino println() ansehen, werden Sie sehen, dass am Ende ein Wagenrücklauf und ein Zeilenvorschub angehängt werden. In Dezimalform erhalten Sie also 65 (A), 13 (CR) und 10 (LF), was in Binärform Folgendes bedeutet:
01000001 00001101 00001010
Asynchrone serielle Daten werden zuerst als LSB gesendet, sodass daraus Folgendes wird:
10000010 10110000 01010000
Ihr Signal ist im Leerlauf hoch, also ist das Startbit 0 und das Stoppbit 1, also fügen Sie das zu jedem Byte hinzu und Sie erhalten am Ende:
0100000101 0101100001 0010100001
Es ist ein bisschen schwierig, das genaue Timing aus Ihrem Diagramm herauszuarbeiten, aber das scheint zumindest grob zusammenzupassen und sollte Ihnen eine Vorstellung davon geben, woher einige der zusätzlichen Bits stammen und warum sie neu geordnet werden. Der von Kvegaoro bereitgestellte Wikipedia-Link enthält viele gute Hintergrundinformationen zu asynchronen seriellen Daten.
Wenn dieser Stream, den Sie dort anzeigen, Asynchronous Serial ist, zeigt das Oszilloskop die entsprechenden Startbits, Stoppbits und Paritätsbits an. Berücksichtigen Sie auch, ob Ihr Signal invertiert ist oder nicht und ob es das höchstwertige Bit zuerst oder das niedrigstwertige Bit zuerst ist. Wenn Sie weitere Details über den seriellen Stream hinzufügen, den Sie im Bild dargestellt haben, können wir Ihnen eine bessere, detailliertere Antwort geben, andernfalls ist dies nur eine fundierte Vermutung
Benutzer38701
PkP
Schlafmann
xyz
println
Befehl, was bedeutet, den String zu drucken, sowie ein "\r\n". Also drei ZeichenNikolaus Holthaus