Logic Analyzer - Teil 2: Serial- und 1-Wire-Signale sichtbar machen

Im ersten Teil hatten wir mit dem Logic Analyzer und der Auswertesoftware I2C-Signale am Beispiel der Real Time Clock gesehen. Dabei hatten wir in der Software nur wenige Mausklicks benötigt, weil I2C über ein besonderes Schaltfeld angewählt werden kann.

Das gleiche gilt für Async Serial und SPI. Die Signale der Seriellen Schnittstelle (Synonyme Async Serial, RX/TX, UART) können wir also ebenso schnell auswählen.

Nach dem Klicken auf Async Serial öffnet sich ein Fenster, in dem der Input Channel (zur Erinnerung: CH1 am Logic Analyzer wird Channel 0 in der Software) sowie die Parameter der seriellen Verbindung eingestellt werden.

Die zum Seriellen Monitor gesendeten Daten wollen wir zuvor mit dem Eindraht-Thermometer DS18B20 messen und ebenfalls sichtbar machen. Aber wo finden wir 1-wire?

Dafür klicken wir auf das kleine Plus-Zeichen oben rechts, mit dem ein neues Fenster mit den vielen weiteren Schnittstellen geöffnet wird. Durch den Rollbalken im linken Bild sehen wir, dass noch gar nicht alles angezeigt wird. Auf dem rechten Teil des Bildes sehen wir die restlichen Möglichkeiten.

Auch hier öffnet sich nach dem Anklicken von 1-Wire ein weiteres Fenster für die Einstellung des Channels.

Zunächst stelle ich hier Channel 1 (an CH2) ein, um beide Signale gleichzeitig zu zeigen. Später werten wir die einzelnen Signale genauer aus, um die Übereinstimmung mit den angezeigten Werten zu prüfen. Als Aufzeichnungsdauer habe ich 5 Sekunden eingestellt. Der Sketch ist eines der Beispiele für den 1-Wire-Temperatursensor DS18B20 mit Ausgabe der Werte im Seriellen Monitor der Arduino IDE.

Die großen Lücken sind dem delay(1000) im Sketch geschuldet. Und richtig erkennen kann man erst etwas, wenn man mit dem Rollrad der Maus die Auflösung vergrößert und das Fenster ggf. mit dem Mauszeiger verschiebt.

Konzentrieren wir uns zunächst auf den Eindraht-Bus. Auf den folgenden Bildern vergleichen wir die Signale mit der Ausgabe am Seriellen Monitor. Im oberen Bild wird nach dem Reset-Signal zunächst der „Family-Code“ für den DS18B20, also die Zahl 28, übermittelt, anschließend der einzigartige ROM-Code und der CRC (cyclic redundancy check=Prüfwert der Daten), anschließend kommen die Daten, die im zweiten Bild nach Aufweiten mit dem Rollrad besser zu sehen sind. Das helle Feld im Vordergrund ist der Serielle Monitor der Arduino IDE.

Offensichtlich wird die Reihenfolge der Bytes beim ROM-Code aufgrund der Codierung vertauscht. Aber wie man sieht: die Werte stimmen.

Bei den Daten wird die Reihenfolge eingehalten, aber hier wäre der große Stolperstein die Umwandlung der Bytes in einen Wert für die Temperatur. Diese Umrechnung übernimmt zum Glück die Programm-Bibliothek OneWire bzw. DallasTemperature. Details findet man entsprechend im Ordner \Arduino\libraries.

Nun möchte ich Ihnen die Signale für eben diese Datenübertragung vom Micro Controller zur Arduino IDE zeigen:

Die Signale werden in zwei Gruppen übertragen, die erste mit 47 Bytes, die zweite mit 99+ Bytes. Nächster Schritt: beide Gruppen mit dem Rollrad aufweiten. Auf dem nächsten Bild sehen Sie die Zahlenwerte der 47 gesendeten Bytes. Ich habe mich diesmal bei der Anzeige für die Dezimalwerte entschieden, um die Werte mit einer ASCII-Tabelle nachzuprüfen.

82

79

77

32

61

32

50

56

32

70

70

32

57

48

32

53

48

32

50

32

68

68

R

O

M

=

2

8

F

F

9

0

5

0

2

D

D


13

10

32

32

67

104

105

112

32

61

32

68

83

49

56

66

50

48

13

10

CR

LF

C

h

i

p

=

D

S

1

8

B

2

0

CR

LF


Es wurden also die ersten beiden Zeilen der Ausgabe im Seriellen Monitor gesendet.

Nun die zweite Gruppe mit 99+, genau 116 Bytes:

Hier werden die dritte und vierte Zeile übermittelt, beginnend mit zwei Leerzeichen und dem Wort Data. Zwischen 50 und 60ms sehen Sie die Zahlenfolge 13-10. Das ist der Zeilenvorschub, danach beginnt die Ausgabe der Temperatur.

Ich möchte an dieser Stelle noch etwas anderes zeigen: Als ich den Mauszeiger über das Signal geschoben hatte, wurde der Hinweis angezeigt, dass man mit Drücken der Ctrl-Taste (auf der deutschen Tastatur strg) und Mausklick zu einer Tabelle mit den gemessenen Werten kommt, die z.B. wie folgt aussieht:

Hier die Tabelle mit den Werten des 1-Wire Temperatursensors und des seriellen Signals. In der Spalte data sind die Hexadezimalzahlen Werte des Sensors und die Dezimalzahlen die ASCII-Zahlen der Datenübertragung zum PC. Diese Tabelle kann man im Ganzen speichern oder mithilfe einer Markierung in Teilen z.B. kopieren und in Excel weiterverarbeiten.

Alles in allem ist der Logic Analyzer in Verbindung mit der passenden Software ein vielseitiges Werkzeug, um die Signale der verschiedenen Übertragungsprotokolle auszuwerten und sichtbar zu machen.

Zum Schluss möchte ich allen, die mit Hexadezimal- und Binärzahlen hadern, noch kurz ein paar Kniffe für den Windows-Taschenrechner zeigen. Bei Linux und Mac OS gibt es sicherlich vergleichbare Programme.
Mit der Voreinstellung Standard hat man normalerweise einen Rechner für die Grundrechenarten. Ich nenne das Tchibo-Rechner, weil die ersten bezahlbaren Taschenrechner beim Kaffeeröster gekauft werden konnten. Für die Winkelfunktionen, die auf einem Rechner für Pennäler erforderlich sind, kann man mit Mausklick „Wissenschaftlich“ einstellen. Und mit der Einstellung Programmierer bekommt man u.a. Hilfsmittel für die Umrechnung zwischen den verschiedenen Zahlenformaten Dezimal, Binär (auch Dualzahlen genannt) sowie Hexadezimal (Basis 16) und Oktal (Basis 8) sowie Zugriff auf die Funktionen (Schaltfläche Bitweise) und Bitverschiebung (zweites Bild).

Die Hexadezimalzahl 68, in Programmen als 0x68 dargestellt, entspricht der Dezimalzahl 104, der Oktalzahl 150 und der Dualzahl 0110 1000.

Ich wünsche allen Detektiven viel Erfolg, die sich auf die Suche nach Bits und Bytes machen.

Projets pour débutantsCapteursMaison intelligente

Laisser un commentaire

Tous les commentaires sont modérés avant d'être publiés

Messages de blogs recommandés

  1. Installez maintenant ESP32 via l'administrateur de la carte
  2. Lüftersteuerung Raspberry Pi
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1
  4. ESP32 - das Multitalent
  5. OTA-Over the Air-ESP Programmation par WiFi