Hallo Besucher, der Thread wurde 12k mal aufgerufen und enthält 84 Antworten

letzter Beitrag von cbmhardware am

Arduino am Userport

  • Der Entwickler hasst anscheinend Fotos. :D Ist es denn so schwer, mal ganz zu Anfang ein Foto von dem Board zu zeigen, so dass man auf einen Blick sieht, welche Schnittstellen das hat. Und was für ein Prozessor drauf ist. Und ob es SMD oder THT ist.

    Zu schwierig "xlink" in die F64-Suche einzugeben, dann gibt's auch Bilder! ;-)
    Projektvorstellung: xlink -- Datentransfer PC <> C64 über usb/parport für x-dev und mehr

  • Zu schwierig "xlink" in die F64-Suche einzugeben, dann gibt's auch Bilder!

    Naja, ich dachte eigentlich, dass man auf der Projektseite alles finden sollte. Wozu noch weiter suchen? ;)
    Danke für den Link. Da sieht man dann gleich, worum es geht.

  • Ich habe gerade noch mal die Doku auf der Projektseite quergelesen.


    Das sieht ziemlich kompiziert aus. Da ist so ziemlich alles dabei, was man unter Windows nicht gerne macht - DLLs in Systemverzeichnisse kopieren,
    Firmwaredownload mit Java-Tools, von denen ich noch nicht gehört habe. Dann noch C64-Kernel patchen usw. ;(


    Gibt es Erfahrungsberichte? Hat das mal jemand erfolgreich nachgebaut und in Betrieb genommen? ;)

  • Es gibt bereits schon nette Adapterplatinen:
    rover.ebay.com/rover/0/0/0?mpr…Fulk%2Fitm%2F113479573427

    Das wäre schon mal ein Anfang. Aber nicht für $25 + Versand aus Kanada. So ein Adapter ist in KiCAD schnell gemacht und 10 Stück für 8 Euro in China bestellt.

  • Gibt es Erfahrungsberichte? Hat das mal jemand erfolgreich nachgebaut und in Betrieb genommen?

    Henning hatte das Xlink fast zur gleichen Zeit herausgebracht, wie wir unser Servant64 auf Arduino Nano-Basis.
    Ich hatte es erfolgreich in Betrieb gehabt und fand es super. In der letzten Zeit aber nichts mehr mit gemacht.
    @Freak hatte dafür sogar eine Platine auf SMD-Basis gebaut. Ein feines Teil.

  • Henning hatte das Xlink fast zur gleichen Zeit herausgebracht, wie wir unser Servant64 auf Arduino Nano-Basis.

    Lauter spannende Projekte. 8o
    Das Servant64 kannte ich auch nicht. Das ist aber schon eher nach meinem Geschmack.


    Was gibt es denn an Softwareunterstützung dafür?

  • Ich lese gerade, dass das Servant64 Projekt eingestellt wurde. ;(
    Aber es lief doch schon was. Gab es da nichts verwertbares?


    Was ist mit den Hardware-Design-Unterlagen?

  • Entschuldigt bitte, wenn ich zwischen diesem und den Servant64-Thread etwas hin- und her springe. Aber beim Schreiben meines Posts im anderen Thread ist mir gerade eine (geniale :D:whistling: ) Idee gekommen, die besser in diesen Thread hier passt. Weil es ein alternativer Ansatz ist.


    Ich habe darüber nachgedacht, in wie weit man die Software für den TapecartFlasher für dieses Projekt verwenden könnte. Der TapecartFlasher macht ja PC- und Arduino-seitig etwas sehr Ähnliches. Es werden Files (bis zum 2 MByte) vom PC über den Arduino in das Tapecart-Modul geschrieben (und auch wieder gelesen).
    Man könnte also für die Kommunikation die Windows- und Arduino-Software fast komplett übernehmen. Die Arduino-Software implementiert eine API, die man leicht anpassen könnte und die genauso gut auch überT TCP/IP (Ethernet/WLAN) funktionieren würde.
    Es müsste nur die Kommunikation zum Tapecart-Modul gegen eine Kommunikation zum C64 ausgetauscht werden.


    Soweit alles nichts Neues. Aber dann habe ich mir überlegt, dass das Tapecart-Modul ja über den Kassettenport kommuniziert. Also wäre es doch denkbar, einen Servant64 nicht am Userport sondern auch am Kassettenport zu betreiben. Das hätte den Vorteil, dass der Userport frei bleibt. Und man hat die 5V, um das Modul zu betreiben. Die Kommunikation zum C64 wäre dann seriell.
    C64-Seitige könnte man für die Kommunikation auf auf vorhanden Tapecart-Routinen zurückgreifen.


    Beim TapecartFlasher schaffe ich 2 MByte in 6-7 Minuten. Ein 32 KByte Programm wäre dann in 6-7 Sekunden übertragen.


    EDIT: Am Kassettenport könnte man über den Tapecart-Loader sogar Programme mit LOAD laden, ohne dass der C64 moduifiziert werden muss und ohne dass man vorher eine andere Software laden muss. Dafür müsste der Arduino sich einfach nur wie ein Tapecart-Modul verhalten.

  • C64-Seitige könnte man für die Kommunikation auf auf vorhanden Tapecart-Routinen zurückgreifen.


    Beim TapecartFlasher schaffe ich 2 MByte in 6-7 Minuten. Ein 32 KByte Programm wäre dann in 6-7 Sekunden übertragen.

    Im Prinzip wäre es keine schlechte Idee, eine eigene Routine per LOAD zu nutzen. Mit einem RS232<->USB Dongle hätte man dann ausreichend Baudrate und eine einfache Übertragungsroutine könnte in den Tape-Puffer passen. Dann kann man in den Speicher darüber sein Programm vom PC laden.
    Gibt es einen Source zum Herausladen einer eigenen Routine aus einem angeschlossenen µC ? - Meine Kenntnisse zu den Loadern sind da nicht ausreichend.

  • Mit einem RS232<->USB Dongle hätte man dann ausreichend Baudrate und eine einfache Übertragungsroutine könnte in den Tape-Puffer passen.

    RS232<->USB-Dongle ist ja beim Arduino schon mit drauf.


    Das müsste wohl mehrstufig laufen. Über LOAD wird erstmal nur per Tape-Emulation der Tapecard-Loader geladen. Dieser Loader ermöglicht erst mal nur das schnelle Nachladen von weiteren Programmen über das Tapecart-Protokoll. Dann könnte aber die eigentliche Server-Software geladen und gestartet werden.


    Das Laden des Tapecard-Loaders dauert allerdings einen Moment. Das wäre also nur eine Hilfslösung, wenn man das C64-Rom nicht modifieren will oder kann.
    Ein modifiziertes C64-Rom ist auf Dauer die komfortablere Lösung.


    Übrigens, wenn man statt einem Arduino Uno/Nano einen Leonardo-kompatiblen Pro Micro nimmt, läuft die Kommunikation zum PC noch mal deutlich schneller. Das haben wir beim TapecartFlasher schon festgestellt. Beim Pro Micro entfällt die USB/Seriell-Wandlung, weil der Mega32U4 einen integrierten USB-Port hat.

  • Ein modifiziertes C64-Rom ist auf Dauer die komfortablere Lösung.


    Tja, dann kann man auch gleich den parallelen Port (Userport) verwenden. Dann geht richtig die Post ab. Die vorher schon mal erwähnte RS232-Platine finde ich da nicht so prickelnd. Mit den nativen Baudraten des C64 wird das bestenfalls Schlafwagentempo.

  • Mit den nativen Baudraten des C64 wird das bestenfalls Schlafwagentempo.

    Nein, die Kommunikation würde nicht über die RS232-Schnittstelle des C64 laufen, sondern über 2 Leitungen des Kassettenports mit (grob überschlagen) 40-50 KBit/s.
    Am Userport würde gar nichts angeschlossen. Der bliebe dann komplett frei.


    EDIT: Übrigens hat die Lösung am Kassettenport einen klaren Nachteil gegenüber der Userport-Lösung. Sie ist nicht interruptfähig. Also für das was @frickr damit vor hat (Hintergrunddatentransfer) wäre das dann weniger geeignet. Man könnte die Leitungen auf dem C64 zwar im Interrupt pollen, aber das würde dann größere Latenzzeiten mit sich bringen.

  • Ich schrieb:

    Die vorher schon mal erwähnte RS232-Platine finde ich da nicht so prickelnd. Mit den nativen Baudraten des C64 wird das bestenfalls Schlafwagentempo.

    Zu dieser Platine: https://www.ebay.de/itm/113479573427?ul_noapp=true

  • Zu dieser Platine: ebay.de/itm/113479573427?ul_noapp=true

    Achso, die machte auch nur serielle Kommunikation. Ich dachte das wäre ein Parallel-Interface.

  • So werde ich es in Zukunft mal versuchen, also erst mal etwas "blabla" zwischen Arduino und C64. Der Arduino bekommt dann ein I²C LCD zur Visualisierung.
    Ist eine abgewandelte Version meiner RS232->Parallel Durchreiche des 1551USB: http://www.cbmhardware.de/show.php?r=10&id=15


    Optional könnte man noch eines der Shift-Register hinzuziehen, um die eine Leitung fürs Festlegen der Richtung zu haben. Also %11111111 oder %00000000 vom C64 shiften.


  • Ich werde parallel dazu mal meinen Tapecart-Ansatz weiterverfolgen. Der Anfangsaufwand ist überschaubar, weil ich erst mal C64-seitig nichts machen muss. Es geht erst mal nur um ein Proof of Concept.


    Ich habe aber bei der Geschwindigkeit noch einen Denkfehler gemacht.
    Die 6-7 Sekunden pro 32 KByte beziehen sich auf den Datentranfer zwischen Arduino und Tapecart-Modul. Der Datentransfer zwischen Arduino und C64 wird deutlich langsamer sein.


    Ich werde erst noch mal ausmessen, wie schnell die Programme vom Tapecart-Modul geladen werden. Vielleicht bin ich dann auch ganz schnell wieder bei der Userport-Lösung. :whistling:


    @cbmhardware: Was hast du denn softwaremässig geplant? Auf der C64-Seite und auf der PC-Seite?

  • Ich werde erst noch mal ausmessen, wie schnell die Programme vom Tapecart-Modul geladen werden. Vielleicht bin ich dann auch ganz schnell wieder bei der Userport-Lösung.

    Da wird von einem statischen Speicher geladen, das ist keine Kommunikation zwischen verschiedenen Rechnern. Dann müsste man z.B. ein 2Mbit E²Prom zum Puffern dazwischen nehmen (z.B. M24M02), um schneller vom toten Stein zu ziehen. Dann könnte der PC das Ding auch mit Baudraten jenseits von 230000 vollpumpen.


    Bisher hatte ich vor sehr langer Zeit in echter Kommunikation mit dem PET damals rund 20kByte/s erreicht: http://www.cbmhardware.de/show.php?r=10&id=12, da könnte aber durchaus mehr gehen.


    Beim Arduino wird es durch den Quarz begrenzt, der nur mit einigen Baudraten wirklich gut funktioniert.

  • Da wird von einem statischen Speicher geladen, das ist keine Kommunikation zwischen verschiedenen Rechnern.

    Das ist aber kein Problem. Wie oben schon geschrieben schreibt der TapecartFlasher vom PC über Arduino Uno/Nano in das Tapecart-Modul 2 MByte in 7 Minuten.
    Bei einem Arduino Pro Micro sogar in nur 4 Minuten.
    Das Schreiben von SD-Karte dauert auch 4 Minuten. Beim Pro Micro spielt die PC-Kommunikation also kaum eine Rolle.
    Für meine Zwecke ist das ausreichend schnell.


    Bisher hatte ich vor sehr langer Zeit in echter Kommunikation mit dem PET damals rund 20kByte/s erreicht:

    Das ist jetzt eine Kommunikation zwischen Arduino und PET - ohne PC nehme ich an.


    Ich habe gerade noch mal das Laden vom Tapecart-Modul gemessen. 6 Sekunden für 16 KByte. Das wäre halb so schnell wie die Kommunikation zwischen Arduino und Tapecart.
    Das ist schnell genug, dass ich die Idee noch mal weiterverfolgen werde.