Forum: Mikrocontroller und Digitale Elektronik AVR Interruptregister wird überschrieben


von Markus Krepper (Gast)


Angehängte Dateien:

Lesenswert?

Zur Erzeugung eines Sekundenimpulses verwende ich die Interruptroutine
des Timer1. Grundsätzlich funktioniert der von mir erstellte Code
problemlos. Nur aus noch nicht erklärten Umständen wird das
Timercontrolregister von 56 auf 60 umgeschrieben. Ebenso das
Timermaskregister von 5 auf 0 (Freigabe Int von T1 und T0). Somit wird
natürlich auch kein Interrupt mehr ausgeführt. Das komische an dem
Verhalten ist, dass dieses Problem in beliebigen Zeitabständen auftritt
von einigen Minuten bis zu mehreren Stunden. Es kann auch nicht am
Prozessor leigen, da ich das selbe Verhalten mit einen ATMEGA16 und
AT90S8515 bereits gehabt habe.

Hat von euch jemand bereits so ein Problem gehabt?

Danke im Voraus

Markus

von AxelR. (Gast)


Lesenswert?

<Zitat>
wird das
Timercontrolregister von 56 auf 60 umgeschrieben. Ebenso das
Timermaskregister von 5 auf 0
</Zitat>

was bedeutet das im konkreten Fall für deinen Controller, wenn das
timercontrolregister von beagtem Wert 56 auf 60 springt? Binär heisst
das ja erstmal,dass BIT2 gesetzt wird(4). Jetzt sieh Dir mal die
Position des TCCR1A (oder B, haste nich gesagt, welches) im Register
Summary an. Vielleicht passt zu einem binären Offset ein Register,
welches Du tatsächlich verwendest?
Oder TTCR0 wird verändert, und Du machst Dir Gedanken, obwohl Du
Timer0.. <edit>ah verwendest Du auch, sonst wär ja im TIMSK
kein"5"drinn</edit> Timer1 verwendest?

Oder - noch besser - deine Spannungsversorgung ist nicht sauber.

Hast Du's mal S(t)imuliert im AVR-S(t)udio?

Habe Dir nicht wirklich helfen können, schade...
Wollte trotzdem was schreiben ;-)
Gruß
Axel

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.