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?
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
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
Wenn Interupt Prioritäten in einem Projekt notwendig sind und der gewählte µC das nicht bietet, dann hast du den falschen µC ausgesucht.
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.