Interrupt handling C167

Gast #2728370
Hallo,

ich möchte mich erstmal bedanken bei allen die mir bis jetzt 
weitergeholfen haben - ist ein echt super forum. Ich bin ja gerade am 
Anfang mit dem uC Programmieren bzw. generell.
Ich hoffe ihr habt Geduld mit mir - ich lese momentan ziemlich viel über 
den C167 aber so ganz hab ich das alles noch nicht durchschaut.

Da hätte ich auch schon die nächste Frage, ein Interrupt ist ja dazu da, 
dass man von extern (außerhalb des C167) über einen Port z.B.: einen 
Tastendruck mitbekommt (was anderes hab ich jetzt noch nicht gelesen, wo 
ein interrupt herkommen kann). Wenn dieser Interrupt daherkommt, dann 
wird eine Methode in meinem C- Programm aufgerufen (also der Port wo der 
Taster angeschlossen ist und Interrupt- Methoden- Adresse müssen 
zusammenpassen).

In der Interrupt- Routine mache ich dann was ich machen will.
Ich hoff ich hab das bis jetzt hier richtig erklärt.

Meine Frage wäre jetzt, was bei einem Interrupt- Routinen aufruf derweil 
mit der Endlosschleife passiert. Wird da der Interrupt ausgeführt und 
dann gehts in der Endlosschleife wieder weiter?

Wäre dankbar für Antworten/Korrekturen - vielen Dank.

lg
Birgit
Birgit Egger schrieb:
> Da hätte ich auch schon die nächste Frage, ein Interrupt ist ja dazu da,
> dass man von extern (außerhalb des C167) über einen Port z.B.: einen
> Tastendruck mitbekommt
Gibt noch etliche andere Quellen, die intern im Controller passieren 
können (Timer, UART, etc)

> Wenn dieser Interrupt daherkommt, dann
> wird eine Methode in meinem C- Programm aufgerufen (also der Port wo der
> Taster angeschlossen ist und Interrupt- Methoden- Adresse müssen
> zusammenpassen).
> In der Interrupt- Routine mache ich dann was ich machen will.
> Ich hoff ich hab das bis jetzt hier richtig erklärt.
Was du mit der Methode meinst weiß ich jetzt nicht genau. Aber wenn ein 
Interrupt-Quelle ein Interrupt auslöst wird die dazu passende Interrupt 
Routine aufgerufen, ja.


> Meine Frage wäre jetzt, was bei einem Interrupt- Routinen aufruf derweil
> mit der Endlosschleife passiert. Wird da der Interrupt ausgeführt und
> dann gehts in der Endlosschleife wieder weiter?
Richtig.
Siehe:
http://de.wikipedia.org/wiki/Interrupt
Gast
Vielen Dank Jörg,

vielen Dank für die Antwort.
Wenn ich jetzt eine Interrupt Service Routine habe:
1
void my_interrupt_service_routine(void) interrupt 0x23 {
2
   // mach was
3
}

wie kann ich das mappen dass ich die Adresse z.B.: auf Port 2.12 lege.
Muss ich das irgendwo mappen:

2.12 -> 0x23

?
Vielen Dank!!
lg
Birgit
Gast
Hallo!
Quatsch mit Soße. Die 8051er Familie hat eine feste Zuordnung der 
Interrupt-Adressen zu den Interrupt-Quellen. 0x23 ist der seriellen 
Schnittstelle zugeordnet.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.