Hier ein BSP (zum besseren Verständniss ;-) )
Durch einen Interrupt wird folgendes in einen FIFO geschrieben:
Optimalfall:
F9 A4 2B B1 20 F3 48 57 63 20 E6 00 00 00 08...(der Rest wird mit 00 gefüllt)
(Daten) (StW) (Daten) (StW) (Daten) (StW)
irgendein anderer Fall:
F9 A4 2B B1 15 F3 48 57 63 4 E6 00 00 00 00...(der Rest wird mit 00 gefüllt)
(Daten) (StW) (Daten) (StW) (Daten) (StW)
Der FIFO hat 160 BIT. Ich muss alle 32 BIT auslesen, weil danach das StatusWord kommt.
Nach jedem mal auslesen (alle 32 BIT) kommt ein StatusWord, welches 8 BIT hat,
wobei mich beim StatusWord nur die hinteren 5 BIT intressieren. Durch dieses StatusWord wird signalisiert welches der vorigen BIT OK ist.
zB: 0x20 --> alle 32 BIT sind OK!
zB: 0x08 --> ersten 8 BIT sind OK!
So.. nun zum Problem:
Wenn nicht alle 32 BIT OK sind, muss natürlich gestückelt werden.
Alle Daten werden in ein Array geschreiben. (auch die fehlerhaften). Jetzt müssen die Daten die brauchbar sind von den unbrauchbaren getrennt werden (mittels des StatusWords).
Wenn der "Schrott" weg ist, sollen die richtigen Daten in einem Stück in ein neues Array gespeicher werden.
Wie stell ich das am Besten an? Momentan bin ich dabei die Daten Bitweise herumzuschieben.....
Wenn etwas unklar ist....bitte FRAGEN
mfg aso
Durch einen Interrupt wird folgendes in einen FIFO geschrieben:
Optimalfall:
F9 A4 2B B1 20 F3 48 57 63 20 E6 00 00 00 08...(der Rest wird mit 00 gefüllt)
(Daten) (StW) (Daten) (StW) (Daten) (StW)
irgendein anderer Fall:
F9 A4 2B B1 15 F3 48 57 63 4 E6 00 00 00 00...(der Rest wird mit 00 gefüllt)
(Daten) (StW) (Daten) (StW) (Daten) (StW)
Der FIFO hat 160 BIT. Ich muss alle 32 BIT auslesen, weil danach das StatusWord kommt.
Nach jedem mal auslesen (alle 32 BIT) kommt ein StatusWord, welches 8 BIT hat,
wobei mich beim StatusWord nur die hinteren 5 BIT intressieren. Durch dieses StatusWord wird signalisiert welches der vorigen BIT OK ist.
zB: 0x20 --> alle 32 BIT sind OK!
zB: 0x08 --> ersten 8 BIT sind OK!
So.. nun zum Problem:
Wenn nicht alle 32 BIT OK sind, muss natürlich gestückelt werden.
Alle Daten werden in ein Array geschreiben. (auch die fehlerhaften). Jetzt müssen die Daten die brauchbar sind von den unbrauchbaren getrennt werden (mittels des StatusWords).
Wenn der "Schrott" weg ist, sollen die richtigen Daten in einem Stück in ein neues Array gespeicher werden.
Wie stell ich das am Besten an? Momentan bin ich dabei die Daten Bitweise herumzuschieben.....
Wenn etwas unklar ist....bitte FRAGEN
mfg aso