(WakeUp-)Interrupt über viele Schalter

OP #2268209
Lesenswert?

Hallo,

vorweg mein Aufbau:
Kreisförmig angeordnete Reeds werden von einem Magneten so geshaltet das 
mehrere nebeneinander an sind (ist leider baugrößen bedingt so).
Diese werden per SPI über 74HC165er ausgelesen.
Das "ausgeschaltete" Gerät/AVR (in wirklichkeit im Power Down) soll 
jetzt bei einem Schaltvorgang per Interrupt geweckt werden.

Mein Problem:
Wie bekomme ich es hin das ohne ständiges Wecken des AVRs ein 
Schaltvorgang erkannt wird/ein Interrupt ausgelöst wird?
Einfaches zusammenfassen per OR Gatter oder Dioden geht nicht, da ja 
mehrere Geschaltete sind (das ist auch mein Größtes Problem).
Im moment habe ich den Schaltplan wie im Anhang (R1,5,7 Sind PullUps und 
R2,6,8 sind die "Schalter"), der macht mich aber absolut nicht 
glücklich.
Gibt es dafür spezielle Bausteine oder eine Bessere Schaltung?


Danke für Hilfe!
Angehängte Dateien:
#2268228
Lesenswert?

Controller mit Pin-Change Interrupt verwenden. Die Schalter so mit 
Dioden koppeln, dass bei beispielsweise maximal 3 gleichzeitig aktiven 
Schaltern erst jeder 4. Schalter am gleichen Pin landet. Dann tut sich 
bei jeder Änderung was an den Pins.

Wenn die anderen Enden der Schaltergruppen selektiv vom Controller 
angesteuert werden, dann kannst du über die entstehende Matrix auch 
gleich einige Shifter einsparen.
Gast #2268233
Lesenswert?

Daniel Steffen schrieb:

> Einfaches zusammenfassen per OR Gatter oder Dioden geht nicht, da ja
> mehrere Geschaltete sind

Die Pin-Change-Interrupt-Methode ist zwar besser; wenn man es aber 
dennoch mit Gattern machen möchte, geht das sehr wohl, nämlich mit 
beliebig vielen hintereinandergeschalteten EXOR-Gattern. Sowas gibt's 
auch fertig als "Paritätsprüfer", z.B. CD40101 oder 74HC280 mit 9 
Eingängen oder CD4531 mit 13 Eingängen.

Wann immer sich ein Eingangspegel ändert, ändert sich auch der Ausgang 
des gesamten Konstrukts - und könnte somit einen Interrupt auslösen. 
Problematisch wird das nur, wenn sich zwei Eingänge gleichzeitig 
ändern...
#2268778
Lesenswert?

Daniel Steffen schrieb:

> Kannst du deine Methode bitte nochmal genauer erklären?
> Ich steh aufm Schlauch und weiß echt nicht was du meinst.

Sorry für die Prosa, aber CAD auf einem Netbook macht wenig Freude.

Ich nehme hierfür mal an, dass maximal 3 benachbarte Schalter der 
insgesamt N Stück eingeschaltet sein können. Sind es mehr, dann 
entsprechend anpassen.

Du benötigst 4 Input-Pins mit Pin Change Interrupt, die internen Pullups 
eingeschaltet. An den ersten Pin kommt über eine Diode pro Schalter die 
"obere" Seite der Schalter 1,5,9,13,... an den zweiten 2,6,10,14,... 
usw.

Zusätzlich benötigst du N/4 Output-Pins oder Schieberegister-Pins. An 
den ersten davon kommt das "untere" Ende der Schalter 1-4, an den 
zweiten 5-8 usw. So kannst du zur Abfrage der Reihe nach die 4er Gruppen 
auswählen und feststellen, welche Schalter davon eingeschaltet sind.

Für den Powerdown stellst du sämtliche dieser Ausgänge auf low. Wann 
immer sich an den Schaltern etwas rührt wird sich an den Input-Pins 
etwas ändern und er wacht auf.

Gesamtaufwand für Schalter-Abfrage plus Fähigkeit zum Powerdown-Wakeup: 
N Dioden plus 4 Input-Pins plus N/4 Output Pins oder N/(8*4) 
SIPO-Schieberegister-ICs. Das dürfte weniger sein, als du bisher allein 
für die Abfrage vorgesehen hattest.

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