Basic Programm "Autoload" beim einschalten des C64

  • Ich verstehe ja nicht, warum das 2 Chips sein müssen.

    Nee, muss es den nicht.


    Wir können ja auch bei 8 bit pro Platine bleiben.

    Man kann die Platinen ja in einer Kette aneinander reihen.




    Fehlt noch der Rückkanal. Wenn man das mal anfängt, braucht man da bestimmt mindesten ebensoviele "Schalterchen" als Sensoren.

    Das digitale Input Board funktioniert ähnlich.


    Aber halt umgekehrt.

    Mit einem 74HC165.

  • Guter Service hier ... :)


    ich glaub ich muß erstmal noch den Linux Artikel ganz oben anschaunen, damit ich mal kapiere, wie das eigentlich funktioniert.

    Irgendwie wollte ich sowas früher(TM) immer mal am Userport haben, aber da wäre das wahrscheinlich nur irgendwie "anders" gegangen (Multiplexer, mehrere hintereinander, oder sowas ?) - und so richtig eine fertige Anleitung gab es auch nirgendwo. Bin dann bei 8 Leitungen I/O auf Selbstbaulochraster als Nachbau einer Schulhardware hängengeblieben - womit Eisenbahnfahren nicht so wirklich geht.

    -- 1982 gab es keinen Raspberry Pi , aber Pi und Raspberries

  • Naja das sind einfach Shift Register, also seriell / parallel Wandler.


    74595: SIPO: seriell in, parallel out


    74165: PISO: parallel in, seriell out



    Der Arduino schiebt bit für bit durch alle Shift register und am ende werden die Daten dann übernommen.


    Und beim lesen verkehrt rum, die Daten werden eingelesen und dann bit für bit in den Arduino gelesen.

    • Offizieller Beitrag

    Bei DC Bahnen vermeide ich tunlichst irgendwie irgendwo eine Verbindung zum Potential der Schienen oder generell der Bahnversorgungsspannung zu haben. Die Gleise pole ich ja auch noch um, abhängig von der Einstellung der Lok.

  • Für den C64 soll alles so einfach wie möglich sein.

    Der C64 soll sich nicht darum kümmern müssen, welches IO Board er anspricht.

    Oder was der Pin kann oder nicht kann.

    Er spricht ein bestimmtes IO einfach mit einer Zahl an.


    Aus Sicht des C64 gibt es einfach die Anzahl N an IO Punkten.




    Damit sich jetzt die Nummer für einen bestimmten IO nicht ändert, wenn man das System erweitert, braucht der Arduino eine Möglichkeit die IO Nummer vom C64 klar zu zuordnen.


    Diese Zuordnung muss ja nur einmal passieren.

    EInmal, wenn man die Hardware erweitert oder ändert.


    Normal ist diese Zuordnung im EPROM des Arduino gespeichert, der C64 muss sich darum nicht kümmern.


    Um die Zuordnung im Arduino zu ändern könnte man einen Programmer bemühen oder die Arduino IDE.

    Aber das würde es unnötig verkomplizieren.

    Ich denke es wäre gut das mit einem kleinen BASIC Programm vom C64 aus zu machen.

    Dann ist wirklich alles in der Hand des C64 und es ist alles einheitlich.


    Da der MCP23017 ja 16 IO hat, würde ich das einfach mal als kleinste Einheit verwenden.

    Es werden also immer 16 IO zugeordnet (einer MCP23017 Karte oder zwei 8 Bit Karten).




    Für den C64 sind dann also Port 1 bis 16 zugeordnet. Als nächstes 17 bis 32 und so weiter ...

    Das bedeutet ja nicht, dass man 16 Bit ausbauen muss, aber die IO Nummern für den C64 wären damit reserviert.


    Kann man damit leben aus Sicht von dem der das BASIC Programm schreibt?

  • Hinweis: den /G Anschluss am 74xx595 mit Pull-Up versehen und von einem Port ansteuern und erst freigeben, wenn das erste mal die Ausgänge programmiert wurden. Sonst haste da zufällige Zustände und das ist i.A. nicht gut.

    Das Port für /G muss natürlich beim Einschalten des Rechners hochohmig oder high sein, sonst funktioniert das nicht.


    Ich baue schon seit Jahren solche Erweiterungen mit 595 für kommerzielle Zwecke und da sind zufällig aktive Ausgänge bis die Software dann diese initialisiert sehr unschön. Wichtig ist auch, dass bei einem Reset das /G ansteuernde Port sicher high werden kann.


    Oder falls verfügbar, auch /RESET der CPU mit /SCLR des 595 verbinden.


  • Danke für die Tips!




    Wie störanfällig ist das eigentlich, ich denke da an die möglichen Probleme durch die elektrische Eisenbahn, Funken, Motoren etc.?


    Müssen die Kabel zwischen Arduino und IO Karte geschirmt sein?


    Die Karten werden ja aneinander gereiht, soll man die Signale Clock und /G verstärken (für das folgende IO Board)?

  • Ich würde gerne auf den IO Platinen optionale SMD LED pro Kanal anbringen.

    Die muss man nicht bestücken, es ist optional.

    Damit kann man halt einfach den Status ablesen.



    Nun habe ich da SMD LED in den Größen 1206, 0805 und 0603, ich denke die 0805 sind ideal.


    Nun der Vorwiderstand ...

    Da steht bei roten LED fallen 2 bis 2,2V ab.

    Der Strom soll 20mA sein.


    Am Vorwiderstand fallen demnach 3V ab bei 5V.

    Bei 3V und 20mA müsste doch der Widerstand 150 Ohm haben? (R = U/I, 3V / 0,02 ...)


    Mir kommt das so wenig vor??

    Bei 3mm LED habe ich doch immer Widerstände so im KOhm Bereich benutzt??

  • Wenn Du 20mA durch eine 0805 SMD LED jagst, brauchst Du eine Sonnenbrille!


    Rechne mal mit 2-5mA...


    Kabel würde ich (je nach Länge) schon schirmen. Ich würde RJ45 Buchsen bestücken und normale LAN Kabel verwenden. Damit hättest Du 4 Signale, wenn man jeweils den 2. eines Paares als Masse nimmt.

    Denke dran 1-2, 3-6, 4-5, 7-8 sind die Paare!

    • Offizieller Beitrag

    Kein Problem, die IO Boards sind im Gebäude, die LGB draußen. Da stört nichts.

  • Kein Problem, die IO Boards sind im Gebäude, die LGB draußen. Da stört nichts.

    Dann vergiss nicht den Überspannungsschutz pro Signal nach/von draussen...

    Ein Blitz, welcher auch nur in der Nähe einschlägt erzeugt Felder, welche dir dann die TTL Eingänge zerstört.

    Oder ziehe halt beim Nichtspielen die Kabel ab.

  • Gibt’s für solche Anwendungen (Kabel abziehen) eigentlich geschickte Stecker, die man auch selbst belegen kann (ohne sauteures Werkzeug) und verpolsicher, robust und am besten rund sind?

    Das Genie beherrscht das Chaos

  • Gibt’s für solche Anwendungen (Kabel abziehen) eigentlich geschickte Stecker, die man auch selbst belegen kann (ohne sauteures Werkzeug) und verpolsicher, robust und am besten rund sind?


    Bei solchen Boards, die leicht tauschbar sein sollen, da verwende ich sehr gerne Wannenstecker.


    1. es ist preisgünstig
    2. es ist leicht erhältlich
    3. es ist Verpolungs sicher
    4. die Kabel kann man einfach selbst machen
    5. die Kabel gibt es aber auch vor-konfektioniert sehr preisgünstig
  • Die 0805 SMD Widerstände sind schon witzig:

    • 1 Stück 0,02€
    • 100 Stück 2€
    • 5000 Stück 6€


    Ähm, abgesehen davon dass ich 5000 mein Leben lang niemals brauchen werde ...

    ... müsste man wirklich die 5000 nehmen!

  • D-SUB (9, 15, 25, 37, 50-polig) gibts mit Lötkelchen und -vor allem- auch Gehäuse dazu mit Zugentlastung. Und kosten fast nichts.

  • Gibt’s für solche Anwendungen (Kabel abziehen) eigentlich geschickte Stecker, die man auch selbst belegen kann (ohne sauteures Werkzeug) und verpolsicher, robust und am besten rund sind?


    Bei solchen Boards, die leicht tauschbar sein sollen, da verwende ich sehr gerne Wannenstecker.


    1. es ist preisgünstig
    2. es ist leicht erhältlich
    3. es ist Verpolungs sicher
    4. die Kabel kann man einfach selbst machen
    5. die Kabel gibt es aber auch vor-konfektioniert sehr preisgünstig

    Ja, aber Wannenstecker sind eher nicht gut für Verbindungen, die häufiger getrennt und wieder gesteckt werden sollen. Da schon eher Sub-D. Geschickt wäre etwas rundes, was man leichter z.B. durch ein Bohrloch nach draußen bekommt.

    Das Genie beherrscht das Chaos

  • Sub-D ist okay.

    Wenn man die SUB-D direkt auf die Platine macht, dann ist halt die Gehäuse Form schon vorgegeben.


    Wenn wir das Gehäuse so fixieren, mache ich die Platine in der gewünschten Form.



    Wenn man Stiftleiste oder Wannenstecker macht, kann man die SUB-D einfach anstecken (oder auch anlöten wenn man den Wannenstecker weg lässt) und die SUB-D direkt am Gehäuse befestigen.

    • Offizieller Beitrag

    Kein Problem, die IO Boards sind im Gebäude, die LGB draußen. Da stört nichts.

    Dann vergiss nicht den Überspannungsschutz pro Signal nach/von draussen...

    Ein Blitz, welcher auch nur in der Nähe einschlägt erzeugt Felder, welche dir dann die TTL Eingänge zerstört.

    Oder ziehe halt beim Nichtspielen die Kabel ab.

    Sind keine 2m, die LGB kommt auf die Terasse unters Dach, ähnlich wie bei einigen Diner in den Staaten. Nur nicht alles in Plexiglas.

  • Also keine Optokoppler?



    Hier mal der erste Entwurf eines 8-fach DIGITAL INPUT Board mit optionalen LED.


    Ohne LED könnte man es natürlich etwas schmäler bauen.






  • Das wird so nicht funktionieren.

    Die 10k haben keine Chance den Eingang auf LOW zu ziehen wenn oben 820 Ohm plus LED dagegen arbeiten.

    Die Frage ist: sollen an die Eingänge Kontakte gegen Masse oder gegen +5V dran? Falls gegen Masse, dann gehören die 10k gegen +5V, falls gegen +5V dann gehören die LEDs Richtung GND. Sollen wohl doch dann leuchten, wenn der Kontakt geschlossen ist?

    Die 10k parallel zu den LEDs sind wichtig, damit der Eingang wirklich an VCC bzw. GND gezogen wird, denn die LEDs haben ja so 2 Volt Flussspannung.


    Dann sind 10k für mechanische Kontakte, evtl. unter Umwelteinfluss zu hoch, ich würde da auf 1k oder 2k2 gehen.

    Dann noch ein Kondensator 100n parallel als Störschutz.

  • Die 10k haben keine Chance den Eingang auf LOW zu ziehen wenn oben 820 Ohm plus LED dagegen arbeiten.

    Ja du hast recht, das hab ich leider auch festgestellt ...


    Selbstüberlistung ... :D



    Nee die LED gehören selbstverständlich auch gegen Masse.

    Keine Ahnung was mich da geritten hat ...