Forum: Mikrocontroller und Digitale Elektronik Interrupt auf Pegeländerung mehrerer Leitungen


von Felix (Gast)


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

von Der Dude (Gast)


Lesenswert?

...was soll das denn werden?

von Peter D. (peda)


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

von Felix (Gast)


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

von Frank B. (frank_b) Benutzerseite


Lesenswert?

Lies die Antwort von Peter nochmal genau.

Es gibt AVRs so vielen Interrupt-Eingängen. Beispiel: Tiny2313

lg, Frank

von Andreas K. (a-k)


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.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Noch einmal zum Mitlesen: neuere AVRs haben Pin Change Interrupt 
Erkennung an vielen oder allen Pins. Beim Tiny2313 zum Beispiel 8 Stück, 
am Mega168 sind es sogar 24. Reicht das?

von Kallius (Gast)


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

von Nitram L. (nitram)


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

von Felix (Gast)


Lesenswert?

Hallo

Die Möglichkeit des PCINT war mir nicht bekannt, aber das ist genau die 
Lösung die ich brauch. Bin ich wieder ein Stück schlauer :-)
Dank euch nochmal.

Felix

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.