www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Timingproblem beim ISA-Bus


Autor: Stephan Müller (Gast)
Datum:

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

Autor: Stephan Müller (Gast)
Datum:

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

Autor: Chris (Gast)
Datum:

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

Autor: Stephan Müller (Gast)
Datum:

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

Autor: Chris (Gast)
Datum:

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

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.