mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ISA adressdekodierung für langsame µC


Autor: Stephan Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Christof Rieger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Markus_8051 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Stephan Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Christof Rieger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: ERDI - Soft (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.