Schön!
Fein, dass es jetzt funktioniert.
Auch ist es ein Zeichen dafür, dass man den Datentypen, bei Berechnungen/Vergleichen, erhebliche Aufmerksamkeit widmen muss. Ins besondere den impliziten Konvertierungen.
Jetzt:
Der Sketch verwendet 252 Bytes (12%) des Programmspeicherplatzes. Das Maximum sind 2048 Bytes.
Globale Variablen verwenden 18 Bytes (14%) des dynamischen Speichers, 110 Bytes für lokale Variablen verbleiben. Das Maximum sind 128 Bytes
Zu Anfang:
Der Sketch verwendet 2738 Bytes (133%) des Programmspeicherplatzes. Das Maximum sind 2048 Bytes.
Globale Variablen verwenden 262 Bytes (204%) des dynamischen Speichers, -134 Bytes für lokale Variablen verbleiben. Das Maximum sind 128 Bytes.
Eingedampft, auf deutlich unter 10%, sowohl Ram, als auch Flash.
Ich möchte mal sagen: Eine gute Teamleistung!
Beim Ram kann nichts mehr zu holen sein.
17 Byte für das Array und 1 Byte für den Zeitzähler.
Beim Flash sitzt noch was drin, wenn man denn Assembler, statt C++ verwenden würde:
- kleinere Optimierungen bei dem Algorithmus
- Verzicht auf die Stack Initialisierung
- Verzicht auf die Interrupt Tabelle
- Weg von den Arduino Pin Nummern.
Zu 3:
Wir nutzen keine ISR, also könnte in dem Bereich auch Code platziert werden.
19 Vektoren sind so einzusparen, 38 Byte (wenn ich mich nicht verrechnet habe)
Zu 4:
Da ist noch erhebliches Potential!
Die 17 Pins, * 2 Tabellen, ca 34Byte
Zusammengenommen, bestenfalls, geschätzte weitere 90Byte mögliche Flash Einsparung.
Floetzinger:
Hilfe!
Wenn ich geahnt hätte, dass ihr alle so viel Hirnschmalz für mein Problem verbraucht, hätte ich niemals nach Lösungsvorsachläge gefragt. Ihr seid ja famos.
Danke euch allen!
Ganz im Gegenteil!
Ich habe dir zu danken!
Als das größte Lob unter Hackern gilt: Spannende Frage!
Und die hast du geliefert!
Eine interessante, spannende, Frage.