Hallo,
Zitat Zitat von xrzr Beitrag anzeigen
@Klebwax: genau das habe ich gemeint. So war auch mein Ansatz, außer das ich das mit den 25% bzw 50% nicht wusste.
Sorry, aber so eine absolute %Angabe ist Humbug.
Wenn ich ein Programm auf einem Chip mit 2K Ram entwickle und dann auf einem identischen Chip mit 8K laufen lassen vierteln sich die Prozente, weil sich sonst rein gar nichts ändert.

Die Stackgrösse ist tatsächlich nicht einfach abzuschätzen, denn sie hängt von vielem ab.
Rein von der Hardware her, braucht jeder Interrupt etwas Stack um die Register zu retten. Hier muss man beachten wie viele Interrupts maximal verschachtelt sein können.
Beim eigentlichen C-Programm kommt dann für jeden Funktionsaufruf Platz für die Parameter der aufgerufenen Funktion, zu rettende Register und lokale automatische Variablen hinzu. Auch hier muss man an die Schachtelung denken. Hier kommt dann auch der Programmierstil hinzu. Es macht einen grossen Unterschied ob ich in einer Funktion lokal 100 Byte für einen Buffer anlege oder nur einen Zeiger auf einen globalen Buffer übergebe.

Aufpassen muss man auch immer mit den verwendeten Bibliotheken, die benötigen auch Platz auf dem Stack, es ist aber nicht immer einfach, heraus zu bekommen wie viel.

Vor 20 Jahren hatten viele Controller nur 128 oder 256 Byte RAM und diese konnte man auch schon gut mit C programmieren.

MfG Peter(TOO)