Forum: Mikrocontroller und Digitale Elektronik Mein Logicanalyser verlangt nach einem "Burst-Mode"


von Jonas B. (jibi)


Lesenswert?

Moin,

ich hab mir am Wochenende einen kleinen Logicanalyser auf Basis eines 
Xplain-Boards gefrimmelt. Dazu hab ich ne rudimentäre Software für den 
PC geschrieben. Erste Tests haben mich echt überrascht, das ganze 
scheint soweit zu funktionieren, für 26h Dauerprogrammieren mal ganz 
respektabel ;).
Aber warum das Ganze? Tja ich wollt halt ein unbekanntes Signal 
analysieren, und mein Uralt DDR Oszi hat mir nur geholfen die 
Signalpegel aufzueigen, was da übertragen wird, ja etwa die genauen 
Bytewerte - keine Chance oder es wird ne neue Sportart draus...
Da das Signal aber im unteren Frequenzbereich lag (unter 10khz), dachte 
ich mir ich nutze die Gunst der Stunde und öffne mal ein kleines 
Projekt, ihr habt es erraten, einen Logicanalyser.

So hab da zwei Fragen:

Ich sample mit dem LA im Moment die Kommuikation zwischen  zwei FM433 
Modulen, soll heißen hab am Empfänger den Dataout Pin abgegriffen, sowie 
am Sendemodul den Modulationspin vor dem Sender. Und siehe da beide 
Signal sehen gleich aus ;), aber wie kriege ich nun raus, was da genau 
gesendet wird, wie bestimmt ich die Bitrate?
Meine Idee dazu wäre, ich mache einen Art Sweep Mode, in dem ausgehend 
von der kleinsten Samperate, alle Sampleraten ausprobiert werden, bis in 
zwei aufeinanderfolgende Samples ein Bit erkannt wird. Das wird aber 
vorraussetzen, dass ich genau die Bitrate mit der Samplerate 
treffe...Das ist wohl nicht der richtige Ansatz...
Beim Burst-Mode, werden ja nur bei Änderungen zwischen neuem und altem 
Sample gespeichert, was passiert aber dabei mit Pausen im Signal? Die 
Verschwinden dann jawohl oder?

Helft mir mal auf die Sprünge. Danke!

Gruß Jonas

von Heinz (Gast)


Lesenswert?

Jonas Biensack schrieb:
> was passiert aber dabei mit Pausen im Signal? Die
> Verschwinden dann jawohl oder?
Übliche LAs zeichnen zusätzlich zu den Signalen auch die Zeitinformation 
mit auf, die sog. Timeline. An dieser kann man festmachen, wann ein 
Ereignis aufgetreten ist.

von Jonas B. (jibi)


Lesenswert?

>Übliche LAs zeichnen zusätzlich zu den Signalen auch die Zeitinformation
>mit auf, die sog. Timeline. An dieser kann man festmachen, wann ein
>Ereignis aufgetreten ist.

Soll heißen, ich soll pro Sample (im Moment nur 8 Channels == 1 Byte) 
noch die aktuelle Sampleposition (3 Byte Wert) mitspeichern, das ist 
natürlich einmal in Verbindung mit dem Borst Mode genial hinsichtlich 
Auswertbarkeit, viertelt aber auch die maximale Samplerate...aber die 
war ja auch nicht die Anforderung ;)

Dank dir :)

Gruß Jonas

von Heinz (Gast)


Lesenswert?

Jonas Biensack schrieb:
> Soll heißen, ich soll pro Sample (im Moment nur 8 Channels == 1 Byte)
> noch die aktuelle Sampleposition (3 Byte Wert) mitspeichern
Aber nur, wenn sich am zu messenden Signal etwas ändert, musst du die 
Zeit speichen, da dazwischen ja nix passiert. Bei der grafischen 
Abbildung weißt du dann, wo diese Änderung zeitlich stattgefunden hat, 
sprich an welcher Stelle sie auf der Timeline abzubilden ist.

von Jonas B. (jibi)


Lesenswert?

>Aber nur, wenn sich am zu messenden Signal etwas ändert, musst du die
>Zeit speichen, da dazwischen ja nix passiert. Bei der grafischen
>Abbildung weißt du dann, wo diese Änderung zeitlich stattgefunden hat,
>sprich an welcher Stelle sie auf der Timeline abzubilden ist.

Jo, stimmt. Aber die Samplingrate muss ich vorher trotzem reduzieren, da 
ich davon ausgehen muss da sich ja bei mehreren Samples hintereinander 
die Bits ändern, ich also jedes Sample + Zeitinformation speichern 
muss...Oder?

Gruß Jonas

von Heinz (Gast)


Lesenswert?

Nein, nicht jedes, sondern nur jede Änderung und deren aktuelle Zeit.

von Jonas B. (jibi)


Lesenswert?

Ich glaub du hast mich falsch verstanden, ich meinte in einem Worst-Case 
Szenario in dem sich die Bits bei mehreren Samples hintereinander ändern 
muss ich auch für alle diese Samples die Zeit mitspeichern, somit muss 
ich vorher die Samplerat so verringern, dass ich garantieren kann, dass 
ich genug Zeit zwischen den Samples habe um die 4 Byte wegzuspeichern...
Das war mein Ansatz.

Gruß Jonas

von Jonas B. (jibi)


Lesenswert?

Pseudo-Code:

PORTD als Input
Ramcounter, wohin wird nächstes Byte in Ram geschrieben

Timer ISR:

Lies neuen Wert von PORTD
Ist der Wert ungleich letztem Wert
    -Ja: Speicher neuen Wert in Ram
           Speicher RamCounter in Ram
           erhöhe RamCounter um 4

Dabei fällt auf, ich muss immer ein Sample mit Zeitwert speichern, sonst 
kann ich später beim auslesen nicht erkennen, was ist Zeitwert und was 
ist Samplewert. So hab ich einen kontinuierlichen Offset von 4 Byte....

Ich hab auch noch ne Idee mit zwei DMA's die sich getriggert vom Timer 
Interrupt um die Datenschauflung kümmern. Einer überträgt den 
Ramcounter, der andere den Samplewert...

Ich geh mal proggen...und testen und... ihr wisst was ich mein...

Gruß JOnas

von Carsten S. (dg3ycs)


Lesenswert?

Hi,

Jonas Biensack schrieb:
>>Übliche LAs zeichnen zusätzlich zu den Signalen auch die Zeitinformation
>>mit auf, die sog. Timeline. An dieser kann man festmachen, wann ein
>>Ereignis aufgetreten ist.
>
> Soll heißen, ich soll pro Sample (im Moment nur 8 Channels == 1 Byte)
> noch die aktuelle Sampleposition (3 Byte Wert) mitspeichern, das ist
> natürlich einmal in Verbindung mit dem Borst Mode genial hinsichtlich
> Auswertbarkeit, viertelt aber auch die maximale Samplerate...aber die
> war ja auch nicht die Anforderung ;)

Es gibt bei den üblichen LA, zumindest bei den besseren  ZWEI 
VERSCHIEDENE Betriebsmodi. Einmal einen Modus wie du ihn wohl schon im 
Kopf hattest, also wo ab den Triggerzeitpunkt kontinuierlich pro 
Zeiteinheit ein Bit/Kanal aufgezeichnet wird.
Dieser Betriebsmodus ist durchaus immer noch gebräuchlich, sogar meist 
die Standardeinstellung . Dieser ist m.w. auch der schnellste. Der 
NAchteil ist aber das so die Aufzeichnungsdauer immer vom maximalen 
Speicher auf die gleiche kurze Zeitspanne begrenzt ist. AUCH wenn sich 
kaum etwas getan hat.
Hier müssen natürlich keinerlei Zeitinformationen aufgezeichnet werden 
da die Aufzeichnung ja gleichmäßig weiterläuft und der Abstand zweier 
Zustände im Speicher direkt proportional zum Zeitabstand ist.
Dieser Modus wird "TIMING MODE" genannt.

Oder man wählt den hier ins Spiel gebrachten modus -üblicherweise als 
"STATE MODE" Bezeichnet, dann wird immer nur bei einem Pegelwechsel eine 
Aufzeichnung gemacht, diesmal aber mit einer Zeitinformation.

Die Vorteile jeder Variante liegen dabei auf der HAnd. Der TIMING MODE 
ist hervorragend geeignet wenn es innerhalb der Aufzeichnung sehr viele 
oder schnelle Pegelwechsel gibt. Der StateMode wenn es wenige 
Pegelwechsel gibt und man möglichst lange Aufzeichnen will.
(Manchmal ist es auch so das der LA im Normalmodus im Timing mode läuft 
und der StateMode als "Kompression" bezeichnet wird)

Welche Betriebsart du wählst bleibt dir selber überlassen. ICH würde es 
aber erst einmal im TimingMode zum Laufen bringen und dann erst über den 
StateMode nachdenken... ISt deutlich einfacher!

Gruß
Carsten

von Jonas B. (jibi)


Angehängte Dateien:

Lesenswert?

Ok. Das läuft doch schon anbei ein paar Bilder. Mein Intension einen 
weiteren Modus zu programmieren, entstand erst aus der Not heraus die 
Daten die ich aufzeichnete zu Interpretieren. Bei Interesse post ich mal 
den Code...Vielleicht hat ja jemand Lust auf ein kleines 
Gemeinschaftsprojekt?
Vorraussetzung wäre nur ein Xplain Board + Pc mit Windoof.

Gruss Jonas

von R. W. (quakeman)


Lesenswert?

Falls du die gespeicherten Daten deines LA in das VCD Format 
konvertierst, dann kannst du diese auch auf der opensource Software 
GTKwave anzeigen lassen. Für GTKwave habe ich mittlerweile drei 
Interpreter für SPI, RS232 und ein digitales Schieblehren Protokoll 
geschrieben. So müsstest du die GUI nicht selber noch programmieren und 
hättest schon mal drei Protokoll-Interpreter zur Verfügung. :)

Infos zum VCD Format gibts unter [1] und zu GTKwave unter [2] und zu 
meinen Interpretern unter [3].

Ciao,
     Rainer

[1] http://www.beyondttl.com/vcd.php
[2] http://gtkwave.sourceforge.net/
[3] Beitrag "Tools für Logicport LA1034 und GTKwave"

von Jonas B. (jibi)


Lesenswert?

Cool. Danke für die Links. Aber GUI-Programmieren ist für mich immer 
Entspannung.
Aber zur Anregung schau ich mir das mal an.

Gruß Jonas

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
Noch kein Account? Hier anmelden.