hallo, ich habe eine Timer-Routine die alle 10us aufgerufen wird (Timermodus CTC für Timer0) Wenn ich nun mit AVR-Studio (4.14) einen Breakpoint in die Routine setze und mir dann den Wert der "Stop Watch" anschaue, dann schwankt der Wert zwischen den einzelnen Aufrufen bis zu 30us! (Ich setze nach jedem Aufruf den Wert der Stop Watch zurück). Liegt das nun eher am Avr Studio, oder woher kommt das? Das ist auch so, wenn ich da nur eine Variable hochzählen lass und hat somit nix mit meiner Routine zu tun, die da aufgerufen wird. Ich benutze einen atmega48. mfg
Gibts noch andere Interrupts in Deinem Programm? Oder interruptgesperrte Abschnitte (cli - [critical section Code] - sei)?
hallo, ja, den Timer1-Interrupt alle 100us und einen externen Interrupt (INT0) der bei steigender Flanke am Eingang aufgerufen wird. Diese Routine ist aber sehr kurz, da nur ein Zähler inkrementiert wird und Variablen zurückgesetzt werden. Dies benötigt aber unter 10us.
>ja, den Timer1-Interrupt alle 100us und einen externen Interrupt (INT0) >der bei steigender Flanke am Eingang aufgerufen wird. Diese Routine ist >aber sehr kurz, da nur ein Zähler inkrementiert wird und Variablen >zurückgesetzt werden. Dies benötigt aber unter 10us. Mysteriöse Sache. Was genau wird in den Interrupts gemacht? Ich glaub, ohne den Code wird das nur Rätselraten.
Das Beste wird sein, Du checkst das Programm im Simulator vom AVR-Studio per Einzelschritt-Modus durch. Wenn die Timer0-Interruptroutine zu einem "falschen" Zeitpunkt auftritt, dann gilt es zunächst herauszufinden, an welcher Stelle der Einsprung stattfand (aus der Main heraus? Wenn ja: Was für Befehle stehen da? Oder direkt nach der Rückkehr aus einer anderen Interruptroutine? Wenn ja: Welche und wie lange dauert die?). Es gibt keine "Geheimnisse" in einem Code, die man nicht mit dem Simulator aufspüren kann - wenngleich es in der Praxis aufwendig und mühsam sein kann.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.