Hallo Besucher, der Thread wurde 11k mal aufgerufen und enthält 57 Antworten

letzter Beitrag von Ace am

Commodore-64-Joystick-switcher aus ebay

  • So, habe jetzt nochmal getestet, ohne gesteckte SIDs läuft der Switch auch mit dem MixSID.
    Danach habe ich die SIDs eingesetzt und das Problem war da.


    Ich schicke jetzt einen Switch zu Henning und wir sehen weiter :thumbsup:

  • So, Henning konnte leider das Problem nicht nachstellen.
    Entweder es liegt an einer Kombination der Erweiterungen in Verbindung mit dem Switch.


    Könnte es auch am verbauten SID liegen? Mal so dumm gefragt?

  • Ich würde auch eventuell auf dem SID tippen.

    Auf welcher Grundlage? Reine Spekulation?


    InsertDisk2: Weiter oben schreibst du, dass das Teil dann doch plötzlich ging, dann wieder nicht. Genau das gleiche hast du per PN im Bezug auf die Ultimate gesagt: Du hättest die abgesteckt, dann hätte es funktioniert, dann hast du korrigiert, ging also dann doch nicht verläßlich ohne Ultimate.


    Also, das riecht für mich danach, dass es das Teil selbst ist und keine Erweiterung. Manchmal geht's, manchmal nicht. Dass das zufällig dann passiert, wenn du gerade testweise irgendeine Erweiterung abgezogen hast, ist nicht aussagekräftig. Korelation != Kausalität.


    Ich habe gerade nochmal getestet und siehe da: Manchmal kommt das zweimalige Blinken sofort nach dem Einschalten, manchmal blinkt er beim Ausschalten(!) nochmal kurz auf, danach beim Wiedereinschalten blinkt er garnicht und funktioniert auch nicht, irgendwann geht's dann wieder.


    Alles ohne irgendwelche Erweiterungen zu verändern.


    Die vom Entwickler gennannten Fuses (EE DC FF) ergeben folgende Einstellungen für den Attiny48:


    Interner Oscillator bei 8MHz, startup time 6CK/14CK + 65ms
    Brownout-Detection bei 4.3V (ziemlich hoch).


    Des weiteren ist auf dem Board nur ein einziger Kondensator (1nF in einer Signalleitung), keine Bypass-Kondensatoren, Versorgungsleitungen sind nicht breiter ausgeführt, keine Massefläche, kein sonderlich sorgfältiges Routing (90 Grad Winkel etc).


    Dazu ist der Taster zum Umschalten am außersten Rand der Platine angebracht, also dort, wo die Hebelwirkung am größten ist. Nicht gerade gut für eine Platine ohne Gehäuse und ohne Fuß, die sich nur in die Control-Ports klammert. Beim Umschalten wird zusätzlich in's EEprom geschrieben, um die aktuelle Einstellung zu sichern. Gerade in dem Moment, wo das Teil vielleicht halb aus seinem Port rutscht.


    Von daher wundert es mich nicht, dass das Teil nicht so doll funktioniert.

  • Also ich habe weiter versucht irgend ein Gesetzt dabei herauszufinden, jedoch ohne Ergebnis. Wenn ich die 1541U herausgezogen habe lief der Switch ein zwei Einschaltvorgänge, danach wieder nicht.
    Jetzt habe ich den MixSID entfernt und OHNE SID versucht. Der Switch funktionierte auf Anhieb, mehrere Aus/Ein Schaltvorgänge ohne Mucken.


    Danach habe ich den SID vom MixSID runter genommen und in den C64 gesteckt, danach zeigte der Switch sein altes Verhalten. Evt. doch der SID?
    Ich suche jetzt mal einen anderen SID um diesen zu testen..

  • Ich habe das ganze hier mal verfolgt. Ich würde mal vermuten, wenn die Komponentan ohne Switch ordnungsgemäß funktionieren, dass das Problem dann eher beim Switch liegt.
    Nur so ein Gedanke...

  • Also ich habe weiter versucht irgend ein Gesetzt dabei herauszufinden, jedoch ohne Ergebnis. Wenn ich die 1541U herausgezogen habe lief der Switch ein zwei Einschaltvorgänge, danach wieder nicht.
    Jetzt habe ich den MixSID entfernt und OHNE SID versucht. Der Switch funktionierte auf Anhieb, mehrere Aus/Ein Schaltvorgänge ohne Mucken.


    Danach habe ich den SID vom MixSID runter genommen und in den C64 gesteckt, danach zeigte der Switch sein altes Verhalten. Evt. doch der SID?

    Die Tatsache, dass zwei Ereignisse in zeitlicher Abfolge stehen bedeutet noch lange nicht, dass sie auch in kausalem Zusammenhang stehen. Mit dieser Methode kannst du ewig weitermachen, ohne zu einem Ergebnis zu kommen.


    Solange du nicht herausfindest, was der Atmega8 tatsächlich tut, wird sich die Hypothese, dass es "irgendwie am SID liegt" weder bestätigen noch widerlegen lassen.


    Betrachtet man allerdings die Firmware für den Attiny48 so sieht man, dass dieser NICHTS mit den POTX/POTY-Leitungen zu tun hat. Der SID steht aber NUR über diese Leitungen in Verbindung mit dem Controlport. Selbst WENN der Atmega8, der offensichtlich die Mausemulation macht und der direkt an die POTX/POTY-Leitungen geht, nicht funktionieren sollte, würde der Attiny48 davon vollkommen unbeeindruckt bleiben.


    Fakt ist, dass der Attiny48 einen Reset macht, sobald seine Spannung unter 4.3V fällt. Das tut er offensichtlich auch nochmal im Moment des Ausschaltens, was sich am Blinken der LED erkennen lässt. Ich würde mir mal den Verlauf der Versorgungsspannung im Moment des Einschaltens genauer angucken.


    Du kannst jetzt diese Information in deine Bemühungen einbeziehen oder halt nicht.

  • Das Gerät funktioniert bei mir, egal ob mit oder ohne MixSID.


    Allerdings dauert es manchmal bis zu drei Sekunden, bis durch ein zweimaliges Blinken der LED angezeigt wird, dass das Gerät bereit ist.


    Dieses Verhalten tritt bei mir nur dann auf, wenn zuvor die LED beim Ausschalten nochmals aufblinkt. Da aus der Firmware ersichtlich ist, dass die LED nur beim Einschalten blinkt, vermute ich, das der Brown-Out Detector zuschlägt und einen Reset macht, der Atmel aber danach nochmal kurz anläuft. Das kann nur durch eine kurze Spannungssenke unter 4.3V vor dem endgültigen Abfallen der Spannung ausgelöst werden.


    Auf jeden Fall funktioniert das Gerät spätestens nach drei Sekunden. Der Fall, dass das Gerät garnicht funktioniert, tritt hier nicht auf.


    Nimmt man Erweiterungen weg (egal welche), verringert sich die Häufigkeit der Startverzögerungen. An einem nackten board ohne zusätzliche Hardware gibt es keine Verzögerungen (auch kein Aufblinken beim Ausschalten).


    Ich werde mal etwas basteln und den Brownout-Detector auf die nächstkleinere Schwelle von 2.7V setzen. Laut Datenblatt läuft der Atmel bei 8MHz zwischen 2.7 und 5.5V stabil. Es gibt also keinen triftigen Grund, bei 4.3V Panik zu machen, außer es zeigt sich, dass das Speichern der letzten Einstellung dann nicht mehr funktioniert.

  • So, ich habe jetzt mal nach

    Fakt ist, dass der Attiny48 einen Reset macht, sobald seine Spannung unter 4.3V fällt. Das tut er offensichtlich auch nochmal im Moment des Ausschaltens, was sich am Blinken der LED erkennen lässt. Ich würde mir mal den Verlauf der Versorgungsspannung im Moment des Einschaltens genauer angucken

    Es liegt offensichtlich an der Spannung, wenn ich den Rechner einschalte habe ich ab und an eine Spannung von 4,97V die dann langsam ansteigt. Sobald die Spannung 5,03V erreicht hat, startet der Switch. Nach ein paar Minuten pendelt sich die Spannung dann auf ca 5,06V ein, bei funktionstüchtigem Switch.
    Manchmal habe ich direkt beim Einschalten schon über 5,03V da geht der Switch direkt. Meist sind es aber unter oder genau um die 5,00V

  • Um den Faden hier nochmal zum Abschluss zu bringen:


    Das beobachtete Verhalten resultierte tatsächlich aus der zu konservativen Einstellung des Schwellenwertes des Brown-Out-Detectors des Atmels auf dem Joystickswitcher selbst. Stellt man dessen Schwellenwert nicht auf 4.3V sondern auf 1.8V gibt es keine Startschwierigkeiten mehr, egal ob mit oder ohne Hardware-Erweiterungen.


    Die Beobachtung "Wenn ich A wegnehme, funktioniert B" berechtigt also nicht notwendigerweise auch zu der Annahme, dass A die Ursache für das Versagen von B ist.


    Siehe auch https://xkcd.com/552/ :)

  • Hallo Henning, es sollte auch nie so rüber kommen, dass der MixSID daran schuld sei.


    Ich versuche mich mal daran das Teil neu zu programmieren, jedoch scheint mir ein Programmer dafür zu fehlen. Ich habe lediglich ein einfachen USB2Serial.
    Was kann ich denn dafür nehmen?


    So etwas?:
    https://www.ebay.com/itm/5V-Mi…d28986:g:v20AAOSw0UdXwlVq

  • Ja, damit sollte es auch gehen, Hauptsache ist ISP. Allerdings hat es bei mir sowohl mit meinem TL866 mit ISP als auch mit meiner alten Parallelportlösung nicht geklappt, in beiden Fällen wurde der Atmel nicht erkannt, obwohl alle nötigen Verbindungen da waren. Frag doch mal den Entwickler, wie/womit er das macht.

    Hallo Henning, es sollte auch nie so rüber kommen, dass der MixSID daran schuld sei.

    Habe ich auch nicht so genommen, hätte ja aber durchaus auch so sein können :)

  • Hi everyone. I actually made these units and can explain how I program them.
    I use a Atmega Uno to perform the programming. All connections except for the reset go to joystick port one.
    I created a DB9 female connection with jumper wires that connect to the UN.
    For the reset I just hold a jumper wire on it by hand.
    Attached is my pinout for the DB9 programming cable.