avr studio und Anzeige der Stop-Watch bei Timer0

Gast #1034151
Lesenswert?

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
Gast #1034176
Lesenswert?

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.
Gast #1034194
Lesenswert?

>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.
Gast #1034728
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren