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