Speedcore016:
Das ist der Code an dem ich mich mit For - Loops beschäftige , den er ist simpel und verständlich. Durch die Einfachheit des Codes kann ich mich an Sachen heranführen welche mir nicht geläufig sind wie mein Problem mit dem Delay in der For-Loop, welches ich ersetzen möchte
Dieser Ansatz ist aber komplizierter, als er auf den ersten Blick erscheint.
Du müsstest eigentlich erst mal definieren: Warum kein delay ?
Denn egal, was man mit einem Prozessor macht, er rennt (mal von Powersavings und von echtem "sleep" bei manchen Prozessorarchitekturen abgesehen) immer Vollgas, egal ob mit mit oder ohne delay()
.
Du kannst delay()
deshalb nur umgehen, indem Du den Prozessor mit irgendwas anderem beschäftigst, denn er hält ja nicht an. Ist so ähnlich wie bei einem Flugzeug, das kann auch nicht anhalten, und muss ggf. Warteschleifen fliegen wenn es nicht weiter will.
Am Einfachsten wäre dabei so was
uint32_t count = 16000000;
while(--count)
;
Bei einem 16MHZ Board dauert diese Schleife ein paar Sekunden, da hat der Prozessor erst mal zu tun, bevor er weiter läuft. Das ist aber im Grunde nichts Anderes, als ein selbst gebasteltes delay()
, das macht auch nichts Anderes.
Deshalb die Frage: Was genau soll der Verzicht auf delay()
bewirken? Bevor das nicht klar ist, kann man schlecht weiter helfen. Vielleicht wolltest Du ja eigentlich was ganz anderes erreichen? Freie Prozessor-Zeit, vielleicht ?
Dann z.B. wäre ein ein völlig anderer, und auch durchaus anspruchsvoller Ansatz erforderlich.