Forum: Mikrocontroller und Digitale Elektronik Timingproblem beim ISA-Bus


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Stephan Müller (Gast)


Lesenswert?

hallo..

habe eine ISA-Karte gebastelt für den PC mit einem 68HC12 cntroller
drauf. der HC12 läuft intern mit 8 Mhz.
jetzt hab ich die Datenleitungen direkt an 2 ports drangehängt und
die adressleitungen an einen 8bit vergleicher, wobei A0 und A1
auch an einem Port hängen.
AEN steuert den Vergleicher (G') , IOW hängt auch am gleichen port wie
A0 und A1 sowie der ausgang vom vergleicher.

Wenn ich nun vom PC aus daten auf die IO-Adresse schreibe, hab ich das
problem dass der controller manchmal den wert bekommt und manchmal gar
nicht, also 0xFF, sprich er is nich schnell genug.
Im Controller sieht mein codeabschnitt nun so aus:
- vergleiche Steuerport mit A0 A1 IOW etc. auf entsprechendes
Bitmuster.
- wenn Daten da, lese den Wert vom Datenport und schreibe ihn in den
Ausgang.
- wenn nein, springe wieder zu punkt 1 (busyloop)

das ganze sind 4 maschinenbefehle

also irgendwie hab ich das gefühl er schafft es manchmal noch die Daten
zu lesen oder sie sind schon weg ...
wenn ich ein Array von gleichen zahlen sende z.b. 8, sieht das so aus:
08880008008080000088000000808088880000.... anstatt nur die 8

geht das überhaupt so dass ich den effektiven Adressvergleich im
controller selbst mache ? Besser wäre es vielleicht einen RAM Puffer an
den Datenbus zu hängen und der Controller dann nur die Werte abholt...
aber gehts auch nur mit Controller ?

kann mir jemand nen tip geben ?
oder kennt jemand das Problem und weiss schon was ich falsch mache ?

wenns nur mit RAM geht, kennt jemand da schon nen guten Chip ?
habe das Problem dass ich son Ram noch nie beschaltet hab..

mfg

von Stephan Müller (Gast)


Lesenswert?

mir hat hier damals schon jemand gesagt, dass man den controller nicht
direkt an den datenbus hängen kann, weil der mC zu langsam ist.
ich wollte es aber nicht glauben..
nun führt wirklich kein weg an ein externer Register oder Puffer vorbei
?

von Chris (Gast)


Lesenswert?

Hallo,

mit einem einfachen Latch ließe sich zumindest ein einzelnes Wort in
dem Moment speichern, in dem der Adressdecoder anspricht. Dann müßte
die Karte eine Zeit lang "busy" angezeigen, bis der MC das eine Byte
gelesen hat. Dann erst kann das nächste Wort auf die Adresse
geschrieben werden.

Gruß

von Stephan Müller (Gast)


Lesenswert?

habe was gefunden.. 2 mal 74LS273 , 8bit D FlipFlop Register.
damit könnte ich es mal versuchen, nur wie mache ich es dann dass ich
auch von der karte raus schreiben kann, die Ausgänge vom 74273 kann ich
ja nicht plötzlich als eingänge nehmen... hmm

ich könnte auch ein 82C55 nehmen, nur der hat nur 8bit datenleitungen,
dann bräucht ich 2, wäre ziemlich ne verschwendung..

hat jemand ne idee ?

von Chris (Gast)


Lesenswert?

Hallo,

wegen dem Schreiben:

Es gibt Latch-Typen mit Tristate-Ausgängen, z.B. 74HC573, 74HC574.
Zum Schreiben dann einfach vorher das Latch auf Tristate schalten.

Gruß

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.