Interrupt auf Pegeländerung mehrerer Leitungen

Gast #724439
Lesenswert?
• ▲
▼
Hallo Leute

Ich stehe vor dem Problem, dass ich von 6 Datenleitungen die Pegel 
überwachen will. Alle Leitungen haben normale 5V Logikpegel. Ziel ist es 
einen externen Interrupt am Atmel zu generieren sobald sich an einem der 
Leitungen ein Pegel von Low auf High oder High auf Low ändert.
Sehr einfach wäre das ganze wenn ein normaler Atmel 6 externe 
Interrupt-Eingänge hätte, aber da kann ich wohl lange warten bis Atmel 
sowas rausbringt...
Zweite Möglichkeit ist die Signale an einen der Ports zu leiten und die 
Pins dauerhaft in einer Schleife zu pollen. Das ist aber für meine 
Zwecke nicht machbar.
Dritte Möglichkeit an der ich jetzt auch schon rumgerätselt habe ist, 
alle 6 Leitungen irgendwie über Flip-Flops, NAND-Gatter, Zähler oder 
sowas ähnliches in der Art miteinander zu verbinden um somit zum Schluss 
ein einziges Signal zu generieren, welches sich ändert (von high auf low 
oder anders rum) sobald sich an einer der Leitungen was ändert.
Weiß jemand von euch an dieser Stelle weiter wie man so eine Schaltung 
aufbaut? Oder gibt es vielleicht noch eine vierte Möglichkeit an die ich 
noch nicht gedacht habe.
Ich danke euch schon mal.

Felix
#724442
Lesenswert?
• ▲
▼
Felix wrote:
> Sehr einfach wäre das ganze wenn ein normaler Atmel 6 externe
> Interrupt-Eingänge hätte, aber da kann ich wohl lange warten bis Atmel
> sowas rausbringt...

Oder Datenblatt lesen, alle neueren AVRs haben nen Pin-Change-Interrupt.

Aber wenn die Eingänge mechanische Kontakte sind, nimmt man besser ne 
Entprellroutine, die entprellt und flankenerkennt 8 Eingänge 
gleichzeitig.


Peter
Gast #724624
Lesenswert?
• ▲
▼
Hallo Peter

Dass man den externen Interrupt so konfigurieren kann, dass er auf 
Pegeländerung reagiert ist mir schon klar.
Das Problem ist aber, dass ich eben nicht nur ein Signal zum Überwachen 
habe, sondern gleich sechs, oder in Zukunft vielleicht noch mehr. Es 
reicht aber, einen Interrupt auszuführen wenn sich eins der sechs 
Signale ändert. Ich müsste also diese Sechs Signale irgendwie 
zusammenfassen können, vielleicht so wie ich es oben beschrieben habe.
Vielleicht fällt euch ja noch was ein.
Danke schon mal.

Gruß,
Felix
#724630
Lesenswert?
• ▲
▼
Der Pin-Change Interrupt fasst alle Änderungen an den entsprechend 
konfigurierten Leitungen in einem Interrupt zusammen, entspricht also 
exakt deinen Anforderungen.

Natürlich kann man sowas auch mit externer Schaltung machen, das ist 
aber deutlich aufwendiger.
Gast #724636
Lesenswert?
• ▲
▼
Such dir nen Atmel raus, an dem es Pins gibt, die mit PCINT0 - PCINT7 
beschriftet sind; soweit ich weiß, lösen die alle zusammen einen 
Interrupt aus und der Auslöser muss aus einem weiteren Register 
ausgelesen werden
#724656
Lesenswert?
• ▲
▼
Felix wrote:
> ... Oder gibt es vielleicht noch eine vierte Möglichkeit an die ich
> noch nicht gedacht habe.

4.) Deine Datenleitungen an den AVR und parallel an einen PCF8574.
Wenn du den als Eingang betreibst, löst der PCF bei jeder Änderung an 
den Eingängen einen Interupt aus, den du mit dem AVR auswerten kannst...
Du benötigst aber I²C...

nitraM

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