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?
Nimm je eine Diode und einen Pullup/down Widerstand. Das nennt sich wired-or bzw wired-and.
Oder du nimmst einen fertigen Multiplex-IC, wie z.B. 74LS151 (8-Eingänge, 1-Ausgang).
>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
mit dem multiplexer weiss er aber dafür welches bauteil den interrupt ausgelöst hat, das wird bei wired-or schwer
Hallo, warum verhält sich das beim Multipexer anders wie bei den Dioden? Eigentlich wollte ich moeglichst wenige Baulteile verwenden.
@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
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
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
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.
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.
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.
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
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
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.
@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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.