Forum: Mikrocontroller und Digitale Elektronik Verständnisfrage zu Interrupts


von tobi (Gast)


Lesenswert?

Guten Abend,

ich würde gerne wissen, ob man eine Schalterstellung pes Interrupt 
abfragen kann.

Folgendes virtuelles Szenarion, um polling zu umgehen:

Ich habe einen Schalter an einem Port. Nun schalte ich den Schalter ein 
(High-Signal am Pin x). Jetzt soll ein Interrupt ausgelöst werden, der 
eine bestimmte Sache macht (z.B. einen anderen Pin auf High-Pegel 
setzen).

Nun würde ich gerne ebenlalls in die gleiche INT-Routine springen, wenn 
der Schalter ausgeschaltet wird (also abfallende Flanke).

Also ergibt sich folgende Fragestellung: Wenn ich den Schalter 
einschalte, wird durch die ansteigende Flanke ein Interrupt ausgelöst. 
Kann nun innerhalb dieser Routine das auslösen des selben Interrupts auf 
"fallende Flake" umgestellt werden?

Bitte nur dieses Szenario kommentieren (nicht über Zweck nachdenken :-)
Also kein Taster sondern ein Schalter.

Danke und Grüße

tobi

von Sonic (Gast)


Lesenswert?

Falls du einen AVR (ATmega oder ATtiny) hast, dann musst du nichts 
umdrehen. Du kannst die INT-Routine bei beiden Flanken auslösen, muss 
nur im richtigen Register (MCUCR glaub' ich) definiert werden. 
Entprellung nicht vergessen!

von tobi (Gast)


Lesenswert?

Also kann nach auslösen der Int.Routine das High-Signal bestehen 
bleiben, ohne die Routine ständig auszulösen?

War mir nicht sicher, ob es statisch oder Flankengesteuert wird, so ein 
Interrupt.

Danke und liebe Grüße

tobi

von Sonic (Gast)


Lesenswert?

Bei den AVRs kannst du Flanken- und Pegelgesteuerten Interrupt auslösen. 
Schau dir mal ein Datenblatt an, da steht's haarklein drin!

von tobi (Gast)


Lesenswert?

Supi, vielen Dank, verständnisproblem beseitigt!

Grüße

tobi

von Peter D. (peda)


Lesenswert?

tobi wrote:

> ich würde gerne wissen, ob man eine Schalterstellung pes Interrupt
> abfragen kann.

Ja, aber nicht mit dem externen Interrupt, sondern nur mit dem 
Timerinterrupt.

Der Grund ist, daß Schalter prellen, d.h. bei nem externen Interrupt 
würdest Du nur so mit Interrupts zugeballert, was äußerst selten 
erwünscht sein dürfte.

Im Timerinterrupt (etwa alle 5..50ms), akzeptierst Du nur dann nen 
Zustand, wenn er mindestens zweimal gleich war und der Schalter ist 
entprellt.


Peter

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.