Forum: Mikrocontroller und Digitale Elektronik Unterbrechnugen


von Anfänger (Gast)


Lesenswert?

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

von STK500-Besitzer (Gast)


Lesenswert?

>das Betriebssystem
Auf einem (8bit-)Mikrocontroller läuft in der Regel kein Betriebssystem.

von Markus (Gast)


Lesenswert?

>Auf einem (8bit-)Mikrocontroller läuft in der Regel kein Betriebssystem

bei mir immer

Main:

   Sleep
   rjmp Main

von Anfänger (Gast)


Lesenswert?

vergessen wir Betriebssytem wie funktionieren trozdem Interrupts

von STK500-Besitzer (Gast)


Lesenswert?

> 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...

von Peter D. (peda)


Lesenswert?

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