Hallo
Es sollte eine möglichst genaue Verzögerung sein, deshalb wird die Variable "Zeit" in der Interrupt-Service-Routine incrementiert (vergrößert?):
Code:
ISR (TIMER2_OVF_vect)
{
Zeit++;
}
Wenn man das berücksichtigt hat die Zeile in Delay_us() wieder Sinn:
while(Zeit<=Verzoegerung);
Allerdings sollte man Zeit als volatile vereinbaren. Soweit ich weiß zwingt das den Kompiler die Variable im Ram zu halten und erst damit wird der wechselseitige Zugriff von ISR und Hauptprogramm auf die Variable möglich. Aber wirklich wissen tu ich nix:
volatile uint16_t Zeit;
Gruß
mic
Lesezeichen