NKC Forum
Registrieren | FAQ | Suche | Wer ist online? | Mitgliederliste | Heutige Beiträge | Einloggen



Autor Thema: GDP64 an Arduino
smed
Kennt sich schon aus
**
ID # 114


  Erstellt am 18. Dezember 2019 16:54 (#21)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Hallo,
ein Weiteres Update zum Thema Arduino mit auf dem BUS:

Ich habe (parallel zur 68K CPU) einen Arduino mit auf dem NKC Bus dessen GPIO ports mit dem NKC Bus verbunden sind.

So kann ich vom PC direkt files in das NKC RAM schreiben. Dazu habe ich mir ein kleines Komandozeilenprogramm geschrieben das eine beliebige Datei vom PC zum Arduino schickt der das Ganze dann ins NKC RAM schreibt.

Eine 32kB Datei (SpaceInvaders entwickelt mit m68k C cross compiler gcc 8.2) ist so in rund 20 Sekunden im NKC. Die 68k CPU stuerzt dabei zwar ab (habe mich noch nicht mit DMA beschaeftigt), aber der Arduino sendet dann noch ein Reset an die 68k CPU und startet das erste Program in der Bibliothek - und das Program laueft auf der 68k CPU ! Also: am PC in C programmieren, 68k binary file kompilieren, zum NKC uebertragen und starten = alles mit *einem* Tastendruck am PC in wenigen Sekunden.

Wer moechte kann alles kriegen, Software, KiCad files, etc. ist aber alles nur im Prototypen Status.

Weiterentwickeln mochte ich das Ganze demnaechst noch mit dual-ported SRAM (IDT 7007) auf das die Arduino- als auch die NKC CPU Zugriff haben, dann wirds richtig schnell. Die SRAMS habe ich schon aus China.

Gruss
smed

PS Die Steckerleiste oben wird uebrigens zur KEY verbunden (statt Tastatur) - der Arduino reicht dann auf Wunsch Tatstatureingaben vom PC an den NKC weiter - seeeeehr praktisch









-----------------------
NKC'ler und RDK Fan seit 1984 (Pause zw. 1988-2017)
CPU68k,CPU68000,4xROA64,6xIOE,6xGDP,GDPHS,8xSBC2/3,HEXIO,6xKEY,FLO2,PROMER,CENT,SER,SOUND,CAS,4xBUS2,3xPOW5V,2xTAST..und neuerdings einen Arduino mit auf dem BUS. Und eine selbstgebastelte MEM960k. UHR, IDE und COL256 noch nicht gebastelt.

NKC - OpenSource since 1983

Beiträge: 124 | Mitglied seit: Januar 2011 | IP-Adresse: nicht gespeichert
m.haardt
Fühlt sich wie zu Hause
***
ID # 93


  Erstellt am 18. Dezember 2019 18:51 (#22)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Kannst Du mal den Schaltplan posten? Die Platine sieht einseitig aus, das würde ich glatt auf Lochraster aufbauen.

Damit könnte man mit dem Arduino als Busmaster alle möglichen Funktionen prüfen. Ich gehe mal davon aus, dass Du ein Sketch hast, was nette Funktionen für Buszugriffe bietet?

Wird der Arduino vom NKC mit Strom versorgt?

Michael

Beiträge: 401 | Mitglied seit: April 2008 | IP-Adresse: nicht gespeichert
smed
Kennt sich schon aus
**
ID # 114


  Erstellt am 18. Dezember 2019 18:58 (#23)  |  Zitat Zitat   PN PN   E-Mail E-Mail
https://ntxdhxgzadrdathx.myfritz.net/forumdrc/index.php?mode=viewthread&forum_id=5&thread=44& ;)

-----------------------
NKC'ler und RDK Fan seit 1984 (Pause zw. 1988-2017)
CPU68k,CPU68000,4xROA64,6xIOE,6xGDP,GDPHS,8xSBC2/3,HEXIO,6xKEY,FLO2,PROMER,CENT,SER,SOUND,CAS,4xBUS2,3xPOW5V,2xTAST..und neuerdings einen Arduino mit auf dem BUS. Und eine selbstgebastelte MEM960k. UHR, IDE und COL256 noch nicht gebastelt.

NKC - OpenSource since 1983

Beiträge: 124 | Mitglied seit: Januar 2011 | IP-Adresse: nicht gespeichert
m.haardt
Fühlt sich wie zu Hause
***
ID # 93


  Erstellt am 18. Dezember 2019 19:11 (#24)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Genial einfach! :-) Oder einfach genial? :-)

Hast Du inzwischen BANKEN wieder getrennt? Das könnte sonst Konflikte geben.

Wie ist es bus BUSRQ/BUSAK? Und mit INT?

Michael

Beiträge: 401 | Mitglied seit: April 2008 | IP-Adresse: nicht gespeichert
smed
Kennt sich schon aus
**
ID # 114


  Erstellt am 18. Dezember 2019 20:34 (#25)  |  Zitat Zitat   PN PN   E-Mail E-Mail
nee, nee, genial sieht anders aus.

Ich habe keine BANKBOOT im NKC somit nicht weiter mit beschaeftigt.

BUSRQ and BUSAK wollte ich eigentlich auf der Platine mal zukunftsweisend verkabeln, habs dann aber doch vergessen, ich habe die aller-aller erste Version der 68008 CPU Karte die ist eh noch nicht DMA faehig. Ich habe zwar auch eine 'rote' neuere Version aber die einfachste Version von DMA hat damit nicht geklappt: die CPU tri-stated zwar Adress- und Datenbus und Steuersignale, wacht allerdings nicht wieder auf. Die Loesung mit einem RESET funktioniert fuer meine Zwecke erst mal.

Habe auch mal mit dem HALT Signal experimentiert, um die 68K CPU waehrend des Transfers zu sedieren, allerdings alles wieder verworfen da es per RESET fuer mich zunaechst erst mal ok ist.

Bitte DMA ausknobeln und ins Forum posten ;) !

Eine andere Moeglichkeit ist es Arduino NKC RAM Zugriffe mit der NKC CPU so zu verzahnen wie es die COL256 macht...

INT habe ich verkabelt. Schaltplan (heisst das nicht heute Stomlaufplan ?) habe ich übrigens keinen, habe in KiCAD gleich eine (einseitige) Platine geroutet, das ist ja quasi der Schaltplan, ich bin so einer der beim Schaltplan zeichnen nicht abstrahieren kann und immer daran denkt wie man die Bauteile auf der Platine platziert und verschaltet, also ist Schaltplan = Platinenlayout, mir als Hobbyist sei's verziehen.

Die KiCad Platine nutzt uebrigens eine andere Arduino Pinbelegung als die die im Forumpost angegeben ist. Die Belegung ist etwas optimiert und ein Port ist zur TAST Emulation reserviert.

Apropos reset: Reset-Button auf der 68K Karte ist mit M1 Leitung auf dem NKC-BUS verbunden, fuer mich als nicht Z80er kein Problem, diese Leitung nutzt der Arduino um einen Reset auszuloesen. Das Z80 system benutzt M1 wenn ich mich richtig erinnere, also andere Leintung aus dem Bus zweckentfremden, oder die Reserve Leitung.

Das Ganze ist bisher eher eine 80% Solution damit ich mein SpaceInvaders entwickeln kann, "fit-for-purpose" wie es heute heisst, aber eben auch nicht mehr.

Gruss
smed

Kicad Projekt: (Warnung: Laie am Werk!)

NewArduinoNKC.zip

Screenshot:


-----------------------
NKC'ler und RDK Fan seit 1984 (Pause zw. 1988-2017)
CPU68k,CPU68000,4xROA64,6xIOE,6xGDP,GDPHS,8xSBC2/3,HEXIO,6xKEY,FLO2,PROMER,CENT,SER,SOUND,CAS,4xBUS2,3xPOW5V,2xTAST..und neuerdings einen Arduino mit auf dem BUS. Und eine selbstgebastelte MEM960k. UHR, IDE und COL256 noch nicht gebastelt.

NKC - OpenSource since 1983

Beiträge: 124 | Mitglied seit: Januar 2011 | IP-Adresse: nicht gespeichert
m.haardt
Fühlt sich wie zu Hause
***
ID # 93


  Erstellt am 18. Dezember 2019 23:50 (#26)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Um es ganz korrekt zu machen, sollten INT, WAIT, NMI, BUSRQ und BANKEN open collector sein. Kann der Arduino das? Ein TTL würde ja auch keinen umbringen.

Mit BUSRQ und BUSAK wäre es wirklich toll.

DMA mit 68k, keine Ahnung. Mein 68k läuft immer noch nicht, weil ich das Teil vor einem Jahr genervt weg schob, nachdem ich tagelang mit dem Logicanalyzer verbrachte und auch Defekte fand, aber nicht DEN Fehler, es dann bei Jens war, der auch diverse Defekte fand, und es bei mir dann aber dennoch nicht laufen wollte. Da ist der Wurm drin.

Daher auch meine Motivation zum Arduino, um das System zu testen. Wie machst Du das, RAM ab Adresse 0, was nach dem Reset ausgeführt wird?

Michael

Beiträge: 401 | Mitglied seit: April 2008 | IP-Adresse: nicht gespeichert
smed
Kennt sich schon aus
**
ID # 114


  Erstellt am 19. Dezember 2019 09:28 (#27)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Der Arduino hat seine GPIO pins tri-stated wenn er nichts macht, ist also fuer den NKC unsichtbar. Ich habe nur /NMI beschaltet damit kann ich problemlos einen Interrupt ausloesen, was ich aber zT nicht weiter nutze. Der Arduino hat interne pull-ups an den GPIO pins die dazugeschaltet werden koennen.

Der Arduino ist ideal um NKC Karten zu testen. So habe ich mein System wieder zu laufen bekommen: Wie beschrieben erst mal vom ArduinoMEGA per Jumpwires zum NKC Bus verbinden. Das ist schnell verkabelt. Im posting sind auch .ino files fuer den Arduino fuer Grundfunktionen am NKC BUS. Das ist alles trivial, die timings sind unkritisch. Der Arduino haengt per USB am PC und wird ueber das Terminal in der Arduino IDE mit Testkomandos gesteuert.

Wenn der Kontakt zum Arduino laeuft, dann nur eine ROA mit EPROM auf den BUS und EPROM auslesen. Wenn das klappt, ein RAM dazu, schreiben und ruecklesen. Dann ROA raus, nur die GDP64 rein und 0x08 auf Adresse $ffffff70 ausgeben - wenns blitzt ist die GDP64 ok.

Alles eher trivial, sodass es sich kaum gelohnt hat alles wirklich schoen zu machen daher ist der Arduino code a little bit like a dogs dinner. Habe auch jede Menge code gehabt um Testmuster auf den NKC BUS zu schreiben, alles sehr praktisch zum Hardware debugging mit LogicAnalyzer.

Die CPU laesst sich natuelich nicht so einfach testen, da kommt dann der LogikAnalyzer zum Einsatz :P Wenn CPU geht:

ROA (64k Ram ab $0) und GDP64 mit auf den BUS und starten (nichts passiert), dann mit Ardunio das Grundprogramm ab Address $0 ins Ram schreiben und einen Reset ausfuehren, und schon laeuft das GP, who needs BANKBOOT? Das neuere GP braucht allerdings mehr als 64k also noch eine zweite ROA dazu oder gleich eine 1MB Karte (siehe zB mein Beitrag auf dem NKC Wiki) statt ROAs.

Auf die gleiche Weise kommen ggf. JADOS, RL-Basic, Pascal/S und natuerlich SpaceInvaders :D dazu. So macht NKC wieder Spass, das leidige Thema booten, laden und speichern ist geloesst :) BTW: Wenn man's an die richtige Stelle im RAM schreibt funktioniert der NKC mit SpaceInvaders auch ohne GP. Also stand-alone, dann noch KEY raus und der NKC ist eine Game Konsole, who needs the PS5?

Gruss
smed

-----------------------
NKC'ler und RDK Fan seit 1984 (Pause zw. 1988-2017)
CPU68k,CPU68000,4xROA64,6xIOE,6xGDP,GDPHS,8xSBC2/3,HEXIO,6xKEY,FLO2,PROMER,CENT,SER,SOUND,CAS,4xBUS2,3xPOW5V,2xTAST..und neuerdings einen Arduino mit auf dem BUS. Und eine selbstgebastelte MEM960k. UHR, IDE und COL256 noch nicht gebastelt.

NKC - OpenSource since 1983

Beiträge: 124 | Mitglied seit: Januar 2011 | IP-Adresse: nicht gespeichert
m.haardt
Fühlt sich wie zu Hause
***
ID # 93


  Erstellt am 19. Dezember 2019 11:01 (#28)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Ah, der kann die GPIO Pins frei konfigurieren. Dann braucht man natürlich kein open collector, weil man den Pin tristate lassen kann, wenn man ihn nicht braucht, und zum Aktivieren als output und low schaltet.

Ich habe mit Arduino noch keine Erfahrung. Der erste Kontakt war erst jüngst, um Software zu konfigurieren und auf ein Board für eine Teleskopsteuerung zu spielen. Beim NKC bekommt man ähnliche Möglichkeiten, wie man sie mit JTAG hätte, nur dass man nicht in die CPU reinschauen kann, dafür aber den Bus frei steuern.

Ich habe mal einen Arduino bestellt. :)

Michael

Beiträge: 401 | Mitglied seit: April 2008 | IP-Adresse: nicht gespeichert
dl1ekm
Kennt sich schon aus
**
ID # 149


  Erstellt am 22. Dezember 2019 11:22 (#29)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Sehr interessant, was ihr hier baut. Wenn ihr alle Optimierungen auf der Karte drauf habt bin ich bei einer Sammelbestellung dabei :-)

Frohes Fest
Marcel

Beiträge: 80 | Mitglied seit: März 2015 | IP-Adresse: nicht gespeichert
m.haardt
Fühlt sich wie zu Hause
***
ID # 93


  Erstellt am 22. Dezember 2019 14:17 (#30)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Ein so großes, aber einseitiges Boards ohne Durchkontaktierung kann man am besten bei platinenbelichter.de machen lassen, denn das werden sicher nur wenige haben wollen und die fertigen ab einer Platine.

Ich liess da mal ein ähnliches Board machen und war mit der Qualität und Verzinnung sehr zufrieden.

In China wird es natürlich billiger, aber dafür muss man genug Stücke machen lassen.

Aber: Lochraster und fix verdrahten geht auch. So viele Leitungen sind das nicht.

Michael

Beiträge: 401 | Mitglied seit: April 2008 | IP-Adresse: nicht gespeichert
m.haardt
Fühlt sich wie zu Hause
***
ID # 93


  Erstellt am 18. Januar 2020 23:44 (#31)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Ich fing vorhin mit dem Aufbau an und stellte fest, dass der Arduino eigentlich falsch herum auf dem Board sitzt: Die Seite mit den Versorgungsspannungen hat auf der BUS einen Platinenhalter, der hier mit dem Powerstecker vom Arduino kollidiert. Wenn der NKC in ein Gehäuse eingebaut wird, dann ist die Seite darum hinten und damit entgegengesetzt zur Seite mit den Anschlüssen. Darum ist die Beschriftung der BUS auch so, dass man sie von vorne lesen kann.

Michael

Beiträge: 401 | Mitglied seit: April 2008 | IP-Adresse: nicht gespeichert
m.haardt
Fühlt sich wie zu Hause
***
ID # 93


  Erstellt am 19. Januar 2020 14:52 (#32)  |  Zitat Zitat   PN PN   E-Mail E-Mail
@smed Du schriebst, dass man die CPU nicht so einfach testen kann. Tatsächlich geht das doch:

https://create.arduino.cc/projecthub/michalin70/retro-computing-with-arduino-mega-and-a-z80-processor-86c79c

Damit wäre es möglich, nur den Arduino und die CPU auf dem Bus zu haben und sie einzeln zu testen. Man muss nur die Steuerleitungen auf Pads legen, die Interrupts erzeugen können.

Michael

Michael

Beiträge: 401 | Mitglied seit: April 2008 | IP-Adresse: nicht gespeichert
smed
Kennt sich schon aus
**
ID # 114


  Erstellt am 19. Januar 2020 18:55 (#33)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Hi,
der Anordnung des Arduino auf der Platine ist so gewaehlt damit sich eine moeglichste einfache Leiterbahnfuehrung fuer ein single layer board / gefaedelt ergibt. Die jetzig Anordung ist besser als alle anderen Varianten.

Stimmt die Powerbuchse des Arduino kollidiert mit dem NKC Platienenhalter, hab' schon notiert den Arduino um eine paar mm nach oben zu versetzen. Die Steckerleiste fuer die TAST-Emulation, die ein Flachbandkabel zur KEY braucht, ist auch nicht ganz perfekt mit der Steckerleiste der KEY ausgerichtet, das ist aber eher eine Kleinigkeit.

Der Link zum Thema 'Arduino emuliert Z80 Peripherie' ist sehr interessant!!! Ich hatte auch mal darueber nachgedacht aber ohne Versuche wieder verworfen da die GPIO ports sich nicht sehr schnell abfragen lassen. Im Video wird der Takt fuer den Z80 auch vom Arduino erzeugt (3:58 "Ze hole zing ranns relaiabli aet 100 kHz ;) "), dann reichts natuerlich doch. Beim Z80 scheint das zu funktionieren, per datasheet braucht der 68008/00 allerdings einen minimum Takt im Mhz-Bereich, aber ein Versuch waer's sicherlich wert.

Gruss
smed

-----------------------
NKC'ler und RDK Fan seit 1984 (Pause zw. 1988-2017)
CPU68k,CPU68000,4xROA64,6xIOE,6xGDP,GDPHS,8xSBC2/3,HEXIO,6xKEY,FLO2,PROMER,CENT,SER,SOUND,CAS,4xBUS2,3xPOW5V,2xTAST..und neuerdings einen Arduino mit auf dem BUS. Und eine selbstgebastelte MEM960k. UHR, IDE und COL256 noch nicht gebastelt.

NKC - OpenSource since 1983

Beiträge: 124 | Mitglied seit: Januar 2011 | IP-Adresse: nicht gespeichert
m.haardt
Fühlt sich wie zu Hause
***
ID # 93


  Erstellt am 19. Januar 2020 19:26 (#34)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Ach, darum hast Du die Löt- und Bestückungsseite getauscht! Ich werde den Arduino bei mir anders herum einbauen, damit der USB-Port vorne ist.

Die Änderungen für Interrupts wären eher gering:

Aktuell:
MREQ_ = 30, IORQ_ = 32, WR_ = 33, RD_ = 34

Besser:
MREQ_ = 19, IORQ_ = 20, WR_ = 3, RD_ = 2

Zusätzlich:
BUSRQ_ = 30, BUSAK_ = 32, INT = 33

Von ein paar Drahtbrücken stirbt keiner. ;-)

Du hast Recht, der Code setzt 100 kHz als Taktfrequenz. Etwas mehr sollte gehen, aber 4 MHz sehe ich nicht. Ok, also sollte man Clock wohl auch verdrahten, idealerweise aber kurz.

Beim 68008 kann man Waitstates setzen, um den Speicherzugriff auszubremsen.

Michael

Beiträge: 401 | Mitglied seit: April 2008 | IP-Adresse: nicht gespeichert
smed
Kennt sich schon aus
**
ID # 114


  Erstellt am 19. Januar 2020 20:20 (#35)  |  Zitat Zitat   PN PN   E-Mail E-Mail
sorry, ich kann deine Nummerierung nicht nachvollziehen, hier noch mal eine Grafik von der aktuellen Konfiguration:



MREQ_ = 46, IORQ_ = 44, WR_ = 43, RD_ = 42

Gruss
smed

PS Die Karte mit aufgestecktem Arduino ist ziemlich 'dick', je nach Nachbarkarte kann es Probleme geben !

-----------------------
NKC'ler und RDK Fan seit 1984 (Pause zw. 1988-2017)
CPU68k,CPU68000,4xROA64,6xIOE,6xGDP,GDPHS,8xSBC2/3,HEXIO,6xKEY,FLO2,PROMER,CENT,SER,SOUND,CAS,4xBUS2,3xPOW5V,2xTAST..und neuerdings einen Arduino mit auf dem BUS. Und eine selbstgebastelte MEM960k. UHR, IDE und COL256 noch nicht gebastelt.

NKC - OpenSource since 1983

Beiträge: 124 | Mitglied seit: Januar 2011 | IP-Adresse: nicht gespeichert
m.haardt
Fühlt sich wie zu Hause
***
ID # 93


  Erstellt am 19. Januar 2020 20:56 (#36)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Jetzt kann ich's auch nicht mehr nachvollziehen. Danke! :)

Der Vorschlag mit 2,3,19,20 für MREQ_, IORQ_, RD_, WR_ bleibt aber. Die Reihenfolge spielt keine Rolle.

Der ganze Rest kann wie gesagt so bleiben, weil dort keine Interrupts gefragt sind. Als CLK wurde 10 benutzt, was aber mit PORTB kollidieren würde. Alternativ sollte aber auch 45 möglich sein, dann muss HALT_ woanders hin, z.B. auf 41.

Was machst Du da eigentlich mit LA clk?

Die Dicke des Sandwichs fiel mir auch schon auf. Das kollidiert so oder so. Man muss die Karte halt an ein Busende stecken.

Michael

Beiträge: 401 | Mitglied seit: April 2008 | IP-Adresse: nicht gespeichert
smed
Kennt sich schon aus
**
ID # 114


  Erstellt am 19. Januar 2020 21:45 (#37)  |  Zitat Zitat   PN PN   E-Mail E-Mail
> 2,3,19,20 für MREQ_, IORQ_, RD_, WR_
was ist da der Vorteil? :confused:

LA clk ist ein Debugsignal fuer meinen Philips PM3585 :cool: der auf Wunsch den kompletten NKC Busverkehr mitschneidet...wer's braucht...

-----------------------
NKC'ler und RDK Fan seit 1984 (Pause zw. 1988-2017)
CPU68k,CPU68000,4xROA64,6xIOE,6xGDP,GDPHS,8xSBC2/3,HEXIO,6xKEY,FLO2,PROMER,CENT,SER,SOUND,CAS,4xBUS2,3xPOW5V,2xTAST..und neuerdings einen Arduino mit auf dem BUS. Und eine selbstgebastelte MEM960k. UHR, IDE und COL256 noch nicht gebastelt.

NKC - OpenSource since 1983

Beiträge: 124 | Mitglied seit: Januar 2011 | IP-Adresse: nicht gespeichert
m.haardt
Fühlt sich wie zu Hause
***
ID # 93


  Erstellt am 19. Januar 2020 22:09 (#38)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Ich bringe die Arduino Pins ständig durcheinander, denn mal werden Pads und mal Nummern verwendet, und die Nummern sind nicht mal eindeutig. Vergiss die Nummern, die ich sagte, sorry.

Manche Pins können als Interrupt verwendet werden. RD_, WR_, IORQ_ und MREQ_ sollten solche Pins benutzen, wenn man die Karte nicht als Busmaster, sondern als Slave verwenden will.

Ich schreibe wieder Angaben zu Pins, wenn es fertig gelötet und getestet ist.

Michael

Beiträge: 401 | Mitglied seit: April 2008 | IP-Adresse: nicht gespeichert
smed
Kennt sich schon aus
**
ID # 114


  Erstellt am 20. Januar 2020 14:16 (#39)  |  Zitat Zitat   PN PN   E-Mail E-Mail
...ah...jetzt verstehe ichs..Du willst RD_, WR_ etc. per Interrupt mit dem Arduino abfangen, und so den NKC CPU Bus Lese- und Schreibzyklus bedienen, also die Emulations-Loesung.

Die interruptfaehigen Pins am ArduinoMega sind noch frei:
PIN2 - PortE, Bit4
PIN3 - PortE, Bit5
PIN18 - PortD, Bit3
PIN19 - PortD, Bit2
PIN20 - PortD, Bit1
PIN21 - PortD, Bit0

Gruss
smed

-----------------------
NKC'ler und RDK Fan seit 1984 (Pause zw. 1988-2017)
CPU68k,CPU68000,4xROA64,6xIOE,6xGDP,GDPHS,8xSBC2/3,HEXIO,6xKEY,FLO2,PROMER,CENT,SER,SOUND,CAS,4xBUS2,3xPOW5V,2xTAST..und neuerdings einen Arduino mit auf dem BUS. Und eine selbstgebastelte MEM960k. UHR, IDE und COL256 noch nicht gebastelt.

NKC - OpenSource since 1983

Beiträge: 124 | Mitglied seit: Januar 2011 | IP-Adresse: nicht gespeichert
m.haardt
Fühlt sich wie zu Hause
***
ID # 93


  Erstellt am 20. Januar 2020 19:40 (#40)  |  Zitat Zitat   PN PN   E-Mail E-Mail
Port D ist sehr geeignet, weil man dann zwei Leitungen zugleich setzen kann. So ist das Timing definiert und so geht es auch schneller.

Ungetestet sähe ein Codefragment für ein OUT als Busmaster so aus:

ADDR_L = port;
DATA_DIR = OUTPUT_DIR;
DATA = val;
delayMicroseconds(1); /* 1 T */
PORTD = (1<<MREQ_) | (0<<IORQ_) | (1<<RD_) | (0<<WR_);
delayMicroseconds(1); /* 1.5 T */
PORTD = (1<<MREQ_) | (1<<IORQ_) | (1<<RD_) | (1<<WR_);
delayMicroseconds(1); /* 0.5 T */
DATA_DIR = INPUT_DIR;

Ein Beispiel für den Betrieb als Slave ist auf der Webseite.

Der Arduino kann kürzer als 1 us warten, aber das ist dann nicht mehr portabel. Wenn ich es aufgebaut habe, schaue ich mal, wie es am Logic Analyzer aussieht.

Mein erstes Ziel ist, die IOE anzusprechen.

Michael

Beiträge: 401 | Mitglied seit: April 2008 | IP-Adresse: nicht gespeichert



| NDR Computer | Boardregeln


Tritanium Bulletin Board 1.6
© 2010–2016 Tritanium Scripts


Seite in 8,983437 Sekunden erstellt
17 Dateien verarbeitet
gzip Komprimierung ausgeschaltet
1627,48 KiB Speichernutzung