Archiv verlassen und diese Seite im Standarddesign anzeigen : Datenreduktion
Habe mir mal über folgendes Gedanken gemacht:
Ich habe einen Datenlogger gebaut, der 4 analoge Datensätze (je 10-Bit)
in jeweils einem Wort in einem externen EEprom abspeichert.
Bei einem 8K-Byte-EEprom kann ich nun 1000 Datensätze speichern.
Da der 10-Bit Datensatz einer Zahl von 0-1023 entspricht, ergeben 4 Datensätze bei der Addition max. 4092.
Ein Wort kann aber eine Zahl von 0-65535 darstellen.
Wie kann man nun die 4 10-Bit Zahlen so in ein Wort packen, dass man sie anschliessend wieder zurückrechnen kann.
Wenn sich dafür eine Lösung finden würde, könnte man 4000 Datensätze speichern.
Deine 4 Messwerte benötigen im Moment ja 4*2*8Bit = 64Bit
Brauchen tust du aber nur 4*10Bit = 40Bit
Du kannst also (64 - 40)Bit = 24Bit = 3Byte sparen, wenn du die Werte bitweise zusammenpackst. Dabei kann ich dir leider nicht helfen, da ich mit BASCOM überhaupt keine Erfahrung hab. Ich könnte dir höchstens in c helfen.
Stimmt, die Idee ist mir auch schon gekommen, und ich habe auch schon darüber nachgedacht dann 6 * 10 Bit zuspeichern. Dann wären nur 4 Bit verschenkt.
Vom Aufwand her dürfte es doch keinen Unterschied geben, ob du das ganze in 5 oder 6 Bytes speicherst. Aber bei erster Methode mit 5Bytes kannst du mehr Datensätze speichern.
Wenn ich mich recht erinner, hat auch mal jemand was gemeint, dass man die unteren zwei Bits auch weglassen kann, da die eh mehr zufällig sind. Dann könntest du die 4 Werte auch in 4Bytes unterbekommen.
@Pascal:
Ich hab mal gehört, daß nur das LSB unbrauchbar sein soll... hängt aber eventuell auch von der Wandlergeschwindigkeit ab.
@tomdul:
Wenn die Messwerte nicht mit gleicher Wahrscheinlichkeit auftauchen und du eventuell noch genug Rechenzeit hast, dann könntest du auch eine Huffman-Kodierung einsetzen. Im Netz findet man einige Informationen dazu. Ich würde so vorgehen:
Zuerst würde ich eine ganze Weile lang Messwerte aufnehmen und dann unkompremiert abspeichern. Dann würde ich die Messwerte als HEX-Zahlen darstellen lassen und die Verteilung der Ziffern 0-9 und Buchstaben A-F bestimmen (die häufigkeit, wie oft diese im ganzen Datensatz vorhanden sind). Daraus würde ich dann den Binärbaum zusammenstellen, den ich beim Codier und Decodiervorgang benutze. Das hat den großen Vorteil, daß der AVR nicht den Binärbaum erstellen muss.
Gruß,
SIGINT
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.