Interrupts - schulnote.de 
Akzeptieren

Unsere Webseite nutzt Cookies. Wenn Sie auf dieser Webseite bleiben, nehmen wir an, dass Sie damit einverstanden sind. Sie können unsere Cookies löschen. Wie das geht, erfahren Sie in unserer Datenschutzerklärung. Mehr erfahren



Impressum | Datenschutzerklärung Startseite




 Apache HTTP Server Test Page powered by CentOS

Apache 2 Test Page
powered by CentOS

This page is used to test the proper operation of the Apache HTTP server after it has been installed. If you can read this page it means that the Apache HTTP server installed at this site is working properly.


If you are a member of the general public:

The fact that you are seeing this page indicates that the website you just visited is either experiencing problems or is undergoing routine maintenance.

If you would like to let the administrators of this website know that you've seen this page instead of the page you expected, you should send them e-mail. In general, mail sent to the name "webmaster" and directed to the website's domain should reach the appropriate person.

For example, if you experienced problems while visiting www.example.com, you should send e-mail to "webmaster@example.com".

If you are the website administrator:

You may now add content to the directory /var/www/html/. Note that until you do so, people visiting your website will see this page and not your content. To prevent this page from ever being used, follow the instructions in the file /etc/httpd/conf.d/welcome.conf.

You are free to use the images below on Apache and CentOS Linux powered HTTP servers. Thanks for using Apache and CentOS!

[ Powered by Apache ] [ Powered by CentOS Linux ]

About CentOS:

The Community ENTerprise Operating System (CentOS) Linux is a community-supported enterprise distribution derived from sources freely provided to the public by Red Hat. As such, CentOS Linux aims to be functionally compatible with Red Hat Enterprise Linux. The CentOS Project is the organization that builds CentOS. We mainly change packages to remove upstream vendor branding and artwork.

For information on CentOS please visit the CentOS website.

Note:

CentOS is an Operating System and it is used to power this website; however, the webserver is owned by the domain owner and not the CentOS Project. If you have issues with the content of this site, contact the owner of the domain, not the CentOS Project.

Unless this server is on the centos.org domain, the CentOS Project doesn't have anything to do with the content on this webserver or any e-mails that directed you to this site.

For example, if this website is www.example.com, you would find the owner of the example.com domain at the following WHOIS server:

http://www.internic.net/whois.html





Titel:

Interrupts


  Note: 2   Klasse: 11









Arbeit: Interrupts

Eine Interrupt-Routine ist eine spezielle Form eines Unterprogramms. Sie unterscheidet sich von einem gewöhnlichen Unterprogramm dadurch, daß der Aussprung aus dem laufenden Programm nicht durch einen Sprungbefehl ausgelöst wird, der an einer bestimmten Stelle des Programms steht, sondern aufgrund eines externen Steuersignals jederzeit ausgelöst werden kann. Dies kann sowohl Hardware- als auch softwaremäßig erfolgen. Jeder Interruptquelle ist eine Adresse (=Vektor) im Programmspeicher zugeordnet, auf welche beim Auftreten eines Interrupts gesprungen wird. Das Reset-Signal kann als besonderer Interrupt angesehen werden. Beim Auftreten des Reset-Signals wird automatisch auf die Adresse 0000h gesprungen.

Der Sinn eines Interrupts liegt in der Fehlererkennung und -behandlung, sowie zum Beispiel zum Bearbeiten von Tastatureingaben oder zum Überwachen eines Timers oder Ähnlichem.

Man unterscheidet maskierbare und nicht maskierbare Interrupts (NMI- Non maskable interrupts). NMI´s können nicht unterdrückt werden, man muß daher darauf achten, daß immer eine Interrupt Service Routine (ISR) an der dem Interrupt zugeordneten Adresse vorzufinden ist, da ansonsten eine sinnlose Fortsetzung des Programmes an der Sprungadresse erfolgen würde (Absturz).

Eine ISR sollte grundsätzlich so kurz wie möglich geschrieben werden, da sie das Hauptprogramm unterbricht und auf diese Weise Zeitschleifen oder andere zeitkritische Befehle verzögern könnte.

Alle Speicherstellen, die der Interrupt benötigt, müssen gesichert und nach dem Abarbeiten der ISR wieder restauriert werden. Dies geschieht auf dem Stapelspeicher, dem sogenannten Stack. Dieser Speicher arbeitet nach dem LIFO-Prinzip (Last in - first out). Wie bei einem Papierstapel kann man immer nur das oberste Blatt gesehen werden und muß als erstes abgearbeitet werden.



An einer beliebigen Stelle des Hauptprogramms tritt der IRQ (Interrupt Request, auch ISR (Interrupt Service Request) genannt) auf. Der gegenwärtige Befehl wird fertig abgearbeitet. Der Program Counter (PC) wird automatisch auf dem Stack gespeichert und die Interrupt Service Routine wird aufgerufen. Sämtliche anderen benötigten Speicherstellen müssen vom Programmierer selbst gesichert und wieder restauriert werden. Nach Abarbeitung des Interrupts wird automatisch wieder an die vom Program Counter gezeigte Adresse gesprungen und das Programm fortgesetzt. Vorsicht! Man muß achtgeben, daß man, wenn man den Stack verändert hat , ihn wieder zurücksetzt, da ansonsten eine andere Adresse im Stack steht und das Programm irgendwo fortgesetzt wird. Der Stack sieht wieder gleich aus wie vor dem Aufruf der Interrupt-Routine. Mit dem Befehl PUSH kann auf dem Stack gespeichert werden, mit dem Befehl POP wird vom Stack geladen.


Anwendung von Interrupts

Beim 8051 sind die Interrupt-Sprungadressen in Abständen von 4 Byte angeordnet. Kurze Interruptroutinen können daher sofort dort hingeschrieben werden. Beim 80C552 sind sie jedoch in Abständen von 8 Byte angeordnet.

Der 8051 besitzt fünf Interruptquellen, wobei hingegen der 80C552 zusätzlich zu diesen 5 noch 10 Interruptquellen besitzt.



Anwendung von Interrupts:

Ein Interrupt niedriger Priorität kann durch einen Interrupt hoher Priorität unterbrochen werden, jedoch nicht durch einen anderen Interrupt gleicher Priorität.Falls Interrupt-Anforderungen verschiedener Prioritätsstufen gleichzeitig auftreten, wird die Interrupt-Anforderung der höheren Prioritätsstufe zuerst abgearbeitet. Treten jedoch Interrupt-Anforderungen gleicher Prioritätsstufe gleichzeitig auf, so wird Interrupt mit der niedrigeren Adresse zuerst abgearbeitet. Gleichzeitiges Auftreten bedeutet, daß beide Anforderungen innerhalb eines Takts auftreten.

Prioritätsskala :

Externer Interrupt 0

Überlauf am Zeitgeber/Zähler

Externer Interrupt 1

Überlauf am Zeitgeber/Zähler 1

Serieller Port

Die Interrupt-Quellen des 80C51 können durch 3 Steuerregister gesteuert werden.



1: Register TCON (Kontrollregister)



Die externen Interrupts INT0 und INT1 können entweder pegel- oder flankenaktiv sein, was von den Bits IT0 und IT1 im Register TCON abhängig ist. Wenn IT0 bzw. IT1 gleich 0 ist, wird der Interrupt bei LOW-Pegel ausgelöst. Dieser Pegel muß so lange von der externen Quelle erzeugt werden, bis der angeforderte Interrupt ausgelöst worden ist. Die Anforderung muß in der Interrupt-Routine wieder zurückgesetzt werden, da sonst der Interrupt immer wieder ausgelöst wird.

Ist IT0 bzw. IT1 gleich 1, so wird der Interrupt bei Erkennen einer negativen Flanke ausgelöst, wenn das Kennzeichnungsbit IEx gesetzt wird.





2: IE-Register (Freigaberegister)



Mit dem IE-Register kann von jedem der 5 Interruptquellen ein Interrupt erlaubt bzw. gesperrt werden.

Bei Setzen der Bits ES (serielle Schnittstelle), ET1 (Timer 1), EX1 (externe IR-Quelle 1), ET0 (Timer 0), EX0 (externe IR-Quelle 0) wird der entsprechende Interrupt freigegeben. Mit dem Bit EA können alle Interrupts gesperrt werden (EA=0).



3. IP-Register (Prioritätsregister)



Mit diesem Register kann die Priorität der einzelnen Interruptquellen festgelegt werden. Durch Setzen der Bits PS, PT1, PX1, PT0, oder PX0 wird den jeweiligen Interruptquellen eine höhere Priorität zugewiesen. Der 8051 kennt eine hohe und eine niedrige Priorität. Je nachdem, wie wichtig die einzelnen Interrupts bewertet werden sollen, können die einzelnen Bits gesetzt werden.



Interrupt - Verarbeitung:

Die Interrupt-Kennzeichnungsbits werden während S5P2 eines jeden Maschinenzyklus abgefragt und die Ergebnisse während des nächsten Maschinenzyklus einer Priorität zugeordnet. War während des erstgenannten Zyklus eines der Kennzeichnungsbits gesetzt, so wird dies im zweiten erkannt, und das Interrupt-System erzeugt den Befehl LCALL für die entsprechende Subroutine-Adresse, vorausgesetzt, daß die Abarbeitung des durch Hardware erzeugten Befehls LCALL nicht durch eine der folgenden Bedingungen gesperrt ist:



1) Ein Interrupt gleicher oder höherer Priorität wird gerade abgearbeitet.



2) Der gegenwärtige, der Zuordnung einer Priorität dienende Maschinenzyklus ist nicht der letzte bei der Ausführung des gerade laufenden Befehls.



3) Der gerade auszuführende Befehl ist RETI oder stellt einen Zugriff auf das spezielle Funktionsregister dar, oder er ist ein RD/WR Befehl.





Jede dieser 3 Bedingungen blockiert den Befehl LCALL für die Interrupt-Routine. Bedingung 2 stellt sicher, daß der gerade laufende Befehl vollständig abgearbeitet wird, bevor irgendeine Subroutine angesprungen wird. Durch Bedingung 3 ist folgendes gewährleistet: Wenn der gerade auszuführende Befehl RETI ist oder einen Zugriff auf IE oder IP darstellt, wird wenigstens noch ein weiterer Befehl ausgeführt, bevor die Durchführung des Interrupts beginnt.





Die Zuordnung zu einer Priorität wird in jedem Maschinenzyklus wiederholt, und die verglichenen Werte sind diejenigen, die währen S5P2 des vorangegangenen Maschinenzyklus vorhanden waren. Ist ein Interrupt -Kennzeichnungsbit gesetzt, das aber wegen der obigen Sperrbedingung nicht bedient werden kann, und ist es bei Aufhebung der Sperrbedingung nicht mehr gesetzt, so wird der zurückgewiesene Interrupt nicht mehr ausgeführt. Mit anderen Worten: Das System erinnert sich nicht daran, daß das Kennzeichnungsbit gesetzt war, aber nicht bedient wurde. Jeder Zyklus, in dem eine Prioritätszuordnug erfolgt, muß in diesem Sinn für sich betrachtet werden.



Externe Interrupts:

Externe Quellen können einen Interrupt entweder durch den Pegel LOW oder durch eine Flanke von HIGH nach LOW ( pegelaktivierte oder flankenaktivierte Interrupts ) auslösen, was durch programmieren, d.h. durch Setzen oder Löschen von IT1 oder IT0 im Register TCON, festgelegt wird. Ist ITx =0, so wird ein externer Interrupt x durch erkennen des Pegels LOW am Anschluß INTx eingeleitet, ist dagegen ITx =1, so erfolgt die Interrupt-Auslösung durch Erkennen einer Flanke des Pegels. In diesem Fall wird , wenn aufeinanderfolgende Abfragen von INTx den Pegel HIGH in einem Zyklus ergeben haben, das Kennzeichnungsbit für externe Interrupt-Anforderungen Iex in TCON gesetzt. Dies löst dann den Interrupt aus.



Da die externen Interrupt-Anschlüsse während eines jeden Maschinenzyklus einmal abgefragt werden, sollte ein Eingangssignal ( HIGH oder LOW ) wenigstens 12 Oszillatorperioden am Eingang anliegen, um eine Sinnvolle Abfrage zu gewährleisten. Wenn daher der externe Interrupt flankenaktiviert ist, muß die externe Quelle wenigstens einen Zyklus den Pegel HIGH am entsprechenden Anschluß stehen lassen und danach wenigstens einen Zyklus den Pegel LOW, damit die Flanke erkannt und das Kennzeichnungsbit für externe Interrupt-Anforderungen IEx gesetzt werden kann. IEx wird durch die Zentraleinheit automatisch gelöscht, wenn die Interrupt-Routine aufgerufen ist.



Ist der externe Interrupt pegelaktiviert, muß die externe Quelle die Anforderung so lange aufrechterhalten, bis der angeforderte Interrupt tatsächlich erzeugt worden ist. Danach muß er die Anforderung desaktivieren, bevor die Interrupt-Routine abgearbeitet ist; andernfalls wird ein weiterer Interrupt erzeugt.



Zusätzliche Interrupts des 80C552:

Die 8 T2 Interrupts werden von Flags gesetzt. Bis auf den ADC Interrupt werden die anderen 9 zusätzlichen, nicht von der Hardware gelöscht, und sie müssen von der Software rückgesetzt werden, um die Wiederholung von Interrupts zu vermeiden. Der ADC Interrupt wird vom ADCI-Flag im ADC Control-Register ( ADCON) gesetzt. Das Flag wird gesetzt, wenn eine ADC _Umwandlung bereit ist gelesen zu werden. Es wird nicht von der HW gelöscht und muß von der SW rückgesetzt werden, um die Wiederholung zu vermeiden.

Der I2C-Interrupt wird vom SI-Flag im SI01 Controlregister (S1CON) gesetzt. Das Flag wird gesetzt, wenn S1STA mit einem gültigen Status-Code geladen wird.

Das ADCI-Flaag kann man mit der SW rücksetzen, aber nicht damit setzen. Alle anderen Flags die Interrupts auslösen, können sowohl gesetzt und rückgesetzt werden, durch die SW, und es hat die selben Auswirkungen wie mit er HW.











Quelle:




ähnliche Referate Hardware für Digitale Filter
Computerviren
Instrumentationen und Schnittstellen
Interrupts



Hier könnt Ihr die DRUCKANSICHT für das Referat öffnen




Tipp:







(c) schulnote.de 2004-2018

MEDIADATEN --- Besucher seit dem 01.09.2006
gesamt: 6726447 - heute: 1107 - gestern: 1082 - online: 11 - Rekord online: 340 - Rekord Tag: 2801


ID: 5291      Aufrufe seit dem 02.08.2011: 1520