Hello, Guest the thread was called23k times and contains 482 replays

last post from 0xdeadbeef at the

250466+ oder der Versuch ein klassisches Board etwas zu optimieren

  • Also ich habe bei JLCPCB bestellt.

    Wenn ich dort das ZIP-Archiv mit den Gerber-Dateien hochlade, erkennt er die Größe automatisch. Es dauert nur ewig bei so einem großen und komplexen Board. Hängt ewig bei 96%. Da muß man etwas Geduld haben.

    Außerdem zeigt er mir dieses große Board dann am Ende nicht sofort an. Stattdessen kommt nach ein paar Minuten die Meldung "Success,this file has been saved to your File Manager". Wobei "File Manager" ein Link ist. Wenn man darauf klickt kommt man in den File Manager, wo man dann das hochgeladene Board auswählen kann. Und dann wird die Größe gleich richtig angezeigt:


    Ansonsten habe ich bei meiner Bestellung bloß die Farbe geändert, ENIG ausgwählt und "Gold Fingers" und "45°finger chamfered" ausgewählt.

  • Außerdem zeigt er mir dieses große Board dann am Ende nicht sofort an. Stattdessen kommt nach ein paar Minuten die Meldung "Success,this file has been saved to your File Manager". Wobei "File Manager" ein Link ist. Wenn man darauf klickt kommt man in den File Manager, wo man dann das hochgeladene Board auswählen kann. Und dann wird die Größe gleich richtig angezeigt:

    Ahhh.... dann wird es daran liegen. Die 96% hatte ich auch, und gewartet... aber ich hab noch keinen Account. Dann warte ich Deine finale Version ab und dann wird das mit dem bestellen schon klappen, Danke. :thumbup:

  • In mir verdichtet sich die Erkenntnis, daß ich mit meiner idiotischen Aktion, die Stiftleiste des NeatPLA zunächst falsch herum eingelötet zu haben, den Ariel-ZIF-Sockel mechanisch beschädigt/ausgeleiert habe und er nicht mehr richtig fest schließt. Eine testweise eingesetzte GAL-PLA zeigt im Prinzip das gleiche sporadische Fehlverhalten im Dead-Test wie die NeatPLA.

    Über kurz oder lang werde ich es wohl auf mich nehmen müssen, den ZIF-Sockel auszulöten und durch einen Präzisionssockel zu ersetzen.

    Allerdings sind zwischenzeitlich die Port-Expander aus China eingetroffen. Meine Mission für dieses Wochenende ist also erstmal, eine MicroKey-Platine aufzuzbauen und sie mal außerhalb des C64 kurz in Betrieb zu nehmen.

    Außerdem würde ich gerne mal ein paar Keyscans mit dem Logic Analyzer aufzeichnen, um mal wirklich eine Messung in der Hand zu haben, wie der Keyscan des Kernals und diverser Spiele eigentlich im Detail (Zeiten usw.) aussieht.

  • Schaun wir mal. Ich reche damit, daß ein erheblicher Teil der Spiele es so ähnlich macht wie der Kernal. Aber ich wäre überrascht, wenn es nicht auch exotischere Ansätze gäbe.

    Zumindest meine früheren Tests (Auslesen der Portregister) deuten darauf hin, daß es da eine gewisse Bandbreite an Umsetzungen gibt.

  • Interessant wäre vor Allem, ob Alle mit der "überhaupt was gedrückt"-Erkennung beginnen, sprich Alle Bits gleichzeitig auf aktiv und Ergebnis ungleich nix gedrückt startet dann erst den eigenlichen Scanlauf, oder ob da manche gleich direkt mit einzelnen Bits loslegen...


    An solchen Beispielen, die nur ne Submatrix oder gar einzelne Tasten abfragen, also ohne den pauschalen "überhaupt was gedrückt"-Schritt, wäre ich persönlich sehr interessiert ;-)

  • Ich hatte übrigens kürzlich meine alte Datasette vom Speicher meiner Eltern gerettet. Habe sie gerade mal angeschlossen und zu meiner Überraschung kann man da auch "Play" drücken, wenn keine Kassette eingelegt ist. Kurzum: der Motor läuft und der Riemen scheint auch noch nicht zu Staub zerfallen zu sein, also kann ich jetzt sicher sagen, daß auch der Motortreiber wie erwartet funktioniert. Jetzt bin ich irgendwie doch ein ganz klein bißchen traurig, daß mein erstes Originalspiel "Attack of the Mutant Camels" auf Kassette anscheinend irgendwann mal zusammen mit den ganzen Mastertronic-Kassettenspielen im Müll gelandet ist. Ich spiele sogar tatsächlich mit dem Gedanken, mit ein paar Kassetten zu kaufen, um mir per U2+-Tapeadapter Spiele auf Kassette zu schreiben und dann von der Datasette wieder einzulesen. Also zumindest mal zum Testen.

  • So, mein Soll für heute habe ich eigentlich erreicht.


    #1 MicroKey aufgebaut (ja, ha, ich weiß, müßte ich von Flußmittelresten befreien)


    #2 Habe den Ariel-ZIF-Sockel für die PLA ausgelötet und einen normalen Präzisionssockel eingelötet. Hoffen wir mal, daß das die verbleibenden sporadischen Kaltstartprobleme beseitigt

  • Also das mit dem Messen des Keyboard-Scans per Logic-Analyzer gestaltet sich etwas schwieriger als erhofft. Mein Logic-Analyzer hat 250kOhm-Widerstände gegen Masse in der Eingangsbeschaltung (ein anderer hat sogar nur 100k). Damit senkt er anscheinend den Pegel auf den inaktiven Ausgängen schon so sehr, daß man die Spannungsschwelle für die Erkennung eines hohen Pegel dramatisch absenken muß. Und aus irgendwelchen Gründen ist das Verhalten der verschiedenen PA-Pins auch noch unterschiedlich. So ist es praktisch unmöglich, gleichzeitig ein vernünftiges Signal auf PA0 und PA7 zu messen.

    Eigentlich müßte ich da wohl noch Schmitt-Trigger oder zumindest hochohmige serielle Widerstände dazwischenschalten, um mit meiner Messung das Signal nicht zu stark zu beeinflussen.

  • Mein Logic-Analyzer hat 250kOhm-Widerstände gegen Masse in der Eingangsbeschaltung (ein anderer hat sogar nur 100k).

    a) Darf man fragen, welche Modelle Du im Einsatz hast?


    Es gibt aktive Probes auch für Logic-Analyzer, die sollten -ähnlich wie FET-Probes für Oszis weder kapazitiv noch gar ohmisch Probleme bereiten, aber eigentlich kommen die erst bei deutlich höheren Frequenzen und niedrigeren Pegeln zum Einsatz, bin etwas verwundert....


    b) Sicher, dass die Mainboard-Bestückung, insbesondere Deine Joystick-Swap-Erweiterung und die CIAs selbst in Ordnung sind?


    Die CIAs sollten je Portpin wenigstens 1mA sourcen können, aber selbst mit 100k Last würden nur I=U/R 5/100.000 =0,05 mA fliessen, selbst an allen 8 Bits in Summe also noch kein halbes mA! Also je Pin nur ein Viertel dessen, was CSG als worstcase angab (min. 200µA Sourcing für >2.4V out) Und mit 250k Last entsprechend nochmals weniger...


    Praktisch sollte mit der Last der Pegel nur minimal nachgeben, denn auch die seinerzeit üblichen TTL und LS-TTL haben Eingangsströme gleich oder gar höher diesen Werten!

    Sonst hätten die CIA nie richtig funktioniert...


    Tippe daher (ohne jetzt nochmals im Detail drauf geschaut zu haben) eher auf Deine Umschaltlogik, dass diese die Ausgänge belastet...

  • Ich habe nur USB-Logicanalyzer (DSLogic Plus, ScanaPlus und ein paar mehr). Was die Tastaturmatrix angeht: da gibt es keine Pullups auf dem Mainboard, bloß interne Pullups in den CIAs. Die scheinen aber eher schwach zu sein. Und da der High-Pegel an den CIA-Portpins ausschließlich durch die internen Pullups der CIAs erzeugt werden, kann man ihn durch die Pullups in den Probes halt nach unten ziehen. Das hat IMHO nichts mit der Frequenz oder der Kapazität zu tun.

    Irgendwie hatte ich sowas schon befürchtet, aber ich hatte irgendwie gehofft, es wäre nicht ganz so schlimm.

    Im Prinzip bräuchte ich Opamps als Impedanzwandler oder Schmitt-Trigger, am besten mit einstellbaren Schwellen. Das ist für >8 kanäle aber halt ein ziemlicher Aufwand.

    Eventuell reicht es auch, wenn ich noch 200k oder so in Serie schalte.

  • Lt Datenblatt können die Pullups min. 200µA bei kleiner 2.6V Spannungsabfall, wären rechnerisch also maximal ca. 6K groß, bei den max. Wert von 1mA gar ca. 2K7, was sich gut mit den angegebenen 3k - 5k Bereich im Datenblatt deckt. (noch dazu als Port INPUT Pullup bezeichnet!)


    Die sollten weder 100k noch gar 250k irgendwie "jucken", der Spannungsabfall wäre im Bereich 20mV!


    Wenn am CIA der Port auf Eingang oder "Tristate" steht, kann aber möglicherweise ein nur noch sehr hochohmiges Verhalten sichtbar sein.


    androSID : Kannst Du aus Deinen Forschungen hier mal berichten, ob die I/O-Ports der CIA wirklich "nur" Open-Drain sind und was es mit den im Datenblatt erwähnten "passiven wie aktiven" Pullups zur "C-MOS & TTL-Kompatibilität" auf sich hat? DANKE!


    Ich würde das so interpretieren, dass im Falle eines offenen Eingangs über passiven, schwachen Pullup ne 1 gelesen wird, im Falle eines als Ausgang mit Wert "1" ein stärkerer (der oben mit 3-5K genannte???) Pullup aktiviert wird und im Falle eines Ausgangs mit Wert 0 dieser deaktiviert und dafür aktiv gg. Masse geschaltet wird.



    Lösung zum messen wäre schlichtweg, auch die R/W-Leitung, die /CS-Leitung , die RS0-3 Adressbits und den Daten-Bus mit aufzuzeichnen und somit zu WISSEN, wie der Port gerade programmiert ist, wenn man die entsprechenden Ausgangspegel sieht.


    Somit lassen sich diese auch ohne Hilfskonstruktionen eindeutig zuordnen, denn auf Eingang geschaltet heißt floating high ja nur, dass NICHTS gedrückt wurde...

  • Kannst Du da nicht einfach ein 74LS244 davor hängen? Das müsste doch eigentlich von der Eingangsimpedanz her passen, oder? Ich weiss aber offen gesagt nicht, was für einen Widerstand die Gummitastenkontakte haben.


    Viele Grüße, Jörg.

    Kleiner 1K, üblicherweise um die 100 Ohm.


    Von Zusatzschaltungen würde ich erstmal die Finger lassen, denn wie oben beschrieben: da ist was faul, so schwach sind die CIA auch wieder nicht!


    Und mit den möglicherweise floatenden Werten, wenn der Port als offener Eingang steht, kann man leben oder aber in Messtechnik investieren, die neben High und Low auch noch "gültig" oder "ungültig" mitliefert je Kanal, wie es sich gehört ;-)

  • Muß morgen erstmal sehen, was ich mit einem normalen 1MOhm-Tastkopf für Pegel sehe und sie sich das durch den Logic-Analyzer verändert. Leider kenne ich weder die Eingangbeschaltung des Logic-Analyzers genau, noch weiß ich wie das mit den Pullup im CIA genau funktioniert. Das Datenblatt ist an dieser Stelle etwas kryptisch.

    Quote

    Port A and B have passive pull-up devices as well as active pull-ups, providing both CMOS and TTL compatibility.

    Und die ~5k sind als "Port Input Pull-up Resistance" angegeben, was nahelegt, daß der Pullup mit 5k bei den Ausgängen gar nicht aktiv ist. Außerdem scheint das Datenblatt nur einen Minimalwert und typischen Wert, aber keinen Maximalwert zu spezifizieren. Und wenn es einen aktiven und passiven Pull-Up gibt, wirft das die Frage auf, warum nur ein Wert spezifiziert ist.

    Es scheint zumindest denkbar, daß die ~5k nur in der Eingangbeschaltung aktiv sind, dann könnte in der Ausgangbeschaltung nur ein sehr schwacher Pullup vorhanden sein. Für die Messung an PortB braucht man an den Ausgängen natürlich gar keine Pullups, weil ja die Eingänge gemessen werden, die Pullups haben.

  • nur in der Eingangbeschaltung aktiv sind, dann könnte in der Ausgangbeschaltung nur ein sehr schwacher Pullup vorhanden sein.

    Wäre absolut kontraproduktiv für die Funktion als AUSgang, wenn man annehmen darf, dass der High-Pegel rein passiv durch einen Pullup erzeugt wird (open drain rsp. open-collector Prinzip)


    Zudem spricht dagegen, dass das Datenblatt für einen High-Ausgang eine Stromtreibfähigkeit von typisch bis zu 1mA, aber 200µA minimal vorgibt, was rechnerisch ziemlich genau mit einem 5K Widerstand zusammenpasst. (siehe mein post weiter oben).



    Kann es sein, dass eines der Schutzdioden-Netzwerke verpolt eingelötet wurde, oder fehlerhaft ist?

    Welchen Typ verwendest Du da genau? (hab nur den Schaltplan griffbereit, nicht die Stückliste...)


    Diese Schutzdioden wären bei Einsatz von HCT4053 im Joystick-Signalpfad eigentlich gar nicht notwendig gewesen, da in Letzterem auch enthalten, sowie die ca. 80 Ohm Serienwiderstand auch schon schützend wirken...


    Joystickports sind extern nicht belegt, oder?


    Der (gemeinsame) Eingang der HCT4053 liegt SICHER auf sauberem Pegel?


    Gehen Tastatur und gegebenenfalls die Joysticks, wenn auch der Logic-Analyzer mit dran hängt? (auf gute Masse achten, sonst CIA tot!!!)

  • Wäre absolut kontraproduktiv für die Funktion als AUSgang, wenn man annehmen darf, dass der High-Pegel rein passiv durch einen Pullup erzeugt wird (open drain rsp. open-collector Prinzip)

    Streng genommen bräuchte man für den Keyboard-Scan gar keinen Pullup im Ausgang. Es scheint aber einen zu geben, weil das Datenblatt einen "Ouput High Current (Sourcing)"-Strom von 200µA bis 1000µA bei >2.4V Ausgangspannung spezifiziert. Die Ausgangsspannung "Output High Voltage" wird von 2.4V bis VCC spezifiziert, wobei mir nicht so ganz klar ist, unter welchen Umständen exakt man 2.4V als High-Pegel erwarten kann und wann VCC/5V. All das klingt aber irgendwie nach TTL.

    Tatsächlich steht nirgends im Datenblatt, daß die I/O-Ports in NMOS aufgebaut oder als Open-Drain-Ausgänge ausgelegt sind.


    Kann es sein, dass eines der Schutzdioden-Netzwerke verpolt eingelötet wurde, oder fehlerhaft ist?

    Das halte ich für einigermaßen unmöglich. Falsch herum eingelötet würde ich kaum den Diagnosetest bestehen.

    Diese Schutzdioden wären bei Einsatz von HCT4053 im Joystick-Signalpfad eigentlich gar nicht notwendig gewesen

    Das ist klar und ich erinnere mich dunkel, darauf auch schon mehrfach hingewiesen zu haben. Aber es schadet sicher nicht, einen zweistufiges Schutz zu haben.

    Joystickports sind extern nicht belegt, oder?
    Der (gemeinsame) Eingang der HCT4053 liegt SICHER auf sauberem Pegel?

    Also selbst wenn ich einen Joystick eingesteckt hätte (was ich nicht habe), wäre das völlig wumpe, solange ich nicht ständig JoyB0 aka PA0 gegen Masse kurzzschließen würde. Was nicht nur anstrengend wäre, sondern auch offensichtlich hirnrissig. Aber selbst das würde noch nicht erklären, warum ich den Scan auf PA0 dann überhaupt beobachten kann, aber halt nur bei entsprechend abgesenkter Schwelle.
    Und wäre der gemeinsame Schalteineingang des HCT4053 nicht auf einem sauberen Pegel, hätte ich weder den Diagnosetest noch meine Tests mit Anykey bestanden.

    Gehen Tastatur und gegebenenfalls die Joysticks, wenn auch der Logic-Analyzer mit dran hängt? (auf gute Masse achten, sonst CIA tot!!!)

    Die Tastatur funktioniert völlig unbeeindruckt vom angesteckten Logic-Analyzer. Das verwundert mich jetzt aber eigentlich aus einer Reihe von Gründen nicht sehr.

  • androSID : Kannst Du aus Deinen Forschungen hier mal berichten, ob die I/O-Ports der CIA wirklich "nur" Open-Drain sind und was es mit den im Datenblatt erwähnten "passiven wie aktiven" Pullups zur "C-MOS & TTL-Kompatibilität" auf sich hat? DANKE!

    Siehe Seite 3:


    http://archive.6502.org/datasheets/rockwell_r6522_via.pdf


    Ist beim CIA/6526 identisch.


    Und im Grunde sind es keine "echten" Pullups, sondern kleine Konstantstromquellen