Danke an Florian und Jörg für die Anregungen Ist es denn so, dass eine Interuptroutine "SIGNAL" weitere Interrupts zulässt (und somit verschachtelte Aufrufe gestattet) dagegen "INTERRUPT" dies verhindert oder ist es umgekeht??? Gruß Martin
INTERRUPT läßt sofort alle Interrupts wieder zu. Man hat also keinerlei Kontrolle welche Interrupts und wie oft sich diese schachteln und ob es überhaupt jemals zur Abarbeitung aller Anforderungen kommt. In meinen Augen ist sowas höchst gefährlich und daher unbedingt zu vermeiden. Wenn überhaupt, dann nur SIGNAL nehmen, zuerst alle nicht priorisierten Interrupts sperren und dann mit "sei();" global wieder freigeben. Am Ende muß man natürlich alles wieder zurückwursteln. Peter
Ich denke mal, die INTERRUPTs mit sofortiger Freigabe kommen von solchen Architekturen, die Software-Interrupts verwenden. Denn das sind ja gar keine echten Interrupts, sondern nur Unterprogrammaufrufe und da kann man natürlich die echten Hardwareinterrupts wieder zulassen. Aber wie gesagt, beim AVR gibts das ja nicht und da sind dann solche INTERRUPTs völlig nutzlos, weil kreuzgefährlich. Und beim 8051 gibts das erst garnicht, weil das dort die CPU intern macht. Man kann dort nur vorher per Prioritätslevel festlegen, welcher Interrupt welchen anderen unterbrechen darf. Und dann gehts auch nur soweit, wie verschieden Prioritäten vergeben wurden. Sich selbst kann ein Interrupt in keinem Fall unterbrechen. Peter
Hi wenn man weiß was man tut kann INTERRUPT durchaus nützlich sein. Ich verwende das z.B. um eine 4-Kanal-PWM halbwegs Jitterfrei hinzubekommen obwohl nebenher noch ein zweiter Timer-INT kommt dessen Ausführung etwas länger dauert. So generell kann man also nicht sagen das INTERRUPT() kreuzgefährlich und nutzlos ist. Man muß eben wissen was man tut. Wenn man das nicht so genau weiß -> SIGNAL() Matthias
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.