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
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
Was meinst du mit mappen? Wenn der Interrupt was mit P2.12 anstellen soll, dann schreibst du das einfach in der Interrupt Routine.
Kann ich das so machen? void my_interrupt_service_routine(void) interrupt P2_12 { // mach was }
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.
Sorry, habe nur die 0x23 gesehen, kenne die Eigenarten beim C167 aber nicht so genau.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.