Interrupts -> Anfängerfrage

OP #667846
Lesenswert?

Hallo,
ich bin Anfänger und würde gerne wissen wie das mit den Interrupts 
funktioniert. Möchte mit ATMEGA 8\16\32... programmieren. Mir ist klar 
das ich
hier keine genaue Antwort bekommen werde, aber ich hätte gerne ein paar 
Links, wo ich nachlesen kann wie das Funktioniert. Alles was ich bisher 
gefunden hab war entweder zu knapp beschrieben oder mit Assembler 
erklärt. Assembler kann ich aber nicht. Deshalb hätte ich gerne was in 
C.

Vielen Dank schon mal im vorraus.
Gast #667864
Lesenswert?

Ein GCC tutorial ist nicht das Richtige. Und ASM braucht man fuer das 
Konzept auch nicht. Was ist ein Interrupt (=Unterbrechung)? Man hat 
einen normalen Programmablauf und nun moechte gewisse Hardware auf sich 
aufmerksam machen. Wie geschieht das ? Ja. Mit einem Interrupt. Das 
Programm wird unterbrochen, der Programmzaehler (=position) gespeichert 
und der Interruptvektor (=adresse des Interruptcodes) geladen. Die 
naechste Instruktion fehrt mit der Berarbeitung des Unterbrechungscodes 
fort. Dieser Code bearbeitet die Hardware, be welcher das noetig ist. zB 
ist ein byte von der seriellen Schnittstelle empfangen worden. Wenn die 
Hardware fertig bearbeitet wurde, wird der Interrupt verlassen und der 
vorherige Code weiter ausgefuehrt. Welche Sprache man nun braucht ist 
weniger wichtig als dass das Konzept begriffen wurde.
Gast #667873
Lesenswert?

in C muß der Compiler noch seine Arbeitsregister retten und 
wiederherstellen in der Interrupt Service Routine, in Assembler kan man 
das evtl. etwas feiner Optimieren. Und in C muß man aufpassen die 
richtigen Schlüsselwörter für die Interruptquellen zu benutzen, beim 
AVR/GCC habe ich da mal lange nach einem Fehler gesucht und es lag an 
einer Änderung der Namen. Mit der Hilfe im Tutorial ist die 
Interruptprogrammierung wirklich keine Hexerei.
Persönliche Seite #667881
Lesenswert?

Hallo Ulrich,

Du solltest vor allem begreifen, dass durch die Benutzung eines 
Interrupts Pseudo-Parallelitaet in Deinem Programm entsteht. Besonders 
aufpassen musst Du also, wenn Du in Interrupts gemeine Ressourcen mit 
dem Hauptprogramm teilst, um keine Synchronisationsprobleme zu bekommen. 
Das Wechseln zwischen verschiedenen ISRs und dem Hauptprogramm 
entspricht dem Prozesswechsel in einem Multitasking-System und bringt 
gewisse Probleme mit sich. Wenn Du spezielle Fragen hast, lass ruhig 
hoeren.


Michael

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren