Hallo, ich habe vor in einen ATMega168 1024Byte binärer Daten über die serielle Schnittstelle zu lesen und im Ram abzulegen um sie später wieder auszugeben. Leider besitzt der Mega168 nur 1K Ram und ich bin daran gebunden. Gibt es eine Möglichkeit dies Daten zu komprimieren? Gibt es irgendwo vielleicht einen paar Codezeile dazu. Gruß Armin
was sind das denn für Daten? umso höher die Gleichverteilung der einzelnen Zeichen ist, umso weniger kannst du codieren... Text lässt sich für gewöhnlich wesentlich besser komprimieren als Programme o.Ä. fertigen Code für AVRs kenne ich nicht, aber die Verfahren von Zip u.Ä. sollten dir helfen. Christian
Wie man komprimieren kann und wie, hängt von den Daten selbst ab. Was man schon über sie weiß, muss man nicht noch zusätzlich speichern. Ein Beispiel: Nehmen wir an, bei jedem Byte sind die obersten vier Bits immer null. Dann muss man diese Information nicht speichern, sondern kann immer zwei Bytes jeweils Nibble-weise in einem abspeichern. Handelt es sich nur um Ziffern und Buchstaben, könnten 6 Bits statt 8 ausreichen, das würde man aber anders programmieren als die vier Bit. usw.
Armin wrote: > ich habe vor in einen ATMega168 1024Byte binärer Daten Textdaten könnte man komprimieren, Binärdaten kaum. > Leider besitzt der Mega168 nur 1K Ram und ich bin daran > gebunden. Warum darfst Du keinen ATmega328P nehmen? > Gibt es irgendwo vielleicht einen paar Codezeile dazu. Ein paar Zeilen reichen nicht, Komprimieren kostet kBytes an Flash. Peter
Wenn's eine Strichzeichnung ist, laesst es sich mit ein paar Byte code per RLE problemlos komprimieren. Das hat mit Text oder Binaer nun wirklich nichts zu tun... wie Christian oben voellig richtig schrieb, ist es eine Frage der Gleichverteilung.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.