Forum: Mikrocontroller und Digitale Elektronik Interupt pin mehrfach nutzen


von Chris (Gast)


Lesenswert?

Hallo, ich möchte einen Interupt Pin von einem µC (z.B. B0 von einem PIC 
18F6722) von unterschiedlichen Bauteilen setzen lassen. Diese setzen 
jeweils über die gleiche Leitung einen weiteren Input Pib am PIC (ohne 
Interupt). Der ausgelöste Interupt checkt nun die in frage kommenden 
Pins und erkennt so welches Bauteil den Interupt ausgelöst hat. Hierfür 
bräuchte ich jedoch ein IC welcher mir den z.B. B0 Pin auffächert in 
z.B. 4-8, damit ich mit einem Ausgangspin von dem Bauteil jeweilc den 
Interuptpin als auch den weiteren PIN setzen kann. Was für IC's sind 
hier geeignet?

von Matthias L. (Gast)


Lesenswert?

Nimm je eine Diode und einen Pullup/down Widerstand.
Das nennt sich wired-or bzw wired-and.

von Alex B. (Firma: Ucore Fotografie www.ucore.de) (alex22) Benutzerseite


Lesenswert?

Oder du nimmst einen fertigen Multiplex-IC, wie z.B. 74LS151 
(8-Eingänge, 1-Ausgang).

von Michael Wilhelm (Gast)


Lesenswert?

>Oder du nimmst einen fertigen Multiplex-IC, wie z.B. 74LS151
>(8-Eingänge, 1-Ausgang).

Da können Ints verloren gehen wenn ein Int während des scannens auftritt 
und zu kurz anliegt. Elektrisch sauber wird es mit den erwähnten Dioden 
oder einem Odergatter.

MW

von gast (Gast)


Lesenswert?

mit dem multiplexer weiss er aber dafür welches bauteil den interrupt 
ausgelöst hat, das wird bei wired-or schwer

von Chris (Gast)


Lesenswert?

Hallo, warum verhält sich das beim Multipexer anders wie bei den Dioden? 
Eigentlich wollte ich moeglichst wenige Baulteile verwenden.

von Falk B. (falk)


Lesenswert?

@gast (Gast)

>mit dem multiplexer weiss er aber dafür welches bauteil den interrupt
>ausgelöst hat, das wird bei wired-or schwer.

Ist dennoch Unsinn. Der Sin von Interrupt sit ja, in jedem beliebigen 
Moment azuftreten zu können und die CPU sofort zur Reaktion zu 
veranlassen (ISR anspringen). Ein Mux muss geschaltet werden, das ist 
effektiv nur Polling. Das genaue Gegenteil eines Interrupts.

@ Chris (Gast)

>Hallo, warum verhält sich das beim Multipexer anders wie bei den Dioden
Siehe oben.

>Eigentlich wollte ich moeglichst wenige Baulteile verwenden.

Spare jederzeit, dann hast du immer Not. Nimm Dioden oder ein grosse 
AND-Gatter.

MFg
Falk

von Peter D. (peda)


Lesenswert?

Chris wrote:
> Eigentlich wollte ich moeglichst wenige Baulteile verwenden.

Dann überleg Dir erstmal, ob Du wirklich auf die Ereignisse innerhalb 
1µs reagieren mußt.

Z.B. mechanische Kontakte haben Schaltzeiten >10ms, d.h. ein 
Timerinterrupt alle 10ms reicht völlig und belastet Deinen MC kaum.


Bei den AVRs gibt es auch einen Pin-Change-Interrupt, der kann fast alle 
IOs auf Wechsel überwachen.


Peter

von Sven S. (stepp64) Benutzerseite


Lesenswert?

Dein PIC hat doch 4 Interrupt-On-Change Eingänge (RB4-RB7). Diese kannst 
du dafür benutzen. Ggf. schaltest du noch einen Dezimal-zu-BCD Decoder 
davor. Dann kannst du 16 unterschiedliche Interrupts detektieren und 
benötigst für jede Quelle nur einen PIN.

Sven

von Sven P. (Gast)


Lesenswert?

Nimm nen PCFxxx-Portbaustein für I2C, wenns ganz elegant sein soll. Der 
hat ne Pin-change-interrupt-Leitung und kann indes noch seine Pins 
auseinanderhalten.

von Michael H* (Gast)


Lesenswert?

4078 8-Input NOR/OR
wenn du dir sicher bist, dass nie zwei interrupts gleichzeitig 
auftreten, kannst noch einen 4532 (8bit priority(!) binärcoder) nehmen.

von Ralph (Gast)


Lesenswert?

Die große Frage hierbei ist eine andere.
Wie lange dauert die zu überwachende Signaländerung?
Egal ob mit polling oer wired OR muss das signal eine gewisse 
mindestzeit anliegen, um es erkennen zukönnen.

Wired or:  Der IRQ wird ausgelöst wenn der Eingang den Zustand wechselt. 
Danach muss die IRQ routine die möglichen parallelen Eingänge abtasten 
um festzustellen welcher Eingang es war.
Probleme in dem Fall:
1. Das Signal ist so kurz das in der IRQ alle Eingänge wieder 
zurückgewechselt haben, also nicht mehr feststellbar ist, welcher 
Eingang den IRQ ausgelöst hat.
2. Ein Signal geht auf "1"  solange dieses Signal auf "1" ist kann kein 
weitere Eingang einen IRQ auslösen.

MUX:
Die Eingänge werden abgepollt. Vorteil, es ist immer bekannt welcher 
Eingang gerade geprüft wird.
Nachteil: Ist das Signal zu kurz wird es nicht erkannt weil es in der 
Kücke zwischen zwei Abtastungen liegt.

Darüber solltest du dir mal Gedanken machen, die kann dir niemand 
abnehmen.

Alternativ ist auch durchaus eine Möglichkeit einen µC auszuwählen, der 
die
entsprechende Anzahl an IRQ fähigen Pins hat.

von hans (Gast)


Lesenswert?

Das Signal für den Interrupt zusätzlich auf FLIPFLOP führen (für
jedes ext. Ereignis eins). Beim Interrupt die FF abfragen und 
rücksetzen.

Also Or-für Verknüpfung FF für selektion.

Gruß hans

von Michael H* (Gast)


Lesenswert?

Ralph wrote:
> Die große Frage hierbei ist eine andere.
> Wie lange dauert die zu überwachende Signaländerung?
naja, das ist jetzt ein bisschen hochgegriffen. mein mehrfach-OR hat 
eine gatterlaufzeit von grob 100ns. schneller sind 74HC teile - da 
braucht man dann vllt 2 oder 3 stück - mit grob 20ns. das is grad mal 
grob ein takt bei 55MHz.
wenns wirklich soo~oo schnell sein soll, nimmt man halt ein RS-FF 
dazu...

> Alternativ ist auch durchaus eine Möglichkeit einen µC auszuwählen, der
> die
> entsprechende Anzahl an IRQ fähigen Pins hat.
vorsicht! die pin-change interrupts, auf die du vermutlich anspielst, 
sind wesentlich langsamer als ein externer interrupt!
wenn schon die kohle rauspfeffern, dann für ein CLPD

von Ralph (Gast)


Lesenswert?

Der zeitkritische Pfad ist nicht die Laufzeit in den Gattern, sondern im 
Pic die Zeit von externem Signal bis Abarbeitung der Sourcenabfrage in 
der IRQ routine.

Ich denke nicht unbedingt an die PinChange IRQ, sondern ganz allgemein 
an einen anderen µC.
Dies könnte auch ein 8052, AVR, ARM7 ,...... sein.

Hier ist wieder der typische Fehler passiert. Es wure ein µC ausgewählt 
und danach wird geackert um damit die Erfodernisse abzudecken.
Richtig wäre erst die Erfordernisse erarbeiten, und DANACH den passenden 
µC auswählen der alles so gut wie möglich erfüllt.

von Falk B. (falk)


Lesenswert?

@Ralph (Gast)

>Der zeitkritische Pfad ist nicht die Laufzeit in den Gattern, sondern im
>Pic die Zeit von externem Signal bis Abarbeitung der Sourcenabfrage in
>der IRQ routine.

Nicht wirklich. Denn sinnvollerweie beleibt ein Interruptsiganl solange 
aktiv, bis die Software das Ereignis erkannt und per Software 
zurückgesetzt hat. Das FlipFlop zur Speicherung ist praktisch schon in 
er Interruptquelle drin. Von Ausnahmen wir Tastaturen etc. mal 
abgesehen.

MFG
Falk

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.