Ohne Interrupts ist das volatile in der Regel nicht nötig. Durch volatile wird dem Compiler gesagt, dass sich die variable z.B. durch einen Interrupt ändern kann, und entsprechend die Optimierung eingeschränkt. Volatile mach die Variable nicht global - macht aber praktisch nur bei globalen Variablen Sinn.
Ein Problem könnte sein, das das RAM ausgeht. Der Tiny2313 hat davon nicht so viel. Der RAM bedarf kann sich ggf. je nach Compiler Version ändern.
Was gibt den der Compiler als RAM-bedarf aus.
Konstanten wie speed sollte man besser per #Define festlegen, nicht per const int ... , so wie es auch schon auskommentiert da steht. Da spart RAM und ist meist auch noch schneller. Das volatile ist hinsichtlich des RAM-Verbrauchs auch eher hinderlich.
Einige Compiler Versionen brauchen für ein Case Statement viel RAM für eine Tabelle - hier ist noch ein Case drin, auch wenn ich nicht glaube das da der Compiler eine lange Tabelle draus macht.
Lesezeichen