Servus, Bei meinem µC kann man die einzelonen Interrupts Prioritäten zuweisen. Z.B. - eingehende CAN Nachricht Prio 30 - Tastendruck Prio 29 D.h. der Tastendruck hat eine höhere Priorität. Wenn sich der µC nun gerade in der CAN ISR befindet und ich drücke den Taster, was passiert? Wird gewartet oder wird dem µC die ISR für den Taster übergeben?
Wow, 30 Prioritäten, muß ja ein großer MC sein. Prioritäten sind dazu da, die Unterbrechung zu steuern. Wenn also die höheree Priorität nicht unterbrechen würde, wärs ziemlich sinnlos. Es muß daher auch genügend SRAM reserviert sein, um die Interrupts aller verwendeten Prioritäten zu sichern. z.B. bei 4 benutzten Prioritäten muß Stack für die Sicherung des Main und 3 Interrupts bereit stehen. Peter
> Prioritäten sind dazu da, die Unterbrechung zu steuern. > Wenn also die höheree Priorität nicht unterbrechen würde, wärs > ziemlich sinnlos. Nein, nicht unbedingt: Die Priorität entscheidet oft nur darüber, welche ISR zuerst aufgerufen wird, wenn mehrere Interrupts gleichzeitig eintreffen. Üblicherweise werden mit dem Start der ISR die Interrupts automatisch gesperrt. Deswegen müssen ISR immer so kurz wie möglich sein, um Latenzzeiten kurz zu halten.
Ich denke es wäre sinnvoll, wenn du mal sagst um welchen Controller es sich konkret handelt. Oder du schaust selbst im Datenblatt nach. Da sollte es drin stehen. Oder du probierst es aus: Schreib ein Programm, in dem der Controller sofort in einen ISR mit geringer Priorität fällt. In die ISR setzt du eine Endlosschleife. Mit einem Tastendruck löst du eine ISR höherer Priorität aus, in der ein Portpin geändert wird. Drückst du auf den Taster, und es ändert sich nichts, dann unterbrechen sich die ISRs wohl nicht. Sebastian
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.