ich such' ein IC mit dem ich einen 8051-kompatiblen Mikrocontroller um 8 Interrupte erweitern kann. Konkret stell ich mir das folgendermassen vor: das IC speichert Hi oder Low Pegel an dessen Eingänge und gibt an einem Pin ein Signal zum Controller weiter (quasi 8-fach OR) über den Bus lässt sich abfragen, welcher Eingang den Interrupt ausgelöst hat. Dieser Eingang wird dann zurückgesetzt.... So in etwa. Hat da jemand einen Tipp?
Danke Thomas Frey
bitte in der emailadresse "trash" durch "tfrey" ersetzen.
Didn't find your answer? Ask the community — no account required.
S
Stefan Broering
Wenn das Signal lange genug anliegt, kann man sich das Speichern sparen. Die Oder-Verknüpfung kann man auch mit ein paar Dioden realisieren. Vorzugsweise aber mit invertiertem Pegel, d.h. die fallende Flanke löst den INT aus. Die entsprechenden Portleitungen werden mit einem Pull-Up nach + gezogen. Vom INT-Pin dann jeweils eine Diode zum Port-Pin. INT dann auf fallende Flanke am richtigen INT-Eingang.
Wenn der Impuls mindestens 30us anliegt sollte das funktionieren.
Gruß
Stefan
U
Uwe Bredemeier
Thomas Frey schrieb:
8295A
Gruß
Uwe
J
Joerg
Hallo Thomas,
Wenn ein paar Port Pins frei sind, vielleicht einen 8-fach Mux wie HC354 "durchroedeln" lassen. Hat aber keinen Latch Clear.
Gruesse, Joerg
formatting link
T
Thomas Frey
Uwe Bredemeier schrieb:
Hi Uwe,
unter dieser Bezeichnung finde ich leider nichts gescheites :( Kann es sein, dass das IC schon länger nicht mehr hergestellt wird?
Thomas Frey
bitte in der emailadresse "trash" durch "tfrey" ersetzen.
T
Thomas Frey
Hi,
Die Anwendung ist auch relativ zeitkritisch, darum muss das ganze so Ressourcen schonend wie möglich vor sich gehen.
Joerg schrieb:
bitte in der emailadresse "trash" durch "tfrey" ersetzen.
T
Thomas Frey
R.Freitag schrieb:
Den hab ich mir auch schon angeschaut, versteh ihn aber irgendwie nicht ganz. Der will dem Controller die Einsprungadresse des Interrupts mitteilen? Mir ist nicht klar, wie ich das mit einem 8051 verkoppeln kann.
bitte in der emailadresse "trash" durch "tfrey" ersetzen.
R
R.Freitag
nöö. 8259 heisst er.
Robert
'Vom Standpunkt eines Beamtenrechtlers aus betrachtet ist der Tod die
schärfstwirkenste aller bekannten, langfristig wirkenden Formen der
vollständigen Dienstunfähigkeit.'
aus: Kommentar zum Beamtenrecht.
J
Joerg
Hallo Thomas,
Dann bliebe noch die Brachialloesung: Interrupts einmal per Logik oder "Poor Man's Logik" (Dioden) so verknuepfen, dass jeder Interrupt am Pin zieht. Zusaetzlich die Interrupts mit R2R verkoppeln und per on-chip ADC und Look-up Table auswerten, welche davon gesetzt sind. Koennte aber je nach ADC zu lange dauern oder die Aufloesung nicht reichen.
Die serielle Abfrage sollte da meist schneller sein. Irgendwie geht das ja nur seriell, wenn nicht genuegend Interrupt-faehige Port Pins vorhanden sind.
Gruesse, Joerg
formatting link
H
Hans-Georg Lehnard
"Thomas Frey" schrieb
CPLD
Gruß Hans-Georg
F
Frank Seidinger
Thomas Frey schrieb:
Der 8259 ist ein Interrupt-Controller für 8080 bzw. 8085 kompatible CPUs. Für diese implementiert er ein spezielles "Protokoll". Der Controller liefert den Interrupt am INT Pin des Prozessors. Wenn der Prozessor die Interrupt-Verarbeitung beginnt, pulst er einmal den INTA Ausgang, der in diesem Modus direkt mit dem INTA Eingang des Controllers verbunden ist.
Der 8259 legt als Antwort auf den Puls den Instruction Code CD auf den Datenbus. Das ist der Instruction Code für einen subroutine call. Danach pulst der Prozessor noch zweimal den INTA Ausgang und erhält vom Controller High- und Low-Byte eines Interruptvektors. Insgesamt wird damit also ein Call auf die Adresse der Interrupt-Routine bewerkstelligt.
Mit Hilfe des Controllers kann die CPU also für jeden Interrupt eine eigene Adresse anspringen lassen. Die Adressen werden bei der Initialisierung des Controllers über Port-Zugriffe hinterlegt.
Der 8259 kennt noch einen Modus für 8086/8088 kompatible CPUs. In diesem Fall erwartet er nur zwei Pulse auf seinem INTA Eingang. Die legen nur das High- und Low-Byte auf den Datenbus. Hier wird also nur der Vector ausgegeben.
Für den 8051 lässt sich der Controller nutzen, in dem man den INTA Eingang unbeschaltet lässt. Dann zieht er nur den INT Pin runter und wartet auf die Bearbeitung. Da die Pulst am INTA-Eingang ausbleiben, macht er aus nichts mit dem Datenbus. Der Controller muss dafür initialiert werden mit AEOI = 0 (automatic end of interrupt). Die INT-Leitung bleibt damit solange für weiter Interrupts gesperrt, bis die CPU einen EOI-Befehl an den Controller sendet. Das ist in der Regel die letzte Anweisung der Interrupt-Routine.
Eine Alternative ist, den INTA-Eingang z.B. über einen Adressdekoder auf zwei Adressen im Adressraum deines 8051 zu legen. Liest die CPU in der Interrupt-Routine die beiden Adressen, legt der 8259 jeweils den Vector auf Datenbus. Die gelesen Werte kann man in einem Register sammeln und dann per indirektem Sprung zu der echten Routine springen.
Grüße,
Frank.
Geld allein macht nicht glücklich.
Es kommt auch auf die Menge an...
P
Peter Heitzer
Thomas Frey wrote: : Guten Tag,
: ich such' ein IC mit dem ich einen 8051-kompatiblen Mikrocontroller um 8 : Interrupte erweitern kann. : Konkret stell ich mir das folgendermassen vor: das IC speichert Hi oder : Low Pegel an dessen Eingänge und gibt an einem Pin ein Signal zum Prioritätsdecoder mit Latch?
U
Uwe Hercksen
Peter Heitzer schrieb:
Hallo,
nicht de- sondern Encoder:
74x147, 74x148, 74x348 und 74x278.
Bye
B
B. Spitzer
Hallo Thomas,
Warum denn nicht ein Derivat mit mehr Interruptquellen? Der AT89C51ED2 hat am Port 1 einen Matrix-Tastatur-Controller, der einen gemeinsamen Interrupt auslöst.
Ein GAL: Du brauchst 1 INT-Ausgang und 3 Ausgänge für den Vektor. Beim Interrupt wird der Vektor gebildet und mit dem rückgekoppelten INT-Signal an CLK abgelatcht. Ein weiterer Pin und der Controller setzt die Flipflops des Vektors zurück
tschuessle Bernhard Spitzer
bash.org - Top 100...
hm. I've lost a machine.. literally _lost_. it responds to ping, it
works completely, I just can't figure out where in my apartment it is.
Join the Discussion
Have something to add? Share your thoughts — no account required.
Didn't find your answer?
Ask the community — no account required
Report Content
You are reporting this content to the moderators. They will look at it
ASAP.