Hallo Besucher, der Thread wurde 5,3k mal aufgerufen und enthält 24 Antworten

letzter Beitrag von Spider1982 am

Arduino Kernalswitch+

  • Da ein paar Anfagen wegen dem Projekt kamen, hier das ganze Komplett.

    (Sollte der Tread hier falsch sein bitte verschieben, oder löschen)


    In einem meiner C64 (Assy 250407) habe ich defekte/fehlende ROM's durch ein ReProm ersetzt.

    Feine Sache das Ding, aber auch wenn es sich um einen alten 64er handelt, und das Gehäuse

    nicht mehr so schön ist, wollte ich keine Löcher für Schalter oder Reset bohren.


    Also hab ich mir selber etwas gebaut!


    Ich hab noch ein paar Arduino Nano hier liegen, leicht zu programmieren, und auch nicht teuer.


    Nun hab ich einen Arduino Kernalswitch+!


    Die Bedienung ist recht einfach:


    Restore-F1 = Kernal 1 + Reset

    Restore-F3 = Kernal 2 + Reset

    Restore-F5 = Kernal 3 + Reset

    Restore-F7 = Kernal 4 + Reset

    Restore (3 sec.) = Reset


    Der Arduino Kernalswitch+ eignet sich natürlich nicht nur für das Reprom, auch andere

    Kernel-Adapterplatinen lassen sich anschliessen.


    Später will ich über diese Platine noch LED-Stripes steuern, und was sonst noch anfällt.

    Dafür sind auf der Platine noch weitere Anschlüsse (J4) vorhanden.


    Der Einbau ist ein wenig fummelig aber alles passt, auch ein C64C Gehäuse lässt sich

    problemlos schliessen.


    Die Platine eignet sich NICHT für Assy 250469, der Platz reicht ohne Adapter nicht aus.


    Im Anhang einge Bilder und das Projekt, die Platine hat übrigens einen kleinen "Fehler",

    deshalb musste ich eine Lötzinnbrücke setzen.

    Das ist aber erst für spätere Erweiterungen wichtig, mit der aktuellen Software ist diese

    Brücke nicht erforderlich.


    pcb.zip


    Der Arduino Sketch (ino) ist auch in der Zip-Datei, aber es wird noch eine weitere Library

    benötigt. (EasyButton)

    Da ich nicht weiss wie das Lizensrechtlich aussieht habe ich die Library nicht im Archiv!


    Fragen, und auch weitere Ideen sind gerne gesehen.


    Mfg Jood


  • Schaut sehr interessant aus. Bin immer für sowas zu haben :thumbsup:


    Habe auch noch ein Starterset hier liegen, ausser Led blinken lassen noch nicht viel gemacht.


    Dieses Jahr steht viel auf meine Arbeitsliste.


    Hoffe ab März geht's mir wieder besser das ich meine Projekte in Angriff nehmen kann.

    „Vielen Dank für diese Geschichte...Ich habe sie in meinem Dorf weiter erzählt...Die Frauen wurden fruchtbarer,das Getreide verdoppelte sich und aus dem Dorfbrunnen floss Wein statt Wasser.Mein Dorf ist ihnen auf ewige Zeit dankbar .

  • Kleines Update...


    Langsam wird es, die Umschaltung der Kernal funktioniert einwandfrei, das Display auch,

    wird auf den Bildern nur überstraht.


    LED-Stripe + Display macht sowieso keinen Sinn!


    Neu hinzugekommen ist der Led-Stripe (WS2812B), aber es sollte jeder funktionieren der

    von FastLED unterstützt wird.


    wie bisher:


    Restore-F1 = Kernal 1 + Reset

    Restore-F3 = Kernal 2 + Reset

    Restore-F5 = Kernal 3 + Reset

    Restore-F7 = Kernal 4 + Reset

    Restore (3 sec.) = Reset


    Ein Doubleclick auf Restore schaltet nun die Farben um, momentan Green, Red, Blue und

    Off. Aber das lässt sich natürlich anpassen.


    Achja, die Farben schalten nicht einfach um, sondern werden gefadet.




    Natürlich soll das Ganze dann in ein transparentes Gehäuse, auf den Bildern ist nur meine

    Bastelkiste.


    Dann hab ich noch die Schaltung überarbeitet, A14, A13 und Reset haben jetzt OC-Buffer,

    der Analogport ist nicht gebuffert.

    Für die eine spätere Erweiterung ist noch ein Port für Assy 250469 vorgesehen, da werde

    ich bei Gelegenheit noch eine Adapterplatine bauen.


    Ausserdem ist noch ein (geschalteter) Anschluss für die Power-LED vorhanden, sonst kann

    das LED-Kabel zu kurz sein.


    Die neue Platine werde ich wohl Anfang Februar bestellen, sollte dann Ende Februar kommen.

    Ich hoffe das ist die Final-Version, nicht das ich noch Fehler finde, oder neue Ideen kommen.



    Mfg Jood

  • Die Namen der Betriebsysteme gibt's du vorher in den Sketch ein ?


    Kann man das auch in einer Zeile machen, so das nur angezeigt wird welches System man gerade nutz. Dann könnte man evtl.noch andere Informationen im Display anzeigen .


    Bin in Arduino noch nicht so ganz fit.

    „Vielen Dank für diese Geschichte...Ich habe sie in meinem Dorf weiter erzählt...Die Frauen wurden fruchtbarer,das Getreide verdoppelte sich und aus dem Dorfbrunnen floss Wein statt Wasser.Mein Dorf ist ihnen auf ewige Zeit dankbar .

  • Ist auch mein erstes Arduino Projekt, hab die Dinger schon ne Weile rumliegen

    und wollte immer schon was damit machen.


    Ja, den Namen des Betriebssystems gebe ich im Sketch an, allerdings gehen da

    natürlich auch andere Sachen.

    Die Frage ist nur was, ich hatte schon überlegt einen Temperatursensor über

    I2C anzuschliessen, oder die 5V über die analogen Eingänge zu messen.


    Eine Echtzeituhr wäre auch möglich... Nur was macht Sinn ?

    Mfg Jood

  • Update,


    Die Rev.3 Platinen sind bestellt, nun muss ich auf die Lieferung warten.

    Heute hatte ich ein wenig Zeit, daher hab ich mal weiter gebastelt und

    schonmal das 250425 in ein Retro Wizard Gehäuse gebaut.


    Weil dort ein Superkernal verbaut ist brauche zwar keinen Kernalswitch,

    aber Beleuchtung macht auf jeden Fall Sinn.



    Mfg Jood


    PS: Die fette rote LED vom Arduino ist auf Rev. 3 natürlich aus!

  • So.. die Rev.3 Platinen sind eingetroffen, und alles funktioniert wie erwartet.


    An der Arduino Software hab ich auch weiter gearbeitet und mir eine Version für das Superkernal gemacht.

    In dieser Version kann, wie bisher, ein Reset über 3 Sek. Restore ausgelöst werden, auch die Umschaltung

    der LED-Strip Farben über Double-Tap auf CBM ist drin geblieben.

    Hier sind, je nach Phantasie, auch wilde Animationen oder Lauflichter denkbar.


    Beim Reset überlege ich noch ob ich einen Hard-Reset (Exrom-Reset) implementiere.


    Neu ist der Aufruf des Superkernels Menü's über einen Double-Tap auf Restore, und der LED Anschluss.


    Der Jumper dient dazu den Arduino in System über einen Programmer zu flashen, hier wird Restore vom

    Arduino getrennt und der C64 bekommt ein Dauer-Reset. Damit sind die ISP-Anschlüsse soweit frei das

    flashen funktioniert und der C64 dabei keine wilden Sachen macht.


    Wichtig!!!


    Der Arduino ISP-Header muss gewinkelt sein, geliefert wird immer eine gerade Stiftleiste, das passt aber

    nicht von der Einbauhöhe.


    Bei der Variante mit der BSU Umschaltplatine (ReProm o.ä) sollte über den ISP geflasht werden um den

    Bootloader zu umgehen.

    Der Arduino braucht sonst zu lange um zu starten, und die Adressleitungen kommen zu spät, das kann

    man zwar umgehen indem ein Reset der C64 beim starten ausgelöst wird, allerdings bekommt man dann

    ein Doppel-Reset beim Kaltstart, und das ist hässlich.

    Verwendet man dagegen den ISP zu flashen und startet ohne Bootloader funktioniert alles reibungslos.


    Zudem lässt sich die Platine auch in ein Assy 250469 einbauen, das ist zwar ganz schön eng, passt aber.

    Lediglich die Bestückung ändert sich ein wenig, der Anschluss für das Keyboard muss gewinkelt sein, und

    nicht gerade wie bei der Variante für die alten Boards. Die Anschlüsse auf der gegenüberliegenden Seite

    dagegen gerade, und nicht gewinkelt. Der Anschluss des Mainboard's erfolgt in dieser Variante über ein

    Kabel (econ connect 20 polig).


    Wichtig sind bei beiden Varianten die Klebefüsse (4-5mm Höhe), beim 250425 werden damit Kratzer auf

    dem CIA vermieden, ausserdem sitzt die Platine besser.

    Beim 250469 dienen die Füsse dazu die Platine in Position zu halten, die Platine ist nur mit einer Schraube

    befestigt, drehen kann sich die Platine zwar nicht, aber ohne Füsse wohl wackeln.


    Der ganze Einbau ist zerstörungsfrei ausgelegt, es muss nicht am Baord gelötet werdem und es sind auch

    keine zusätzlichen Löcher zu bohren.


    Wenn Interesse besteht kann ich die ganze Projekt hier zur Verfügung stellen.


    Mfg Jood


  • Ich würde mich sehr freuen. Hört sich sehr gut an.


    Sind am Arduino noch Ausgänge frei ?

    „Vielen Dank für diese Geschichte...Ich habe sie in meinem Dorf weiter erzählt...Die Frauen wurden fruchtbarer,das Getreide verdoppelte sich und aus dem Dorfbrunnen floss Wein statt Wasser.Mein Dorf ist ihnen auf ewige Zeit dankbar .

  • Einige, hängt natürlich davon ab was alles verbaut wird.


    In der Variante für das Superkernal bleiben A13 und A14 frei, sind Open-Collector Ausgänge die über ein 74LS07 gepuffert sind.

    Damit könnte man z.B. eine Adressumschaltung für ein internes SDIEC realisieren.


    Dann sind noch Port C0-C3, sowie SCL und SDA auf Stiftleiste geführt. Diese Ports sind übrigens auch Analog-Ports, könnten

    also auch für Sensoren usw. verwendet werden. Über SCL und SDA lässt sich z.B ein DIsplay steuern, aber auch 1000 andere Dinge.

    PC0 verwende ich z.Z. für den LED-Strip (WS2812B), hier überlege ich aber ob ich auf APA102C wechsle. dann käme PC1 dazu.

    PC2 und PC3 sind im Moment noch gar nicht belegt. Wenn kein LED-Strip verbaut ist bleiben auch diese Ports frei.


    Mfg Jood

  • Mal eine Frage, könnte man die Betriebssysteme in einer Floppy die man angeschlossen hat auch gleichzeitig mit umschalten ? Vorausgesetzt sie sind in der Floppy mit drin, und evtl. über ein Parallelkabel angeschlossen, evtl. mit ein paar Adern mehr ?


    Nur so ein wilder Gedanke :)

    „Vielen Dank für diese Geschichte...Ich habe sie in meinem Dorf weiter erzählt...Die Frauen wurden fruchtbarer,das Getreide verdoppelte sich und aus dem Dorfbrunnen floss Wein statt Wasser.Mein Dorf ist ihnen auf ewige Zeit dankbar .

  • Im Prinzip hast du 9 frei programmierbare Ein-, Ausgänge.


    3 davon habe ich über einen 74LS07 gepuffert, das sind daher Open Collector Ausgänge,

    diese eignen sich gut zum Umschalten von Adressleitungen und für den Reset.


    Der 74LS07 kann bis zu 30V und bis zu 40mA ab, daher sollte auch ein externer Anschluss

    in der Floppy möglich sein.


    Die anderen 6 Leitungen sind nicht gepuffert, hängen also am Arduino. Somit können diese

    sowohl als Eingang als auch als Ausgang verwendet werden, natürlich auch als PWM-Ausgang

    oder analoger Eingang.


    Die nicht gepufferten Leitungen würde ich nicht nach draussen ziehen, aber im C64 können

    sie auch für Adressumschaltungen verwendet werden. (emulierter Open Collector).


    *Ein "Ja" als Antwort hätte vermutlich auch gereicht...


    Eigentlich wollte ich das Projekt am Wochenende hier hochladen, vorher noch ein bisschen

    Chic machen und so, aber ich pack mal den Schaltplan in den Anhang, dann wird es klarer.


    Mfg Jood


  • Auch wenn es ein wenig länger dauert, ich arbeite fleissig daran.


    Gestern hab ich die LED-Stripes ausgetauscht, vorher hatte ich eine Stripe mit 11 LEDs (WS2812b, 30LEDs/Meter) drin,

    diesen hab ich nun gegen eine Stripe mit 21 LEDs (WS2812b, 60LEDs/Meter) getauscht.

    Allerdings werde ich wohl nur 20 davon verwenden, weil die Tastatur im C64 nicht mittig sitzt, ist die Beleuchtung sonst

    ungleichmäßig.


    Dann hab ich mal grob überschlägig die Stromaufnahme berechnet:


    Arduino ca. 25 mA + 74LS07 ca. 18 mA + 4066 ca. 2,5 mA = 45,5 mA

    LED Stripe angeblich 60mA per LED bei voller Helligkeit. (21 x 60 mA = 1260mA)


    o.O


    Dann hab ich mal gemessen, bei 100% Helligkeit je nach Farbe Rot = 265mA, Lime = 265 mA, DarkSkyBlue = 435 mA.


    Schon besser aber immer noch zu viel, also hab ich im Sketch die maximale Helligkeit der LED's je nach Farbe so begrenzt

    das die Stromaufnahme jeweils unter 100 mA bleibt. Rot = 92,5 mA, Lime = 92,5 mA, DarkSkyBlue = 97,5 mA.

    Interessanterweise fällt das nach Aussen kaum auf, also die Helligkeit leidet kaum.


    Dann hab ich die Platine nochmal überarbeitet, in alten Board (250425, 250407) passt zwar alles problemlos, dafür war die

    Platine auch ausgelegt, aber in einer 250469 passt die Platine zwar, aber es ist arg eng.

    Also hab ich mich nochmal an die Platine gesetzt und gigantische 3,81 mm in der Breite eingespart, nun muss ich die neue

    Platine nur noch bestellen.


    Mfg Jood


  • Auch hier geht es weiter, ich hab am Freitag die neuen Platinen bekommen und auch gleich

    3 Stück gelötet und Samstag eingebaut.


    Die Platinen sehen nicht nur Super aus, es funktioniert auch alles einwandfrei.


    Bild 1 (von links nach rechts)


    1. Rev.3a, unbestückt, das sollte jetzt die Final-Version sein.

    2. Rev.1, das erste Board funktiniert übrigens auch schon, die Ausgänge sind aber nicht gepuffert.

    3. Rev.3, das Vorgänger-Modell, elektrisch absolut baugleich zum Rev.3a, nur etwas grösser.

    4. Rev.3, vorbereitet für den Einbau in ein Assy 250469 oder Ultimate



    Eine Rev.2 gab es auch noch, war aber nicht ganz so wie ich es mir vorgestellt hatte.


    Bild 2 (Eine Rev.3, eingebaut in ein Assy 250407)


    Dient hier in Verbindung mit dem 2364 Kernal-Adapter als Switchless-Umschalter, ferner noch Reset über 3 Sec. Restore drücken)




    Bild 3 (Rev.3a, eingebaut in ein Assy 250425)


    Steuert die LED-Beleuchtung, 3 Sec. Reset auf Restore, Double-Tap auf Restore wechselt ins Superkernal.



    Zudem hab ich noch ein Rev.3a in meinem Assy 250469 verbaut, ausgerüstet mit dem Econ Connect PS20 Stecker (siehe Bild 1).

    Dort gibt es nur den 3 Sec. Reset sowie den Aufruf des Superkernals.


    Einen weiteren Rev.3a habe ich in meinem U64e verbaut, dort gibt es den 3 Sec. Reset, sowie gesteuerte LED-Beleuchtung,

    zum einen verwende ich WS2812b LED-Stripes, zum anderen mag ich den FPGA des U64e nicht versehentlich zerschiessen.


    Wenn keine Probleme mehr auftretn werde ich das Projekt bis Ende März hier veröffentlichen.


    Mfg Jood

  • Wie versprochen, das Projekt...


    Kernelswitch+ Rev.3a


    Ein kleiner Mod für die meisten C64 Modelle, ausprobiert habe ich Assy 250407, Assy 250425, Assy 260469

    und mein Ultimate 64 Elite.


    Mit diesem Mod kann das Kernal umgeschaltet werden, ohne Löcher ins Gehäuse zu bohren, zudem stehen

    weitere Ein-, Ausgänge für andere Anwendungen zur Verfügung (daher das "+" im Namen).


    Möglich wären z.B. eine Adressumschaltung für ein internes SDIEC oder das wechseln der Konfiguration bei

    Einbauten wie dem FPGASID oder dem MixSID.


    Ich verwende z.B. die zusätzlichen Ausgänge für eine LED-Beleuchtung bei meinem 250425 und dem U64.


    Funktionsweise


    Der Kernalswitch wird, je nach C64 Modell, direkt auf den Keyboard-Connector des Mainboards aufgesteckt

    oder über ein 20 poliges Kabel angeschlossen. (Econ Connect PS20, bei Conrad ca. 10€, bei ELV ca. 2,50€)


    Darüber wird der Kernalswitch sowohl versorgt, als auch diverse Tastendrücke erkannt. Allerdings wird nicht

    die komplette Tastatur abgefragt, sondern nur 2 Reihen/5 Spalten.


    Damit können die Tasten F1, F3, F5, F7, Space, Q, 2 und CBM erkannt werden, zusätzlich noch Restore, es

    sollte aber möglich sein weitere Tasten zu erkennen, dazu müsste die Interrupt-Routine überarbeitet werden

    und sicherlich einiges am Timing gemacht werden.


    Ich verwende nur einge Tastenkombinationen: Restore, Restore-F1, Restore-F3, Restore-F5, Restore-F7 und

    CBM.


    Die Schaltung


    Die gesamte Steuerung erfolgt über einen Arduino Nano, die Ausgänge für die Adressumschaltung (A13, A14)

    und der Reset-Ausgang werden über einen 75LS07 gepuffert. (30V, 40mA).


    Ein weiteres Gatter des 74LS07 übernimmt die Ansteuerung der Power-LED, die zusätzlich auf vorhanden ist,

    das erleichtert den Einbau alter Boards (250407, 250425 etc) in das flache C64 Gehäuse.


    Gatter Nr.5 löst einen Reset am C64 aus wenn der PRG-Jumper gesteckt ist.


    Der 4066 dient im wesentlichen dazu die Taste F1, F3, F5 und F7 zu unterdrücken wenn Restore gedrückt ist,

    zudem trennt ein weiteres Gate des 4066 Restore vom Arduino wenn der PRG-Jumper gesteckt ist.


    Der PRG-Jumper dient dazu den Kernalswitch+ über den ISP-Header zu flashen ohne den Arduino entnehmen

    zu müssen.


    Die Software


    Das ist mein allererstes Arduino Projekt, sicherlich gibt es noch Einiges zu verbessern, aber es läuft ganz gut.


    Im Moment habe ich 2 Versionen die sich ein wenig unterscheiden:


    Eine einfache Kernalumschaltung über die Tasten Restore-F1, Restore-F3, Restore-F5 und Restore-F7, ein

    langer Druck auf Restore (3 sek.) löst einen Reset des C64 aus.

    Getestet habe ich das Ganze mit einem 2364 Adapter und mit einen ReProm64, ich konnte keine Probleme

    finden.


    Für die Version mit der Kernalumschaltung sollte der Arduino mittels externem Programmer geflasht werden

    um den Bootloader zu umgehen, sonst startet der Arduino zu langsam und es muss ein zusätzlicher Reset

    beim Starten in den Programmcode eingefügt werden.


    Wenn für diesen externen Programmer ein ISP-Header auf dem Arduino verlötet wird MUSS eine gewinkelte

    Variante verwendet werden (siehe Bilder), andernfalls schliesst der Deckel des flachen C64 nicht mehr richtig!


    Zusätzlich sind noch die Routinen zur Beleuchtungssteuerung enthalten, hier kann über Double-Tap auf CBM

    die Lichtfarbe gewechelt werden.

    Verwendet werden hier WS2812b LED Stripes mit 21 LED's, verwendet werden aber nur 20 davon, ferner ist

    die Helligkeit der LED's begrenzt um die Stromversorgung nicht zu überlasten.


    Die zweite Version ist für die Verwendung mit einen Superkernal gedacht, die 3-Sek. Reset-Funktion ist auch

    hier enthalten, die Kernalumschaltung über Restore F1..F7 entfällt natürlich.


    Dafür wird über einen Double-Tab auf Restore das Superkernal Menü aufgerufen, dazu wird ein Doppel-Reset

    ausgeführt.


    Die Beleuchtungsteuerung bleibt wie oben.



    Bild 1, Assy 250407 mit Kernalswitch+ Rev. 3



    Bild 2, Assy 250425 mit Kernalswitch+ Rev. 3a



    Bild 3, Assy 250469 mit Kernalswitch+ Rev. 3a




    Kernalswitch+ Rev. 3 und Rev. 3a im Vergleich, elektrisch sind beide Revisionen identisch, lediglich die Position

    des LED-Connectors und die Grösse der Platine unterscheiden sich.

    Das war notwendig weil die ältere Version Rev. 3 nur schlecht in ein Assy 250469 passt.



    So, das war nun ein halbes Buch und ich hoffe ich habe nichts vergessen, ich habe alle benötigten Dateien

    incl. der Gerber-Files in den Anhang gepackt.


    Viel Spaß beim Nachbauen.


    Mfg Jood