Zitat Zitat von SprinterSB
Als mit vernichten von Prozessorzeit hat das nix zu tun. In einer ISR ist das eher ungünstig, und was die Codegröße angeht ist es auch schlechter als mit nur einem if.

Hat wohl didaktische Gründe. Erst mal auf eine ms und dann auf eine Sekunde. So kann man auch 1000s lang warten, ohne gruß was zu ändern.
Ich schliesse mich der Vermutung an, dass es didaktische Gründe hat. Allerdings macht es auch durchaus Sinn, möglichst mit einer 8-Bit Variable (char) abzublocken, schliesslich handelt es sich hier um eine 8-Bit CPU.

Das halbiert dann in etwa die Zeit in der ISR gegenüber einem 16-Bit Zähler. Allerdings wird hier jedes 4.te Mal schon auf den 16-Bit Zähler "durchgeschaltet", insofern bringt diese Optimierung hier recht wenig.

Währe sinniger, eine 8-Bit Variable bis 250 laufen zu lassen und in der inneren Schleife dann bis 16 zu zählen. Dann würde man sogar ohne 16 Bit auskommen und die schnelle 8-Bit Operation wird zu 99,6% ausgeführt statt wie jetzt nur zu 75% der ISR-Aufrufe.