Forum: Mikrocontroller und Digitale Elektronik proceduren aufrufen im interrupt


von roboterheld (Gast)


Lesenswert?

soll man in der interrupt-routine zb int0 zum schnellen ergebnis kommen 
und dann sofort raus? oder ist es auch üblich das in der int-rouine 
weitere proceduren aufgerufen werden?

von Dieter W. (dds5)


Lesenswert?

> oder ist es auch üblich das in der int-rouine weitere proceduren
> aufgerufen werden?

Tunlichst nicht, denn man muss zusätzlich zum Zeitbedarf der Prozedur 
auch noch den (Zeit-) Aufwand für die Sicherung und Wiederherstellung 
der benutzten Register rechnen.

Am besten im Interrupt nur das zeitlich wirklich wichtige erledigen und 
für den Rest Flags setzen.
Die Flags dann in der Hauptschleife abfragen und die entsprechende 
Funktion bzw. Prozedur abarbeiten.

von holger (Gast)


Lesenswert?

>> oder ist es auch üblich das in der int-rouine weitere proceduren
>> aufgerufen werden?

>Tunlichst nicht,

Sooo pauschal würde ich das nicht sagen ;)
Es soll ja Programme geben die mit leerer main-loop
komplett in Interrupts laufen.

Es kommt halt auf das Programm an.

von Spess53 (Gast)


Lesenswert?

Hi

Das kann man nicht so pauschal beantworten. Wenn du nur einen 
Timerinterrupt hast,der alle sec kommt und der Controller auch sonst 
geistig total unterfordert ist, kannst du kBytes in die IS-Routine 
packen. Je zeitkritischer deine Anwendung ist, desto kürzer sollten 
deine Routinen sein.
Oder nach dem Motto: So lang wie nötig und so kurz wie möglich.

MfG Spess

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Es müssen halt - wie schon gesagt - alle Register gesichert und 
zurückgeschrieben werden, die in den Unterroutinen benutzt werden. Die 
ISR selbst muß alle Register sichern und rückschreiben, die sie selber 
benutzt, vor allem das Status-Register. Das wird gerne mal vergessen, es 
sei denn, der Compiler nimmt es einem ab. Unter ASM muß man selber ´ran.

von Uhu U. (uhu)


Lesenswert?

Das hast du doch schonmal gefragt und schonmal eine Antwort bekommen. 
Bist du so schusselig?

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
Noch kein Account? Hier anmelden.