Noch mal Interrupt (ATMEGA64 mit WinAVR)

Gast #1563973
Hallo !

Ja, ich habe gesucht !

Ich habe ein Problem mit gleichzeitigen Interrupts.

1. Habe einen INT4 auf einer positiven Flanke
2. Habe einen ICP3 auf einer positiven Flanke (kein Prescaler, 16 MHz 
Takt)
3. Habe einen T3_OVF bei Überlauf von T3

(Alle Interrupt-Routinen sind nicht unterbrechbar (ISR_BLOCK) und sehr 
kurz.


Während ich im INT4 bin, kommt ein ICP3 und ein T3_OVF nahezu 
gleichzeitig.
(Voriger Zählerstand=65430, aktueller Zählerstand=53, Zähler wird nicht 
zurückgesetzt)
Wenn ich im INT4 fertig bin, wird die ICP3 Routine vor der T3_OVF 
gerufen, da diese in der "Vector-Tabelle" zuerst kommt. Jetzt ist mein 
Timer-Wert schon übergelaufen, aber ich "weiss" es nicht, da die T3_OVF 
noch nicht dran war. Da kann man (wahrscheinlich) auch nix machen.

Ich möchte nur wissen, ob und wie ich in "C" die noch anstehenden 
Interrupts auslesen kann. Gibt es da eine Möglichkeit ?

Danke
bitbo
Gast #1564304
OK, Danke für den Hinweis, aber das habe ich auch schon gemacht.
Merkwürdigerweise ist das immer gesetzt ?!?!
(Ich lese das am Anfang der ICP3 aus)

Sollte die T3_OVF Interrupt-Funktion das nicht beim Verlassen löschen ?
Soll/muss ich das in der T3_OVF selbst löschen ?

Unabhängig davon ist die Methode aber nicht sicher, denn bis die erste 
Anweisung in der ICP3 erreicht wird, könnte das Bit im Hintergrund doch
noch "eben" reinrutschen. Das ist doch ein Hardware-Bit, oder ?

Mir wäre wohler, wenn ich die aktuell anstehenden Interrupts auslesen 
könnte...Aber warte: Ist das dann nicht das Gleiche? Bis ich zum 
Auslesen komme, kann es ja dann auch "eben" reinrutschen ?!

Eine Idee?

Gruß
bitbo
Gast #1565740
Hi !

Vielen Dank, bei mir funktioniert es nun einwandfrei !!!

Aber ich habe einen kleinen Bug in Timer32.c gefunden.
(siehe Link in vorigem Beitrag)

Thanks and bye, bitbo

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.