www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Wenn sich ein Timer und ein ext Interupt in die Quere kommen


Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ich habe mich gefragt, wie könnte ich es beim AVR machen, das ein 
externer Interupt Vorrang hat zum Timer. Muß jetzt nicht unbedingt ein 
externer Interupt sein. Frage mich auch, wie ich bei 2 Timern sagen 
kann, das einer von Ihnen Vorrang hat, obwohl der andere Timer gerade 
beim Ablauf ist.

Ist das irgendwie möglich? Gibts da Tricks so wie bei den 8051'ern?

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefan wrote:

> Ist das irgendwie möglich? Gibts da Tricks so wie bei den 8051'ern?

Nein, einstellbare Interruptprioritäten gibt es leider nicht.

Man kann zwar innerhalb eines Interrupts die Interrupts wieder 
freigeben, aber damit sind alle wieder aktiv, was die Gefahr eines 
Stacküberlaufs heraufbeschwört.
Ich habe damit schlechte Erfahrungen gemacht und mache es nicht mehr.

Beim AVR bleibt nur, die Interrupthandler möglichst kurz zu halten und 
den nicht so eiligen Rest in der Mainlop zu machen.


Peter

Autor: Willi Wacker (williwacker)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Man kann im Interrupt auch nur einen speziellen Interrupt freigeben, das 
ist aber ein Mordsgebastel:

Also alle nicht erwünschten Interrupts sperren, Globale Interrupts 
freigeben.

Damit kann der freigegebene Interrupt den jetzt laufenden Interrupt 
interrupten.

Am Ende alles wieder rückgängig.

Mich wundert, dass ich bisher noch nicht über dieses Problem gestolpert 
bin, aber irgendwie habe ich immer eine andere, bessere Lösung gefunden. 
Vielleicht denkst Du nochmal darüber nach und postest eventuell 
nochmals.

Generell würde mich interessieren, wie Du Dein Problem gelöst hast.

Ciao
Willi

Autor: Ralph (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn Interupt Prioritäten in einem Projekt notwendig sind und der 
gewählte µC das nicht bietet, dann hast du den falschen µC ausgesucht.

Autor: Detlef _a (detlef_a)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ralph wrote:
> Wenn Interupt Prioritäten in einem Projekt notwendig sind und der
> gewählte µC das nicht bietet, dann hast du den falschen µC ausgesucht.

Priorisierung geht auch in Software wenn der Prozessor das hardwaremäßig 
nicht unterstützt: Eine gemeinsame Interupt Service Routine, auf die von 
allen Interrupts verzweigt wird. Sich merken, woher der Interrupt kam. 
Diese Routine checkt dann die Prioritäten und verzweigt ggf. auf die 
interruptspezifische ISR.

So hab ich das jedenfalls immer gemacht.

Cheers
Detlef

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sicher gibts Lösungsmöglichkeiten - nötig wars bei mir noch nie. Was 
nutzt mir eine grosse Software-Verzweigung, die zwar letztendlich 
Prioritäten setzt, insgesamt dann aber doch länger dauert, als wenn die 
direkt hintereinander abgearbeitet werden, da kurz und knackig.
Wirklich wichtig ist mir exaktes Timing bei Zeitmessungen - dafür gibts 
ja die ICP-Funktion, also völlig unabhängig von anderen Ints. Kritisch 
wirds natürlch da auch, wenn beispielsweise die Triggerflanke 
umgeschaltet werden muss und das nächste Signal sehr schnell kommt.
Ich hätte gerne mal ein Anwendungsbeispiel, wo die Interruptstruktur des 
AVR überfordert wäre, obwohl der Chip ansonsten gut zur Applikation 
passt. Natürlich kann man Anwendungsfälle erfinden.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.