Forum: Mikrocontroller und Digitale Elektronik Interrupt vermehrung


von Peter AUT (Gast)


Lesenswert?

Wir suchen ein Bauteil, das folgende Aufgabe hätte:

8 oder 16 Eingänge, die einfach durchgeschliffen werden.
Wenn sich einer der Eingänge ändert, soll ein Interruptausgang
ansprechen.
Die Idee ist, mehrere Eingänge, aber nur einen Interrupt zu verwenden.

Schöne Grüße

von Khani (Gast)


Lesenswert?

Hallo Peter,

einfach alle Eingänge auf ein 8fach- (oder 16-fach ) OR geben und
dessen Ausgang auf einen interruptfähigen Pin. Ist auch kaskadierbar
für noch mehr Eingänge.

MfG, Khani

von Peter AUT (Gast)


Lesenswert?

JA aber:

Da würde ich nur erkennen wenn der 1. Eingang eingeschaltet wird.
Wenn ein zweiter dazukommt ist der int ja schon eins - also so ganz
würde das nicht funktionieren

Gruß Peter

von Hagen (Gast)


Lesenswert?

Die neueren AVR's können separat pro Port ein Pin-Change Interrupt
triggern. Also, PORTA = Input + Pin-Change ISR, in dessen ISR PORTA
lesen und an PORTB ausgeben.

Gruß Hagen

von Stefan Kleinwort (Gast)


Lesenswert?

@Hagen:

meinst Du mega48/88(168 ? Die sind aber noch nicht lieferbar, oder?

Stefan

von OldBug (Gast)


Lesenswert?

Alle Int-Sourcen via OR mit dem Interruptpin verbinden und zusätzlich
jede Source auf einen Port-Pin legen. Wenn dann ein Interrupt auftritt
guckt man einfach nach, welche(r) Pin(s) betroffen sind/ist. Damit
sollte es mit so gut wie jedem Prozessor gehen.

von Hagen (Gast)


Lesenswert?

> meinst Du mega48/88(168 ? Die sind aber noch nicht lieferbar, oder?

Korrekt. Aber ATTiny15, ATTiny26, ATTiny28 teilweise, unterstützen den
schon. Der ATTiny26 hat Port A + B und wäre eventuell ideal.
Die neueren m48/88 wären idealer.

@OldBug: wenn ich die Frage richtig verstanden habe dann hilft deinen
Lösung eben nicht weiter. Wenn 1 Pin auf HIGH ist, und nun ein anderer
Pin seinen Level ändert dann wird in deiner Logik eben kein Interupt
mehr ausgelösst. Die Frage war wie man bei IRGENDEINE Ändrung an 8
verschiedenen Pins einen IQR auslösen kann.

Statt OR wird via XOR jeder Pin verschaltet. Der Ausgang der XOR
Gatterkette wird als Input für INT0/INT1 genommen. Das käme der Lösung
schon näher, aber auch nur näher. Denn wenn nun 2,4,6,8 Pins
gleichzeitig ihren Status ändern wird wiederum kein IRQ ausgelösst.

Gruß Hagen

von OldBug (Gast)


Lesenswert?

Hm, stimmt... so weit hatte ich das gar nicht gesponnen g

von Hagen (Gast)


Lesenswert?

Mit dem ATTiny15 könntest du zB. 5 Leitungen überwachen, + 1Pin als
Ausgang für den IRQ. Statt die 5 Leitungen durchzuschleifen, wird der
ATTiny15 einfach in Reihe zu den Leitungen angeschlossen.

Mit dem ATTiny26 wäre so 15 Leitungen möglich.

Gruß hagen

von Hagen (Gast)


Lesenswert?

Es gibt aber doch auch Input-Schieberegister mit einem IRQ Ausgang. Du
legst an die Inputs des Shiftregister deine Leitungen dran und den IRQ
Ausgang an deinen AVR. Der Rest der Aufgabe/Leitungen der Shiftregister
interessieren dich dann garnicht mehr.

Gruß Hagen

von Dirk (Gast)


Lesenswert?

Hi,

eine Moeglichkeit waere ein I/O Expander zunutzen PCF8574. Diesen gibt
es mit 8 oder 16 i/o's .... Dieses IC besitzt auch ein INT Pin , wenn
z.B. eine Taste gedrueckt wurde liest du das IC per I2C Bus aus.


Mfg

Dirk

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.