hallo.. habe hier schon mal einen beitrag gepostet, wie man am besten die daten beim isa bus latchen (speichern) kann, sodass sie von einem langsamen Controller gelesen werden können. Nun bräuchte ich nochmal dringend hilfe, habe schon viel gegoogelt, aber noch ohne erfolg. die adressen liegen ja nur wenige zyklen (ca. 600 ns) auf dem adressbus. am adressbus habe ich einen 8bit vergleicher.. A0 und A1 gehen an meinen controller (68HC12) der aber nur mit 8 Mhz intern läuft. Dies ist aber sehr langsam, d.h. er bemerkt es manchmal gar nicht, dass ein IO zugriff (von aussen) stattgefunden hat, da ich mind. 2 maschinenbefehle für den vergleich von A0 & A1 brauche... (busy loop) mein problem ist, ich weiss jetzt nicht wie ich meinem Controller am besten mitteilen soll, dass sie sich jetzt angesprochen fühlen soll ... meines wissens kann man per IOCHRD nur den datenzyklus verlängern, aber nicht dass die adressen länger anliegen, oder täusch ich mich da ? ich könnte jetzt hingehen und A0 und A1 mit einem D-FlipFlop Register latchen, aber den muss ich ja nach der verarbeitung wieder auf 0 setzen, sonst bleibt die adresse ewig im register. das könnt ich vom controller aus machen, aber dazu brauch ich wieder 2 opcodes (setzen, rücksetzen) = zeit! mir fällt spontan nur ein, das ganze auf eine leitung zu minimieren und die an den interrupt eingang vom HC12 zu legen, sodass der controller immer reagiert, egal ob er grad mit was anderem beschäftigt ist. für schnelle verarbeitung bietet sich an, einen RAM dazwischen zu schalten, aber das fällt bei mir aus zeitgründen bereits ins Wasser... was schlägt ihr vor ? vielen dank ! Stephan
Du könntest mit ALE und IOW und/oder IOR den Adressbus Latchen und gleichzeitg über ein Flip-Flop den I/O CH RDY sezen. Nach dem dein Contoller dann die Daten gelesen hat kann er das Flip-Flop wieder löschen. Über das Flip-Flop kann dein Controler auch erkennen ob ein IO Zugriff statt gefunden hat.
Das ist eine Gurkenlösung, den ISA-Bus solange zu blockieren, bis ein µC sich bequemt hat, Daten abzuholen. Sowas macht man nicht. Wozu gibt es Dual-Port-RAMs oder FIFO-Bausteine?
Hey, der ISA-Bus ist kein Multi-Master-Bus! Wie Rufus schon schrieb, nimm ein Dual-Ported-RAM, oder halte die Daten in einem Latch zwischen, und laß beim µC einen Interrupt auslösen, wenn der PC neue Daten in das Latch schreibt. Gruß, Markus_8051
hmm, ich könnte die umständliche lösung nehmen und nachdem der µC die daten abgeholt hat den adresslatch manuell reseten und danach die daten verarbeiten und dann wieder erneut in eine busy loop hineinspringen bis neue daten ankommen... nur das manuell reseten kostet mich wie schon gesagt 2 maschinenbefehle bset bclr die sache mit dem flipflop finde ich sehr gut was IOCHRD angeht, aber wenn die zeit fürs aktivieren bei einem 16bit zugriff nur 52ns beträgt, ist mir dann doch etwas zu unsicher... bei den RAMs schreckt mich halt nur ab, wie man den beschaltet und welchen ich nehmen soll (artikelnummer), da ich komplett auf mich alleine gestellt bin. kann mir jemand vielleicht einen guten FIFO sagen ? nach möglichkeit 16bit parallel ca. 10k - 64 kyte groß und für ca. 90Khz ausgelegt. was haltet ihr eigentlich vom 74646 als Datenlatch ?? habe heute über meine FH 5 stück bestellt (kostenlos :) ) mfg
Was kümmerts wenn der ISA-Bus blockiert wird. Ich denke hier geht es um eine Bastellösung für ein bestimmtes Projek. Und der ganze Aufbau soll bestimmt nicht als Arbeitsplatzrechner verwendet werden, sonst käm auch kein ISA-Bus mehr zum Einsatz, den gibt es auf neuen Bords nähmlich garnicht mehr. Der 74ALS00 kostet 33 Cent sine Verzögerung pro Gater beträgt maximal 11nS. /IOR & /IOW verknüpfen -> IO IO & ALE verknüpfen -> /STROBE /STROBE auf den Eingang oben des NAND-Gater RS-Flip-Flops /I/O CH RDY am NAND-Gater RS-Flip-Flops unten abgreifen. Das Signal durchläuft 4-Gatter je 11nS ergib eine Maximale Verzögerung von 44nS.
Nimm doch nen TL16C550 und schalte den zwischen ISA-Bus und µController. Das macht auch die Ansteuerung wesentlich einfacher, da der TL16C550 vom PC als serielle Schnittstelle erkannt wird und du somit ainfach über HyperTerminal o.ä. kommunizieren kannst. Den Baustein gibts für knappe 6 Euro, hat nen FiFo drin. Brauchst dir also um die Geschwindigkeit des ISA-Bus keine Gedanken mehr machen.
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.