AVR ATmega16 Datenverlust zwischen Interrupt Routinen

Gast #303753
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!
Angehängte Dateien:

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.