Hallo Vogon!
Ich möchte zuerst die Grundhardware des LA´s aufbauen und die Software dazu komplett schreiben.
Weil ich Deine Idee mit dem Post -Mortem Debugging sehr nutzlich finde, wird sie auch in dem LA optional möglich. Ich möchte die Eigangssignale nicht direkt (so wie in der einfachster Version) mit den Eingängen des PIC´s verbinden, sondern dazwischen ein FIFO Register schalten. Wenn ich den FIFO mit gleicher Frequenz, mit der die Eingangsdaten in den RAM des PIC´s eigelesen werden, takte, dann kann ich so viel Samples vor dem Triggerflanke einlesen, wie lang dieser FIFO ist, minus Anzahl Takten die der PIC braucht, um nach der Erkennung der Triggeflanke mit der Speicherung anzufangen.
Der FIFO funktioniert doch genauso wie ein Ringpuffer, oder ?
Der Unterschied ist nur, das im Ringpuffer bewegt sich der Zeiger auf die momentan mit Daten geschriebene/gelesene Speicherstelle und in FIFO bewegen sich Die Daten selbst. Deswegen ist das einfachste Lösung und die Software ist gleich, weil dem PIC egal ist, was er einliest.
Um den EEPROM des PIC´s (256 Bytes) zu nutzen, möchte ich 500 Samples mit allen Parametern, mit denen sie "aufgenommen" wurden, in EEPROM abspeichern (für spätere Analyse oder eine Übertragung in einen PC).
Hier im Code habe ich versucht das mit dem FIFO zu erklären.
MfG
Code:
Wenn das Sample S0 entspicht dem Moment in dem
die Triggerflanke auftritt
S ->PIC (ohne FIFO)
0
A
|
Triggerflanke
| FIFO
V .-----------------------.
S->| S S S S S S S S|->PIC
0 |-1 -2 -3 -4 -5 -6 -7 -8|
'-----------------------'
und der PIC erst nach z.B. 4 Systemtakten fängt mit
ablegen der Samples im RAM an:
S ->PIC (ohne FIFO)
4
A
|
ab da werden die Samples gespeichert
|
FIFO V
.-----------------------.
S->| S S S S S S S S|->PIC
4 | 3 2 1 0 -1 -2 -3 -4|
'-----------------------'
A
|
Triggerflanke
Lesezeichen