Wenn man sich mit Mikrocontrollern beschäftigt, benötigt man ein Werkzeug, um die digitalen Signale im Fehlerfall oder einfach zur Überprüfung sichtbar zu machen.
Bei langsamen und simplen Signaländerungen genügt oft eine LED, die den Zustand optisch anzeigt. Für komplexe Signale und schnelle Änderungen, wie z.B. bei seriellen Protokollen, muss man den Datenstrom aufzeichnen, um ihn zu analysieren. Ein Speicheroszilloskop kann hier helfen.
Möchte man es komfortabler, ist der Einsatz eines Logic Analyzers sinnvoll. Schon preiswerte Geräte bieten eingebaute Protollanalysen mit an, die einem das manuelle Umrechnen der Bitfolgen und das Recherchieren deren Bedeutung abnehmen.
In meiner "Werkzeugkiste" befindet sich dazu ein kleiner 8-Kanal Logic Analyzer, der für unter 20€ erhältlich ist. Der Aufdruck vermittelt den Eindruck, dass das Gerät von Saleae stamme, es ist jedoch ein Clone.
Zum Testen habe ich am seriellen Ausgang eines Arduino Uno ASCII Zeichen mit einer Rate von 9600 bit/s ausgegeben.
Der Anschluss an die auszuwertenden Quellen ist per Adapterkabel mit Klemmprüfspitzen möglich. Mir genügten 2 Kabel mit Dupont-Steckverbindern. Die Belegung des 10-poligen Steckers ist auf der Vorderseite ersichtlich.
Die Auswertung der Daten erfolgt am PC, die Übermittlung via USB 2.0.
Zur Analyse kann man das Programm "Logic" von Saleae nutzen. Als Alternative bietet sich PulseView (V 0.3.0) an, ein Open Source Programm, das zum sigrok Projekt gehört.
Logic 1.1.15
Via Pulldown Menü können Sample-Umfang und Sample-Rate eingestellt werden:
Ein Druck auf den Start-Button startet das Sammeln und Übertragen der Daten:
Wird dabei der Stop-Button gedrückt, bleiben die bis dahin gesammelten Daten zur Auswertung erhalten.
Die gesammelten Daten erscheinen hier in Kanal 0, der schon als Serial 0 bezeichnet ist:
Per Maustasten kann in die Darstellung vergrößert oder verkleinert werden.
Durch Auswahl eines geeigneten Analyzers - hier Async Serial - werden die Daten gedeutet:
... erkennbar an den dunklen Balken mit dem Inhalt der Daten, oberhalb des Signalverlaufs.
Bewegt man den Mauszeiger in die einzelnen Bits des Signals, so werden unter "Measurements" Pulsweite, Periodendauer und Frequenz des mit Pfeilen markierten Datenabschnitts angezeigt:
Ein nützliches Feature: durch Druck auf den Pfeil-Reiter ...
wird die aktuelle Auswertung in einer eigenen Registerkarte abgelegt und man kann parallel eine neue Auswertung starten.
PulseView 0.3.0
... wartet mit einer größeren Anzahl an Analysatoren auf.
Ich wähle UART - Universal Asynchronous Receiver Transmitter - das serielle Protokoll. Das Datensammeln wird via Run-Button gestartet. Der Datenstrom wird in der Zeile von Kanal 0 dargestellt. Die Analyse des Seriellen Signals in der UART-Zeile ganz unten
Die Betätigung des Zooms ist komfortabel per Mausrad gelöst. Die Darstellung der UART-Analyse gefällt mir besser, als bei Logic.
Pulsweiten, Periodendauern und Frequenzen kann man ebenfalls messen. Hierzu muss man jedoch manuell 2 Cursor setzen, die leider nicht am Signalverlauf einrasten. Die Messgenauigkeit hängt also von der eigenen ruhigen Hand und Sehschärfe ab.
Die weitere Praxis wird zeigen für welches Anwendungsszenario, welches Programm am nützlichsten ist.
Schön wäre natürlich, wenn durch Weiterentwicklung eins der beiden Programme alle Vorteile vereinen würde.