Forum: Mikrocontroller und Digitale Elektronik verschiedene Interrupts


von Frank B. (hoschie2)


Lesenswert?

Hallo.

habe eine Aufgabe über Interrupts wo ich nicht weiterkomme.
vielleicht kann mir ja jemand helfen.

a) Was verstehen Sie unter einem Interrupt in einem 
Mikrocontrollersystem
(5 Merkmale)?


meine lsg:Durch Interrupts wird erreicht, dass ein Prozessor schnell und 
effektiv (in „Echtzeit“) auf Ereignisse reagieren kann. Interrupts 
werden in der Regel durch ein hardwarebasierendes Ereignis ausgelöst, es 
wird eine zur Interruptquelle gehörendes Interrupt-Request-Flag gesetzt. 
Die Übersetzung von Interrupt ist Unterbrechung, d.h. durch das 
Auftreten des Interrupts wird die normale Programmbearbeitung 
unterbrochen und ein Programm zur Handhabung des Interrupts 
abgearbeitet. Diese Verzweigung kann allerdings verzögert werden, falls 
sich bereits ein Interrupt mit höherer oder gleicher Priorität im 
Bearbeitung befindet. Es gibt zwei Gruppen von Interrupts: Nicht 
maskierbare Interrupts werden auf jeden Fall ausgeführt (RESET), 
„normale“ Interrupts können vom Programm abgeschaltet werden.

b) Erläutern Sie die Begriffe Interruptpriorisierung, 
Interruptserviceroutine
und Interruptmaskierung! Was ist ein nichtmaskierbarer Interrupt
(NMI).

meinelsg:

interuptserviceroutine:

Interrupt Service Routinen (ISR) werden dann vom   Mikroprozessor 
abgearbeitet, sobald ein Interrupt auftritt. Eine ISR-Routine kann 
Informationen aufzeichnen und grundlegende Befehle ausführen, bevor der 
Interrupt quittiert und das betriebssystem zum Regelablauf zurückkehrt. 
Es ist der Programm-Code, der beim Auftreten einer freigeschalteten 
Interrupt-Anforderung (IRQ) ausgeführt wird. Dazu wird der normale 
Programmfluss unterbrochen, die Interrupt Service Routine (ISR) 
ausgeführt, und danach das Programm an der unterbrochenen Stelle 
fortgeführt.

Interruptpriorisierung:

Bei der Interruptpriorität werden alle Interrupts nach der Höhe Ihrer 
Priorität geordnet und abgearbeitet. Ein Interrupt mit einer höheren 
Priorität wird einem Interrupt mit einer niedrigeren immer vorgezogen.

Interruptmaskierung:

Häufig dürfen Programmteile zur Sicherstellung einer bestimmten 
Funktionalität nicht unterbrochen werden. Da Interrupts zufällig und 
nicht synchronisiert auftreten, muss eine Möglichkeit zur Deaktivierung 
(Maskierung) bestehen.
- Generelle Interrupt-Maskierung betrifft alle maskierbaren Interrupts
- Selektive Interrupt-Maskierung betrifft nur den gewählten Interrupt
- Maskenbits (je Interrupt) werden üblicherweise zu Maskenregistern
   zusammengefasst (z.B. Spezialfunktionsregister SFR)
- Neben der Interrupt-Maskierung werden üblicherweise auch 
Interrupt-Prioritäten verwaltet (konfigurierbar)

Nicht-maskierbarer Interrupt:

Einige Hardware-Interrupts können abgeschaltet (maskiert) werden, andere 
Interrupts sind immer aktiv (nicht maskierbar)

aber dann verliessen sie mich!!!!!!!!!!!!!!!!!

c) Erläutern Sie die Abarbeitung zweier Interrupte mit einigen 
Stichpunkten
für den Fall:

i) dass während der Abarbeitung einer Interruptserviceroutine die
Anmeldung eines weiteren, niederpriorisierten Interruptes,

ii) dass während der Abarbeitung einer Interruptserviceroutine die
Anmeldung eines weiteren, höherpriorisierten Interruptes erfolgt.

d) Erläutern Sie die Abarbeitung des Push- und des Pop-Befehls (PSHA
und PULH) des Mikrocontrollers 68HC08 mit einigen Stichpunkten
und einer Skizze. Zeichnen Sie in Ihrer Skizze symbolisch einen 
Ausschnitt
aus dem Stackspeicher mit Adressen und Daten, den Stackpointer
mit Inhalt sowie das H-Register mit Inhalt vor und nach der 
Befehlsabarbeitung.

von Eckhard (Gast)


Lesenswert?

Hallo,

das kann man so einfach nicht sagen, wenn Punkt c aber auch auf den 
68HC08 bezogen ist, dann ist die antwort in beiden Fällen gleich.


Die Interruptverarbeitung besteht daraus, den Interrupt zu erkennen, den 
Prozessorstatus auf dem Stack zu sichern, den Inerruptvektor zu laden 
und an die Adresse der ISR zu springen. Danach wird dir ISR ausgeführt 
und am Ende der ISR wird der Prozessorstatus wieder vom Stack geholt und 
die normale Prorammausführung fortgesetzt. Hierbei ist zu beachten, das 
aud gründen der Kompatibilität zum HC05 das H-Register nicht 
mitgesichert wird. Dieses muß man selbst tun. Es wird zuerst der 
Programmzähler, dann das X-Register, der Accumulator und dann das 
Stausregister gesichert. Beim Sprung in die ISR wird das I Bit im 
Statusregister gesetzt, so das keine weiteren Interrupts zugelassen 
sind. Sollten in der Zeit der Abarbeitung der ISR weitere Interrupts 
auftreten, so werden diese mach Beendigung der ISR ihrer Priorität 
entsprechend abgearbeitet.

Als NMI kommen beim 68HC08 ja nur SWI und RESET in Frage. SWi müßte dann 
in der ISR explizit ausgeführt werden und RESET ist wieder ein eigenes 
Kapitel.

Die Push und Pull befehle sind eigentlich ganz einfach.
PSHA legt den wert in A auf den Stack und zählt den Stackpointer um 1 
runter. PULH lädt den obersten wert vom Stack in das H Register und 
erhöht den Stackpointer um 1.

sieher auch hier 
:http://www.freescale.com/files/microcontrollers/doc/ref_manual/CPU08RM.pdf?fpsp=1&WT_TYPE=Reference%20Manuals&WT_VENDOR=FREESCALE&WT_FILE_FORMAT=pdf&WT_ASSET=Documentation

oder hier : http://www.eckhard-gosch.de/de/articles.php?cat_id=4

Eckhard

von Frank B. (hoschie2)


Lesenswert?

nein aufgabenteil a,b und c beziehen sich nicht auf den 68hc088. da wird 
nur allgemein gefragt.

sind denn meine lösungen wie ich sie bis jetzt habe einigermassen 
korrekt?

von Frank B. (hoschie2)


Lesenswert?

???

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Im Allgemeinen Nein, in vielen Fällen Ja...

von Frank B. (hoschie2)


Lesenswert?

und was wär richtig?

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.