Externer Interrupt?

Gast #2492545
Lesenswert?

Hallo meine Freunde,

bin Anfänger im bereich Mikrokontroller.
Habe jetzt auch schon etwas im Forum gesucht, aber nix zu meiner Frage 
gefunden, oder ich verstehe es einfach nicht.

Meine Frage:

Ist ein externer Interrupt (mit Taster) beim ATMEGA 8 nur über INT0 und 
INT1 möglich ist. Oder kann ich auch über jeden anderen Port einen ext. 
INT ausführen?

Für eure Antworten bedanke ich mich im Voraus.

LG
Mike
Gast #2492552
Lesenswert?

Prinzipiell beantwortet solche Fragen das Datenblatt des Prozessors. 
Ohne das kommst du nicht weit.

Ausserdem ist die Auswetung eines Tasters über einen externen Int nicht 
die beste Möglichkeit.

Und ja, beim Mega8 geht das nur über die INTx-Pins.

Oliver
Gast #2492868
Lesenswert?

Hi
Einen Taster auf einen Interrupt zu legen ist keine gute Idee. Das ist 
einem Profi klar, aber nicht einem Anfänger und deshalb möchte ich da 
etwas näher drauf eingehen. Schaltkontakte sind in der Regel so träge, 
das selbst ein ausgewachsenes Controllerprogramm diesen Eingang ohne 
Datenverlust pollen kann. Pollen heißt, am Anfang deiner 
Programmschleife holst du dir einmal die Eingänge und legst sie in eine 
Variable. Könntest du den Schalter so schnell schließen und wieder 
öffnen, bevor dieser Lesevorgang aufgerufen wird, ist ein Interrupt 
eerforderlich, aber das wist du nicht schaffen. Außerdem, und das ist 
noch viel lustiger, haben Kontakte es an sich zu prellen. Ein 
Signalwechsel beginnt mit ganz schnellen Impulsen, bevor die Signallage 
stabil ist. Hast du nun deinen Eingang über einen Interrupt abgefragt, 
so wird er ziemlich oft aufgerufen. Völlig unnütz, weil du ja gar nicht 
weißt, welches die erwünschte aktuelle Lage ist. Damit du ein wenig 
Einblick in das gesagte bekommst, betrachten wir mal einfach einen 
Controller mit 1MHz Taktfrequenz. Auch wenn der Flash bei einem Atmega8 
8KB groß ist, so wird auch bei 100% Programmierung nur 20 - 30% der 
Anweisungen ausgeführt. Nehmen wir mal an, eine Anweisung braucht 2 
Taktzyklen und es sind 2KB Befehle abzuarbeiten. Dann braucht das 
Programm 4000 Taktzyklen. Die Frequenz hat aber 1 000 000 Takte / 
Sekunde, d. h. du durchläufst dein Programm in der Sekunde 250 mal. 
Umgekehrt, ein Durchlauf dauert 4 mSek.
Nur wenn dein Kontakt ein Signal unter  mSek. erzeugt, ist ein Interrupt 
erforderlich, weil du nicht sicher stellen kannst, es zu erfassen. 
Wunder dich also nicht, wenn du immer wieder abweisende Antworten bei 
Tastern und Interrupt erhälst.
Gruß oldmax

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