Forum: Mikrocontroller und Digitale Elektronik AVR ATmega16 Datenverlust zwischen Interrupt Routinen


von Felix (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe ein Problem bei einem Programm, das Interrupts benutzt. Je
nach Pegel an einem der analogen Eingänge soll ein Wert erzeugt werden,
der einem über einen Timer gesteuerten Counter als Endwert dient.
Dies ist nur ein Teil eines größeren Projekts. Die Interrupts werden
auch korrekt ausgeführt, jedoch scheint es beim Übergang von der ISR
für  das Ende eine A/D-Wandlung zum der ISR für den Timerüberlauf zu
Datenverlust zu kommen.
Der Stack ist natürlich initialisiert und die Einstellungen für den
Timer und den A/D Wandler sind auch bereits durchgeführt. Der Vorteiler
für den A/D Wandler ist auf 128 eingestellt. Der Systemtakt beträgt
4Mhz

Egal was ich in der ISR für den A/D Wandler in die Variablen t_value..
(Register R18-R20) schreibe, scheint der Zähler in der ISR des Timers
immer überzulaufen und der Sprung zu "clock_event" wird ausgeführt.

Im Hauptprogramm, das in einer Schleife die meiste Zeit irgendwelche
Ein- und Ausgänge abfragt bzw. verändert, wird auf keins der Register
R18-R20 zugegriffen.

Habe ich irgendeinen Denkfehler gemacht, oder etwas vergessen?
Hatte vielleicht jemand bereits ein ähnliches Problem?

Vielen Dank schon einmal für Eure Bemühungen!

von Hannes L. (hannes)


Lesenswert?


von Felix (Gast)


Lesenswert?

Vielen Dank für die schnelle Antort.

Den Beitrag vom Vortag hatte ich zwar gelesen, aber trotzdem hatte es
bei mir nicht "klick" gemacht. Also danke für den Hinweis

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.