www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Unterbrechnugen


Autor: Anfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: STK500-Besitzer (Gast)
Datum:

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

Autor: Markus (Gast)
Datum:

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

bei mir immer

Main:

   Sleep
   rjmp Main

Autor: Anfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
vergessen wir Betriebssytem wie funktionieren trozdem Interrupts

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.