hallo habe bis jetzt eine ISA karte selbst entwickelt und zusammengelötet. d.h. auf der platine befindet sich ein mc68hc12 microcontroller, der da jetz dann viele verschiedene tolle sachen machen soll... alles funktioniert, nur ich will der karte jetz mit hilfe den adressleitungen eine IO adresse vergeben! und zwar die adresse 0x200 ! in binär sieht das so aus: 10 0000 0000 ich hab das problem dass sobald ich an A0 oder A1 was dranhäng egal ob GND oder +5V der rechner nimmer hochfährt beim anmachen also es kommt kein bild etc... sobald A1 weggelötet ist gehts wieder, warum ? A2-10 hängen bei mir auch am controller, nur da störts nich... wenn ich jetz die adresse 200h haben will, reicht das wenn ich A10 direkt an +5V häng und der rest lose bleibt ? wie würdet ihr das am besten machen ? mfg
Hi, was bedeutet hier A10 auf +5V hängen??? Du sollst auf die Adressleitungen doch keine Signale geben. Nein das muss ich falsch verstanden haben, das kannst du nicht gemeint haben...
dann muss ich wohl was falsch verstanden haben.. es gibt doch den sog. IO Speicher aufm Mainboard, dort hängt der Prozessor dran und jegliche peripherie, wenn ich jetz vom controller aus was in den IO Speicher schreiben will sodass der Proz sich dann die Daten via "in al, dx" holen kann, muss ich doch 0x200 also das entsprechende Adressbitmuster auf den Datenbus legen oder ? mfg
Ich weis ja nicht, was für nen Rechner du verwendest und ich kenn mich mit ISA-Bus (elektronisch gesehen) nicht aus. Aber ist auf der Adresse 0x200 nicht schon der ISA-Gameport? Gruß Andi
und was passiert in deiner schaltung, wenn die CPU versucht auf den Bus zuzugreifen, während du an den Adressleitungen rumfummelst? Die Adresse der ISA Karte ist imo doch nur zur Auswertung auf der Karte gedacht. Sie wird mit dem Zustand der Adressleitungen durch einen Vergleicher gejagt, um festzustellen, wann sie sich angesprochen fühlen soll. Um von selbst schreibend auf den Bus zuzugreifen muss man ein ziemliches Prozedere durchziehen: "An ISA device may take control of the bus, but this must be done with caution. There are no safety mechanisms involved, and so it is easily possible to crash the entire system by incorrectly taking control of the bus. For example, most systems require bus cycles for DRAM refresh. If the ISA bus master does not relinquish control of the bus or generate its own DRAM refresh cycles every 15 microseconds, the system RAM can become corrupted. The ISA adapter card can generate refresh cycles without relinquishing control of the bus by asserting REFRESH. MRDC can be then monitored to determine when the refresh cycle ends. To take control of the bus, the device first asserts its DRQ line. The DMAC sends a hold request to the cpu, and when the DMAC receives a hold acknowledge, it asserts the appropriate DAK line corresponding to the DRQ line asserted. The device is now the bus master. AEN is asserted, so if the device wishes to access I/O devices, it must assert MASTER16 to release AEN. Control of the bus is returned to the system board by releasing DRQ."
du meinst den joystick port ? nö hab im gerätemanager geschaut, 200 bis 270 is frei.. isn testrechner, is ja auch keine soundkarte drin :P ISA soundkarten verwenden gern 200h bis 240h..
Hallo, Kannst du mal den Schaltplan von deiner Karte posten, damit man sich vorstellen kann, was du da vor hast? So wie ich das gelesen hab, hast du vom Grundsatz nicht verstanden, wie ein ISA-Bus funktioniert. Im Falle von IN DL, AL passiert nämlich folgendes: - Die CPU auf dem Mainboard legt die Adresse auf den Adressbus - Sie liest die Daten vom ISA-Bus entsprechend der Karte, die auf diese Adresse antwortet. Was dann dein Controllerboard machen muss ist: - An den Adressleitungen auf die IO Adresse lauschen, und wenn diese anliegt: - Daten auf den Datenbus legen! ACHTUNG: NIEMALS Adressleitungen von einer ISA-Karte mit 5V oder GND verbinden! Diese Leitungen sind AUSGÄNGE (aus sicht des ISA-Slots) und dürfen nur an Hochohmige EINGÄNGE geschaltet werden! Das erklärt auch, warum A0 und A1 sich nicht auf 5V oder GND legen lassen und dann der PC nicht mehr startet: Die CPU kann ihre Adressen gar nicht mehr auf den Bus legen! Ein wunder, das dein Board das überlebt hat ... MFG Hannes
ok.... also ich hab noch nie einen vergleicher (comperator?) verwendet, bin noch bisle newbie beim basteln ;) also ich stell mir des vor dass dann da meine 10 adressleitungen reingehen und ich diesen Comperator auf ein bestimmtes bitmuster vorher einstellen kann, sodass wenn dann 200h kommt, er dann ein HIGH am Ausgang liefert und NUR die Ausgang dann mitm COntroller verbunden ist, und nicht die Adressleitungen selbst.. .Daraufhin kann ich ja dann über die Datenleitungen die Daten direkt empfangen und auswerten. Aber der ungekehrte weg da auf englisch, wieso brauche ich die DMA leitungen dazu ? ICh dachte DMA is nur um auf den Hauptspeicher zugreifen zu können, aber IO Speicher wäre dabei ausgeschlossen. mfg
achsoooooo die adresse liegt auch bei einem "in" an un dnicht nur wenn ein "out" kommt... jetzt wird einiges klarer, dann is ja das mit dem comperator ne super lösung für beide richtungen, weil in meinem falle könnte ich nur schreiben und würde aber gleichzeitig den ganzen bus blockieren. ich hoffe ich hab richtig geraten wie so ein Vergleicher funktioniert :) "ein wunder dass mein board noch funktioniert??" ok, ich machs ja nimmer :) mfg
Hi, der übliche weg ist nur die hohe Adressleitungen (A3..A9) auf einen Vergleicher (z.B. 74688) zu legen und dort mit den Einstellungen von Jumpern zu vergleichen. Das Resultat dieser Schaltung wandert zusammen mit den unteren Adressen in den µC. (Du kannst natürlich auch alle Leitungen auf den µC geben, wenn der soviel IO-Pins hat und den Vergleich dann dort ausführen.) Naja, der Punkt ist, dass man auf diese Weise einen Adressbereich für die Karte auswählt und die niederen Bits unterschiedliche Funktionalitäten ansprechen können. Bis gerade eben war ich auch fast der Meinung wie Hannes, dass bei ISA die CPU immer der Master ist und daher die Adressleitungen für die Einsteckkarten grundsätzlich nur EINGÄNGE sind. Offensichtlich kann eine ISA Karte aber den Bus übernehmen, nur genaues weiss ich dazu leider nicht... Aber so ohne weiteres einfach die Adressleitungen zu manipulieren, womöglich noch direkt ohne Längswiderstand an Betriebsspannung zu klemmen, halte ich für extrem gewagt.
hi, eigentlich kann eine ISA-karte den bus nicht übernehmen, sonder maximal der DMA-controller. die adressleitungen sind reine ausgänge die vom mainboard gesteuert werden, und können nicht von ISA-karten beeinflusst werden. daran sollte man immer denken, auch wenn es nicht so ausschaut wie z.b. im memory-mapped mode. CA
Und nochwas: Die Adressen sind nur gültig wenn AEN auf Low liegt !
Entweder wurde der Begriff "ISA-Busmaster" seinerzeit falsch (mißverständlich) verwendet oder ich habe es nur nicht begriffen, was damit gemeint ist. Zumindest segelte der legendäre Adaptec SCSI-Controller AHA 1542 CF unter der Flagge "ISA-Busmaster", was immer das nun wirklich bedeutet haben mag. Gruß Ingo
Und was ganz anderes: lohnt es sich überhaupt noch, sich über den ISA-Bus Gedanken zu machen? Der ist tot wie nur irgendwas tot sein kann. Und nötig ist er auch nicht mehr: wenn man spezielle Hardware an den PC pappen will, gibt doch ausreichend schnelle Schnittstellen.
totgesagt leben mal wieder länger. im industriellen bereich gibts den isa bus immer noch, weil teure/extra entwickelte/spezial karten für die schnittstelle nicht mal eben ausgetauscht werden. es gibt auch immer noch aktuelle mainboards mit isa bus zu kaufen.
"es gibt auch immer noch aktuelle mainboards mit isa bus zu kaufen." Das würde mich mal interessieren. Ich habe schon lange keins mehr gesehen und die Suche schon vor ca. 1Jahr eingestellt. Ich habe hier noch einen "Spezialrechner", in dem mehrere ISA-Karten drin sind (Programmiergeräte, Karte für CNC-Fräse). Da würde ich gern mal was neues haben, hat immer öfter komische Macken und das liegt am mainboard. ALso wenn du was weisst, her damit.
http://www.geizhals.at/?fs=mainboard+isa liefert immerhin ein, wenn auch teures, Ergebnis. Erweiterte Suchmoeglichkeiten hat Geizhals meines Wissens ja leider nicht.
Hi PC104 ist ISA und noch weit verbreitet. Es gibt auch im Umfeld der Industrierechner noch viele, moderne Board mit ISA-Slots. Allerdings nicht für Consumer-Preise. Einfach mal bei den einschlägigen Industrie-PC Herstellern vorbeischauen. Matthias
Wenn Du etwas eingebettetes bastelst und auf Hardware mit dusseligen Binärtreibern angewiesen bist, kommst Du oft nicht um eine blöde x86-CPU und ein Betriebssystem herum. Und dann bist Du froh, wenn Du z.B. am SC520 Dein übliches IO-Geraffel alles an den ISA-Datenbus hängen kannst, die Adreßvergleicherei nimmt er Dir über die PAR-Register ab und man kann direkt die ChipSelects von der CPU benutzen. Im Programm kannst Du dann tun, als hättest Du 16 kB I/O-Register ...
Es gibt genau vier Moeglichkeiten etwas am ISA-Bus anzuschliessen: 1. Man schliesst einen Portbaustein an wie z.B 82C55. Ist ein bisschen verschwenderisch, aber geht. 2. Man simuliert sich seinen eigenen Portbaustein mit zwei Registern. 3. Man verwendet eine spezielle CPU die sich nach aussen hin wie ein Register verhalten kann. Sowas war z.B frueher mal auf alten Motherboards drauf (8042). Ist aber wohl stark aus der Mode gekommen. 4. Man verwendet Dual-Port Ram. Das ist die eleganteste Loesung. 5. Man simuliert 1-4 mit einem FPGA. Olaf
wegen dem Vergleicher nochmal: also wenn ich mir jetz schon die Arbeit gemacht hab und die Adressleitungen an einen Port vom Controller selbst drangelötet hab, dann kann ich ja die Variante nehmen und den Adressvergleich per Software im Controller ausführen. ich versteh aber immernoch nich dass sobald ich A1 an den Controller dranhäng warum der Rechner dann abkackt. Auf dem HC12 ist ein Debug12 Monitorprogramm, welches bei der Initialisierung vielleicht den Port auf GND oder 5V legt.. aber dann müssten die anderen Pins ab A2 bis A10 auch Probleme machen, die bereits auch am selben Port hängen. Hat A1 vielleicht ne bestimmte Bedeutung ? ich wüsste nicht.. nur A0. mfg
Du kannst den Controller nicht auf diese Weise direkt an den Bus haengen weil er viel zu langsam sein wird um Daten zu uebernehmen wenn dies vom ISA-Bus verlangt wird. Von deinen anderen Problemen ganz abgesehen. Gelegentlich hilft es wirklich Datenblaetter zu lesen bevor man loetet. :-) Olaf
:-) nun ich tendiere jetz doch dazu mir einen vergleicher auszusuchen und den dann zu kaufen. Da bin ich auf der sicheren seite und hab gleich mal 1 port mehr frei beim controller :) nun für die IO adressen brauch ich doch A1-A10, weiss nich warum immer nur von A9 die rede ist..
Also ich wuerde dir empfehlen ein kleines Dualportram zu nehmen. Das scheint mir die eleganteste Loesung. Du hast dann einen kleinen Rambereich von z.B 1kB den beide Prozessoren gemeinsam nutzen koennen. Ich weiss aber nicht ob Reichelt sowas im Angebot hat. :-) Olaf
letzte frage nochmal zu dem thema mit den adressen damit alle unklarheiten bereinigt sind es geht um A0: beim 8bit isa bus brauch ich die adressen A0 bis A9 (10 bit). beim 16bit ISA bus hab ich aber gelesen dass A0 zusammen mit BHE zur byte selektierung herangezogen wird. D.h. wenn z.b. A0 auf 0 ist und BHE auch dann weiss ich als ISA karte dass jetz ein WORD zu lesen ist. Aber dann hat A0 ja gar nich mehr die Funktion als Adressbit zusammen mit den andren adressleitungen ? wenn ich jetz z.b. die adresse 201h ansprechen will dann würde ja A0 auf high gehen.. wie ist des da gemeint ? ich bin bisher davon ausgegangen dass sich die leitungen halt eben alle um eins verschieben also anstatt A0-A9 jetzt A1-A10 .. mfg
Das mit A0 ist etwas komplizierter. Wenn du nur die IO Adressen verwendest wird es aber wieder einfach: A0 ist eine normale Adresse. Ist zusätzlich BHE aktiv (also Low) dann ist es ein 16bit Transfer, ansonsten ein 8bit.
ah ne ich glaub jetz weiss ich.. klar.. wenn ich 201h anspreche dann ist ja automatisch das höhere byte vom wort bei der adresse 200h gemeint. dann müsste aber demnach ein befehl wie "out 201h, ax" ungültig sein wohingegen der befehl "out 201h, al" geht.. seh ich das richtig ? JA :) mfg
Allerdings sorgt das Mainboard dafür, dass das High Byte bei einem Byte Transfer immer auf D0-7 landet.
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.