Hallo Zusammen, ich habe eine Frage bezüglich interrups im Controller und zwar möchte , dass bei einem Timer eine ISR ausgelöst wird sobald z.B. einen bestimmten Wert erreicht wird. Manchmal ist es so, dass ein Bit für Iterrupt request gestzt wird. Mein Problem ich versthe nicht wie die ISR aufgerufen wird abhängig von diesem Wert und der Zusammenhang zwischen dieses Bit ISR und wie das Betriebssystem zwischen eine ISR und eine normale Funktion also wie das ganze verwaltet wird. Ich bin Anfänger und freue mich auf jede ausfühliche Antwort. MFG
>das Betriebssystem
Auf einem (8bit-)Mikrocontroller läuft in der Regel kein Betriebssystem.
>Auf einem (8bit-)Mikrocontroller läuft in der Regel kein Betriebssystem
bei mir immer
Main:
Sleep
rjmp Main
> Ich bin Anfänger
Und 12 Jahre alt?
Naja, egal, jeder hat mal klein angefangen.
Ein Mikrocontroller kann durch seinen inneren Aufbau erkennen, ob ein
Interrupt aufgetreten ist, das ist in Hardware "gegossen".
Nun kann man dem Controller durch Konfiguationsregister "sagen", ob er
bestimmte Ereignisse erkennen soll, und ob er darauf reagieren soll.
Beim Freigeben des Erkennens, kann man anhand bestimmter Bits in
Registern von Hand feststellen, ob ein Ereignis aufgetreten ist. Das
nennt man dann Polling, weil man sein Programm darauf auslegt, dass es
gelegentlich nachguckt, ob dieses Ereignis (auf das man wartet)
eingetreten ist.
Hat man nun die Interrupt Service Routine freigeschaltet, guckt der
Controller für den Anwender nach, ob das entsprechende Ereignis
einghtreten ist, mit dem Ergebnis, dass dieser sich die aktuelle
Programmadresse merkt und ganz von alleine in die ISR verzweigt.
Mir hat damals das "Mikrocontroller Kochbuch" von Andreas Roth sehr beim
Einstieg in die Mikrocontroller-Welt geholfen...
Anfänger wrote: > ich habe eine Frage bezüglich interrups im Controller und zwar möchte , > dass bei einem Timer eine ISR ausgelöst wird sobald z.B. einen > bestimmten Wert erreicht wird. Ja, das geht. > Manchmal ist es so, dass ein Bit für > Iterrupt request gestzt wird. Nicht nur manchmal, sondern immer (zumindest bei modernen MCs). Damit hat man auch die Möglichkeit auf das Ereignis zu pollen, anstelle eines Interrupts. > Mein Problem ich versthe nicht wie die ISR > aufgerufen wird Eine ISR ist ein ganz profaner Call, d.h. Funktionsaufruf. Nur eben nicht per Befehl, sondern durch ein Flag (Bit) ausgelöst. Welche Funktion aufgerufen wird, wird in der Interruptvektortabelle festgelegt. Dort hat jede Interruptquelle ihren eigenen Eintrag. Manche ältere MCs (z.B. PIC) haben jedoch nur einen Interruptvektor (eine ISR) für alle Interruptquellen, das macht die Interruptbehandlung dann komplizierter und langsamer. > abhängig von diesem Wert und der Zusammenhang zwischen > dieses Bit ISR und wie das Betriebssystem zwischen eine ISR und eine > normale Funktion also wie das ganze verwaltet wird. Die Interruptlogik macht allein die Hardware des MC, das BS hat damit überhaupt nichts am Hut (falls überhaupt ein BS installiert wird). Peter
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.