Forum: Mikrocontroller und Digitale Elektronik Frage zu Interrupts


von Interrupteur (Gast)


Lesenswert?

Ich bin grad am Durcharbeiten/Lernen des AtmegaTutorials und hab eine 
Frage zu Interrupts. Hier ist das Beispiel mit zwei Interrupts 
aufgelistet: 
http://www.mikrocontroller.net/articles/AVR-Tutorial:_Interrupts

LED Ein bzw. Ausschalten.

Meine Frage dazu haben 8bit-uCs zwei "freie" Interrupts, die ich selber 
programmieren kann?

1   0x000   RESET   Reset bzw. Einschalten der Stromversorgung
2   0x001   INT0   Externer Interrupt 0
3   0x002   INT1   Externer Interrupt 1
4   0x003   TIMER2_COMP   Timer/Counter2 Compare Match

In der Liste hier auch aus dem Tutorial ist von zwei externen Interrupts 
die Rede, die anderen haben alle andere Namen. Also kann ich sagen, dass 
diese Klasse von uCs nur zwei "freie" Interrupts haben udn die anderen 
alle für andere Aufgaben bestimmt sind?

von Purzel H. (hacky)


Lesenswert?

Ja. genau so.
Naja. Es gibt dann noch Pinchange Interrupts, die sind eigentlich fast 
gleich. Sind aber nicht bei allen Modellen erhaeltlich.

von Oliver (Gast)


Lesenswert?

Nein.

Die externen Interrupts sind genauso fest definiert, wie alle anderen 
auch. Die heissen externe Interrupts, weil sie von Signalen an einem 
Eingangspin, also von extern, ausgelöst werden.

Oliver

von Interrupteur (Gast)


Lesenswert?

Ok, danke.

Da steht auch

"... und je einen Taster an PD2 (INT0) und PD3 (INT1)..."

ich konnte im Quelltext des Beispiels nicht erkennen, dass die 
Interrupts Int0 und Int1 PD2 und PD3 zugeordnet werden. Heisst das, dass 
es nicht ausschließlich zwei Interrupts gibt, sondern die Interrupts 
auch fest an die Kontakte PD2 und PD3 geknüpft sind?

von Mechmet (Gast)


Lesenswert?

Interrupteur schrieb:
> sondern die Interrupts
> auch fest an die Kontakte PD2 und PD3 geknüpft sind?

nein, die sind frei wählbar, nur in der standard-einstellung gehört pd2 
zu int0.

von spess53 (Gast)


Lesenswert?

Hi

>nein, die sind frei wählbar, nur in der standard-einstellung gehört pd2
>zu int0.

?????

MfG Spess

von Karl H. (kbuchegg)


Lesenswert?

Interrupteur schrieb:
> Ok, danke.
>
> Da steht auch
>
> "... und je einen Taster an PD2 (INT0) und PD3 (INT1)..."
>
> ich konnte im Quelltext des Beispiels nicht erkennen, dass die
> Interrupts Int0 und Int1 PD2 und PD3 zugeordnet werden.

Bei diesem µC ist diese Zuordnung fix. Diese und noch viele weitere 
Informationen finden sich IMMER im Datenblatt des fraglichen µC. Dort 
ist letztendlich deine einzig wahre Informationsquelle in der alles 
steht. Was dort nicht drinnen steht, existiert auch nicht im Umfeld 
deines µC.

Dein Datenblatt ist deine Bibel. Ohne es kannst du auf lange Sicht 
deinen µC nicht programmieren. Also ist gut, wenn du frühzeitig lernst 
mit dem Datenblatt umzugehen und zu arbeiten.

von Mechmet (Gast)


Lesenswert?

Was ist zum Zahlen von Signalen besser geeignet?

Wenn ich zählen möchte, wie oft jemand einen Taster gedrückt hat und es 
aufsummieren will, ist es günstiger, dies über einen sog. Interrupt zu 
machen oder eine Endlosschleife in einem Programm, die ständig den 
Register z.B. PIND abfragt und wenn jmd. nen Taster drückt und das 
entsprechende Bit von PIND den Wert 1 hat (für gedrückt), dann summiert?

von Karl H. (kbuchegg)


Lesenswert?

Mechmet schrieb:

> Register z.B. PIND abfragt und wenn jmd. nen Taster drückt und das
> entsprechende Bit von PIND den Wert 1 hat (für gedrückt), dann summiert?

Völlig ungeeignet.

Du musst/willst Flanken zählen und nicht wie lange eine Taste gedrückt 
ist.

Tasten und externe Interrupts sind ein Dauerbrenner hier im Forum. Die 
Antwort ist immer die gleiche: Zum Auswerten einer Taste braucht man 
keinen externen Interrupt. Ganz im Gegenteil. Durch Tastenprellen sind 
Interrupts eine schlechte Lösung.
Einzige Ausnahme: Wenn die Taste den µC aus einem sleep herausholen 
muss. Aber auch dann weckt der Interrupt den µC nur auf. Die eigentliche 
Auswertung geschieht wieder so wie hier:

Entprellung

Aber was hat das jetzt mit der Zurdnung von INT0 zu PD2 zu tun?

von Mechmet (Gast)


Lesenswert?

Was ist mit Impulsen von Lampen, z.B. wenn ich eine Lichtschranke hab 
und ein Fototransistor einen Pegel High/Low annehmen kann und ich die 
High-Werte zählen will, muss ich das Tastenentprellen auch 
berücksichtigen?Oder ist Entprellung ausschließlich bei mechanischen 
Bauteilen zu beachten?

von Karl H. (kbuchegg)


Lesenswert?

Mechmet schrieb:
> Was ist mit Impulsen von Lampen, z.B. wenn ich eine Lichtschranke hab
> und ein Fototransistor einen Pegel High/Low annehmen kann und ich die
> High-Werte zählen will, muss ich das Tastenentprellen auch
> berücksichtigen?

Wenn du Prellen grundsätzlich ausschliessen kannst, musst du nicht. Es 
schadet aber auch nicht, sofern dir die Entprellung kein Zeitproblem 
erzeugt.

> Oder ist Entprellung ausschließlich bei mechanischen
> Bauteilen zu beachten?

Es gibt auch prellfreie Taster.
Aber gerade bei Taster ist eine Softwareentprellung kein Thema. Sie 
verzögert das Erkennen eines Tastendrucks um ein paar Millisekunden. Das 
ist aber zu kurz, als das ein Mensch das wahrnehmen könnte und auf jeden 
Fall viel kürzer als je ein Mensch eine Taste drücken und wieder 
loslassen könnte. Ein paar Millisekunden sind aber für einen µC eine 
lange Zeit, in der er den entsprechenden Eingang ein paar mal abscannen 
kann, selbst dann wenn sich das im Hintergrund in einem Timerinterrupt 
abspielt.

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.