Hello, Guest the thread was called1.7k times and contains 34 replays

last post from Diddl at the

C64 als Steuerung

  • Vor einiger Zeit habe ich das Fischertechnik Interface für den C64 in Aktion gesehen.

    All die kleinen Lämpchen, Motoren, Magnete und Pneumatischen Elemente.

    Seit dem möchte ich gerne selbst so etwas ähnliches realisieren.

    Einfach um zwei Hobbies zu kombinieren.


    Im Oktober 21 hat Schroeder im Forum des VzEkC den Wunsch geäußert, seine LGB Modell Eisenbahn (Lehman Garten Bahn) mit einem C64 zu steuern.

    Das war für mich der Anlass, dieses Projekt nun endlich anzugehen.




    Wunsch Vorgaben:

    • automatischer Start eines BASIC Programm nach dem einschalten
    • einfache Verwendung über zusätzliche BASIC Befehle
    • Entkopplung des C64 vor schädlichen Spannungen
    • Erweiterbarkeit / Skalierbarkeit
    • preisgünstig und einfach nachbaubar




    Das Ergebnis ist folgende Hardware:

    • ein C64 Modul
    • eine Reihe von dezentralen IO Karten




    Das C64 Modul:

    • das Modul wird einfach in den Cartridgeport des C64 gesteckt
    • das EPROM enthält den Autostart und die BASIC Befehlserweiterung
    • der Arduino Nano kommuniziert mit den dezentralen IO Board
    • der Arduino Nano wartet auf Befehle vom C64 und führt diese aus
    • die Kommunikation zwischen Arduino und C64 dauert nur wenige µs dank CPLD
    • das Banking des EPROM ist Magic Desk kompatibel, falls jemand eigene Firmware schreiben will



    Die dezentralen IO Board:

    • aus Sicht des C64 gibt es einfach nur 2048 digitale IO die man setzen und Abfragen kann
    • aus Sicht des Arduino gibt es drei Arten von IO Boards: DI Board (digitaler Eingang), DO Board (digitaler Ausgang), I2C Board (wahlweise Ein- oder Ausgang)
    • die DO Boards sind mit simplen 74HC595 realisiert (Schieberegister, SiPo - seriell in, parallel out)
    • die DI Boards sind mit simplen 74HC165 realisiert (Schieberegister, PiSo - parallel in, seriell out)
    • die DIO Boards sind mit MCP23017 bestückt (IO Expander)
    • am Arduino gibt es drei Anschlüsse für IO Boards: DI, DO, I2C
    • die Boards gleicher Bauart werden wie eine Kette hintereinander geschaltet.
    • am Arduino kann auch die serielle Schnittstelle verwendet werden vom C64 (in der Firmware noch nicht unterstützt)






    Den dezentralen IO können andere Boards vorgeschaltet werden, wenn man andere Spannungen hat wie 5V TTL.

    Also für DO Pins eignen sich Relais, Transistoren, FET oder SSR und für DI Pins zum Beispiel Spannungsteiler oder Optokoppler.


    Beim Ali gibt es zahlreiche kleine Boards um kleines Geld:






    Auf meiner Wiki ist die C64 SPS dokumentiert, die Doku wird auch noch laufend verbessert:

    https://oe7twj.at/index.php?title=C64_SPS

  • Ich finde das Spitze!


    Was ich am C64 viel mehr mag als am Raspberry, ist, dass der C64 ein stabiles System ist.

    Klingt jetzt zwar vielleicht blöd, aber wenn ein Projekt fertig ist, dann soll es auch fertig bleiben.

    Beim Raspberry kommen ständig OS-Updates rein, Bibliotheken werden veraltet, etc.

    Was ich da vor 5 Jahren gemacht habe, lässt sich heute ohne massiven Mehraufwand von Grund auf oft garnicht mehr neu aufsetzen.


    Module wie das C64-SPS machen es viel einfacher, auch den C64 als Basis für Regel-, Mess- und Steuerprojekte zu nutzen :-)


    Bloß etwas mehr Platz braucht der 64er noch :-D

  • Bloß etwas mehr Platz braucht der 64er noch :-D

    :D

    Ja stimmt, das ist wohl nur etwas für Menschen, die den C64 lieben.




    Module wie das C64-SPS machen es viel einfacher, auch den C64 als Basis für Regel-, Mess- und Steuerprojekte zu nutzen :-)

    Ja und vor allem gibt es schon wirklich viele, die etwas im BASIC des C64 programmieren können.


    Hingegen gibt es nur sehr wenige, die einen Arduino oder gar einen RasPI programmieren können.




    Man kann den C64 ja auch nur als Visualisierung benutzen.

    Um Daten darzustellen.

    Zahlenwerte oder Grafiken, oder gar visuelle Darstellung von Zuständen.

  • Man kann den C64 ja auch nur als Visualisierung benutzen.

    Um Daten darzustellen.

    Zahlenwerte oder Grafiken, oder gar visuelle Darstellung von Zuständen.

    Das würd ich auch sehr spannend finden, weil daran hab ich auch schon gedacht.

    Hab aber noch nie nach Beispielcode gesucht, um einfach Charten zu können


    Kennst du da was?

  • Kennst du da was?

    Es gibt da einiges an Code Snippets um Hires Grafik zu unterstützen.

    Da könnte man sich sicher was zusammen basteln um Kuchen, Balken und ähnliches zu visualisieren.


    Ich mag das nicht aktiv unterstützen, aber wenn jemand den Maschinencode zusammenstellt, dann baue ich das gerne ein als BASIC Befehle.


    Balken gehen ja sogar ganz einfach mit dem bestehenden Charset.

    Sowohl vertikal als auch horizontal.


    Wahrscheinlich ist sogar das normale v2 BASIC schnell genug um Balken Grafik zu machen.


    ====


    Im Falle der Eisenbahnanlage könnte man Weichenstellungen darstellen oder sogar visualisieren wo sich die Züge gerade befinden.

  • Nur wenn du ein OS nutzt. Du kannst den auch direkt programmieren, genau wie einen C64. Dann hast du das Problem nicht.

  • An Balken hatte ich garnicht gedacht, weil ich hatte bei Charts in erster Linie Temperaturen, Luftfeuchte, etc im Kopf.

    Balken sind bestimmt am einfachsten lösbar.


    Gut zu wissen, das mit den Basic Befehlen für Maschinencode.

    Ich bin zwar gerade dick mit 3D-Zeichnen beschäftigt, aber wenn ich wieder Zeit für Software hab, komme ich evtl auf dich zu :-)


    Ad Eisenbahnanlage: meine Kleinbahn liegt seit Jahren in Schachteln am Dachboden... Mal sehen, ob ich jemals wieder die Zeit dafür finde


    Nur wenn du ein OS nutzt. Du kannst den auch direkt programmieren, genau wie einen C64. Dann hast du das Problem nicht.

    Ja, so wie BMC64 oder Pi1541 das machen. Dann hat man aber keinerlei Treiberunterstützung (zB WLAN, etc), oder? (ohne hier den Thread entführen zu wollen)

  • Du kannst den auch direkt programmieren, genau wie einen C64. Dann hast du das Problem nicht.

    Auch dann wirst du ohne ein "Bare Metal Framework" kaum auskommen, wenn du nicht wirklich jedes Bit von Hand programmieren willst. Und schon bist du wieder gleich weit.

    "Wenn du überredet, ermahnt, unter Druck gesetzt, belogen, durch Anreize gelockt, gezwungen, gemobbt, bloßgestellt, beschuldigt, bedroht, bestraft und kriminalisiert werden musst. Wenn all dies als notwendig erachtet wird, um deine Zustimmung zu erlangen, dann kannst du absolut sicher sein, dass das, was angepriesen wird, nicht zu deinem Besten ist." - Quelle unbekannt.


    "Steve Jobs hat User hervorgebracht, Jack Tramiel Experten." - Quelle unbekannt.

    "Mein Herr, ich teile Ihre Meinung nicht, aber ich würde mein Leben dafür einsetzen, dass Sie sie äußern dürfen." - Voltaire.

    "Diskutiere nie mit einem Idioten - er zieht dich auf sein Niveau hinunter und schlägt dich dort mit seiner Erfahrung!" - Volksweisheit.


  • Bloß etwas mehr Platz braucht der 64er noch

    Auch nicht wirklich. Ist ja eigentlich nur die Tastatur, die die Außenmaße vorgibt. Wie man einen Core-C64 schrumpfen kann, wurde ja hier schon gezeigt. Für einen Raspi braucht man - zumindest für die Entwicklung/Programmierung - mehr Platz. Oder wenigstens ähnlich viel, wenn man nur eine Tastatur direkt anschließt. :)


    Im Betrieb sieht es dann vielleicht anders aus. Ein C64 hat da aber den Vorteil, dass man direkt ohne Mehraufwand Eingaben machen und in die Programmierung eingreifen kann. Die Tastatur bietet auch noch über 60 Eingabemöglichkeiten für Steuerungsaufgaben und das alles ohne (zusätzliche) Kabelei. Also ich seh da nur Vorteile. Bald hol ich mir so ein Teil. :D

  • Also ich seh da nur Vorteile. Bald hol ich mir so ein Teil. :D

    Dem steht nichts im Wege.


    Die Rev.1 läuft, die Platine hat aber noch kleine "Problemchen".


    Die Rev.2 ist auf dem Weg zu mir, sollte eigentlich morgen da sein.

    Wenn die da ist, bau ich sie auf und teste alles.

    So wie alles läuft werde ich die Gerber und sonstigen Dateien in der Wiki posten.



    Hier sind ein paar Screenshots zur Modul Software:


  • Wieder ein schönes und interessantes Projekt. So wie ich das sehe, schlaft ihr nie :pumpkin:, und das obwohl ich schon die 26 Stunden pro Tag nutze.

    Konfuzius sagt…Hüte dich vor Männern, deren Bauch beim Lachen nicht wackelt.

    Es ist keine Schande, nichts zu wissen, wohl aber, nichts lernen zu wollen.


    Wenn ich tot bin, dann begrabt mich mit dem Gesicht nach unten! Dann kann mich die Welt am Arsch lecken. ** Der Joker **

    --------------------------------------------------------------------------------------------------------------------------

  • Du kannst den auch direkt programmieren, genau wie einen C64. Dann hast du das Problem nicht.

    Auch dann wirst du ohne ein "Bare Metal Framework" kaum auskommen, wenn du nicht wirklich jedes Bit von Hand programmieren willst. Und schon bist du wieder gleich weit.

    Natürlich kommst du in dem Anwendungsfall hier ohne ein Bare Metal Framework aus. Es geht um das Ansteuern von ein paar GPIOs. Das ist vom Codeumfang her nur wenig mehr als auf dem C64.


    Auch kannst du ein Framework aus verschiedensten Gründen nicht mit einer OS Distribution vergleichen. Die Probleme, die sich aus alten Versionen ergeben, sind in beiden Fällen absolut unterschiedlich und beim Framework fallen sie eigentlich selten ins Gewicht. Aber wie gesagt: für den Fall hier wäre das sowieso mit Kanonen auf Spatzen geschossen.


    Davon abgesehen finde ich die Idee, so etwas mit dem C64 zu machen, schon sehr cool und ich bin gespannt, wie es in dem Projekt weiter geht.

  • Es gibt da einiges an Code Snippets um Hires Grafik zu unterstützen.

    Da könnte man sich sicher was zusammen basteln um Kuchen, Balken und ähnliches zu visualisieren.


    Ich mag das nicht aktiv unterstützen, aber wenn jemand den Maschinencode zusammenstellt, dann baue ich das gerne ein als BASIC Befehle.

    Vielleicht ist ja die Hires-Grafikerweiterung GraExt etwas passendes. Braucht mit allen Befehlen zwar auch nur 13 Pages (ab $c000). Ich (oder jeder andere auch) kann freilich auch eine angepasste Version bauen, die nur den notwendigen Funktionsumfang hat - vielleicht ergibt sich ja noch das eine oder andere Feature, das es noch zu ergänzen gäbe, dass ich gerne nachziehen kann.
    Ein Tortendiagramm und einen 3-D Balkenfeld hab ich dazu mal erstellt, was aber vermutlich nicht in einem Stadium der Verwendung ist, wie man es von Excel gewohnt sein mag. ;)