Zitat Zitat von Rabenauge
... delay() beeinflussen die Einstellungen des Timers0 übrigens offenbar nicht ...
Wenn ich das richtig im Kopf habe, dann wird über die Nibobee-lib durch
Code:
#include <nibobee/delay.h>
die Standard-AVRGCC-Bibliotheksroutine eingebunden. Bei mir liegt die lokal auf
C:\Programme\WinAVR-20090313\avr\include\util

Diese Routine dreht nur eine Warteschleife, sprich: sie zählt etliche ticks des Controllers und benutzt keinen Interrupt. Die Millisekunde wird durch die Anzahl der gezählten ticks (die wird aus der Controllerfrequenz errechnet) und die Anzahl der Millisekunden durch den aufrufenden Parameter festgelegt. Läuft also ohne jegliche Interrupt-Initialisierung und beeinflusst keinen Timer.
Nachteil 1: der Controller ist während der Wartezeit blockiert.
Nachteil 2: InterruptServiceRoutinen können die Laufzeit verlängern, sodass die Verzögerungszeit nicht unbedingt genau und auch nicht in allen Fällen reproduzierbar gleich ist.