Forum: Mikrocontroller und Digitale Elektronik avr studio und Anzeige der Stop-Watch bei Timer0


von hh (Gast)


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

von Gast (Gast)


Lesenswert?

Gibts noch andere Interrupts in Deinem Programm?  Oder 
interruptgesperrte Abschnitte (cli - [critical section Code] - sei)?

von hh (Gast)


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.

von Gast (Gast)


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.

von hh (Gast)


Angehängte Dateien:

Lesenswert?

mh..also anbei dann mal die interrupt-routinen

von Gast (Gast)


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.

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
Noch kein Account? Hier anmelden.