Programme komprimieren?

Ich komme langsam an die Grenze vom UNO. Kann man die Programme komprimieren oder den Speicher vom UNO erweitern?

Micky

hi,

programme kann man komprimieren, indem man sie besser schreibt.

aber Du sagst nicht, an welche grenzen Du stößt. flash (also "programmzeilen") oder RAM (also "variablenanzahl").

alternative ist natürlich immer der mega oder ein nackter chip wie der 1284er mit minimalbeschaltung (1 quarz und zwei kondensatoren, auf einem steckbrett und dann platine).

speicher erweitern bei einem UNO geht nicht, nur bei einem mega kannst Du das RAM erweitern.

gruß stefan

Haste recht, hab nix genaues gesagt. Ich meine die Programmzeilen, also den Flash.

Micky

Mir fiel auf, dass manche Libraries recht viel Flash verbrauchen.
So schluckt z.B. die SD-Lib alleine durchs einbinden schon 5k vom Flash, bei den anderen ist das abhängig von dem verwendeten Funktionen.

Die Lösung hat Eisbär doch schon genannt: effizienter programmieren!

Spezifischer wird man erst dann antworten können, wenn man den Programmcode kennt.

Es gibt extra kleine SD Libraries ( die z.B. nur fat16 unterstützen )
Aber SD kostet immer erstmal relativ viel RAM, da ein SD-Block schon 512Byte (25% des ganzen RAM eines Uno) kostet.
Der Flash-Speicher sind nur 5 von 30 kB ( also 17% )

Klar kann man. Man könnte ja auch auf die Idee kommen statt in C in Forth Forth – Mikrocontroller.net zu programmieren. Das spart wirklich Platz. Nur kennen das nicht sehr viele. Wenn man sich überlegt wozu Forth entwickelt wurde wird aber schnell klar warum das auf Mikrocontrollern eine gute Wahl ist. Ist nur leider nicht Mainstream.

Was die Performance angeht: gut geschriebene Forth Programme hängen öfter als man glauben würde auch mal ein C Programm ab. Mir hat einmal ein Forth Programm ein handoptimiertes Assemblerprogramm abgehängt.

So einen Mini Rechner gibt es sogar in neu. Habe ich hier. Nur ist Forth absolut nicht so mein Ding. Na ja, nun bevorzuge ich den UNO.

Micky

Du kannst auf dem Uno auch Forth laufen lassen :slight_smile:

Heho,

kurze Frage weil es Erwähnt wurde:

nur bei einem mega kannst Du das RAM erweitern.

Wie kann man das machen?

MFG

His

da gab es vor kurzen was vom schachmann. mal raussuchen.................gefunden.

http://forum.arduino.cc/index.php?topic=188251.0

@schachmann, falls Du das liest. hab' jetzt ein paar speichersteine zuhause und war auch schon im metalab, weil die dort einen laser haben, der 0,1mm-linien ziehen könnte. aber die optik ist nicht mehr so gut, kann nur 0,15. ok, sollte auch reichen, aber dann hab' ich vor kurzem gelesen, daß man beim chinesen 10 platinen mit 5cmx5cm beidseitig um 12 euro kriegt. da verliert man richtig die lust am basteln, hab' so hart gearbeitet, um es einseitig und ohne brücken hinzubekommen...

außerdem sollte es kaum über den mega hinausragen und NEBEN andere shields passen.

gruß stefan

Die Vorgehenweise der Reihe nach wäre meines Erachtens:

  1. Sketch optimieren
  2. Arduino MEGA nehmen
  3. falls RAM zu wenig ist RAMbaustein dazugeben: http://ruggedcircuits.com/html/megaram.html
  4. im Extremfall auf Due umsteigen, dann ist aber der ganze Sketch zu überarbeiten.
    Grüße Uwe