Frage zu Schaltung des Userport als Eingang

Es gibt 30 Antworten in diesem Thema, welches 2.880 mal aufgerufen wurde. Der letzte Beitrag (21. April 2024 um 18:02) ist von kinzi.

  • Hallo,

    ich möchte am Userport PB0 als Input nutzen, erstmal nur, um die Grundlagen zu lernen, später um einen Sensor auszulesen.

    Im Buch Hardware-Basteleien zum C64/C128 habe ich auf Seite 60/61 die angehängte einfachste Schaltung gefunden.

    Also PB0 (input) wird über einen 5,6kOhm Pull-up-Widerstand mit 5 V verbunden. Im Text steht was von 500Ohm..10kOhm.

    Ist diese Schaltung korrekt? Als 5V würde ich Pin 2 am Userport nutzen oder eine externe Spannungsquelle mit verbundenen Massen Pin 1 - Minuspol Batterie.

    Sollte PB0 nun versehentlich auf Ausgang und Low gesetzt werden: Würde bei diesem 5,6kOhm-Widerstand der CIA Schaden nehmen? Das müssten 5V/5,6kOhm ca. 0,9mA sein, welche im CIA versenkt würden.

    Ich möchte die Schaltung so gestalten, dass auch bei versehentlicher Fehlprogrammierung des Datenrichtungsregisters der CIA überlebt.

    Danke und Grüße

    Jörg

  • Also PB0 (input) wird über einen 5,6kOhm Pull-up-Widerstand mit 5 V verbunden. Im Text steht was von 500Ohm..10kOhm.

    Ist diese Schaltung korrekt? Als 5V würde ich Pin 2 am Userport nutzen oder eine externe Spannungsquelle mit verbundenen Massen Pin 1 - Minuspol Batterie.

    Das sieht erstmal prinzipiell OK aus. Ich habe jetzt am Userport schon ewig nichts mehr gemacht, aber 500Ohm finde ich nach Erfahrung üblicher Schaltungen etwas niedrig. Ich weiß nicht, wie hoch mal gehen kann, 10k ist ein häufiger Wert. Wenn der C64 das kann, würd eich 10k vorschlagen.

    Mit externer Spannung wäre ich vorsichtig. Ich würde eher die Spannung aus dem Userport nehmen.

  • Den Widerstand braucht man gar nicht, weil in der CIA schon Pullups eingebaut sind.

    Ansonsten zum Thema:

    Bitte melde dich an, um diesen Link zu sehen.

    Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen.

  • Danke.

    Ich hätte noch eine Zusatzfrage.

    Folgender Plan:

    Ich nutze PB0 als Input und PB1 als Output, also:

    LDA #$FE ;

    STA $DD03 ; C2DDRB Bit 0 = 0 und Bit 1 = 1

    Wenn ich jetzt im Datenportregister PB1 setze

    LDA #$03

    STA $DD01

    dann hat das nur Auswirkungen auf das Output-Bit PB1, Input-Leitungen ignorieren den Schreibvorgang, richtig?

    Die angehängte Schaltung soll das PB1 signal invertiert auf PB0 geben. Passt das so?

    Grüße

    Jörg

  • PB0 sollte da das invertierte PB1 lesen, ja.

    Aber nimm die 5V aus dem Userport (Pin 2). Externe Spannungsquellen sind nicht toll u.a. wegen Bitte melde dich an, um diesen Link zu sehen. : im allgemeinen ist es nicht erlaubt, an Signaleingängen höhere Spannungen als die Versorgungsspannung anzulegen; schaltest Du aber im Beispiel den C64 ab und lässt die Schaltung inkl. Batterie dran, passiert genau das (da die Versorgungsspannung der CIA im C64 in dem Moment 0 Volt beträgt). Ist vermutlich an der Stelle wegen des Widerstands unkritisch, aber trotzdem.

    Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen.

  • Gut, an diese Situation hatte ich gar nicht gedacht.

    Also dann spiele ich mal mit der Variante aus dem ersten Post. Und anstelle des Tasters baue ich einen Transistor ein.

    Letzte Frage für heute:

    Du hattest das zwar schonmal geschrieben, aber Vorsicht ist die Mutter im Porzellanladen: Userport-Output-Pins kann ich direkt und ohne Widerstand an Userport-Input-Pins halten bzw. kurzschließen, so wie es in der Keyboard-Matrix beim Tastendruck passiert, richtig?

    Danke und einen schönen Mittag!

  • vermutlich an der Stelle wegen des Widerstands unkritisch

    5.6k UND eine PN-Strecke (0,7V) des Schalttransistors werden vermutlich NICHT reichen, um den Eingang auch sicher auf LOW zu ziehen.

    Wie weiter oben schon erwähnt: dieser Widerstand kann weg *). (das Schaltbild ist etwas verwirrend gemalt, Plus oben, Minus unten, Eingänge links, Ausgänge (das was an den Eingang der nächsten Stufe geht) rechts, dann liest es sich wie von selbst... (zumindest in unserem Kulturkreis :wink: )

    *) aber natürlich nur, wenn die LED wirklich aus den gleichen 5V gespeist werden, die auch den CIA speist, sonst fließen Querströme und ob die dann was anrichten, würde ich gerade beim CIA eher vorsichtig mit "vielleicht" beantworten...

    Und aufpassen: diese Vereinfachung gilt nur für N-MOS! Bei C-MOS oder auch(uraltem, aber auch meist neg. Versorgung erfordernden) P-MOS würde es hier eventuell rauchen...

    Denn N-MOS hat für Ausgänge intern immer nur einen Low-Side-Schalter, die High-Side wird über einen Widerstand (in Realität eine Stromquelle mittels eines weiteren N-MOS-Transistors, dessen Potential quasi "schwebt"), also analog einer diskreten (und zur Vereinfachung bipolaren) Schaltungstechnik, die nur NPN-Transistoren und Dioden (mit gemeinsamer Kathode) verwenden würde, Push-Pull gibts erst bei C-MOS, bei P-MOS ist es wie bei N-MOS, nur eben von der Polarität her genau anders rum, also analog zu PNP-Schaltungen und Dioden mit gemeinsamer Anode.

    Natürlich im Chip alles auf Basis von FETs anstelle bipolar, aber anschaulicher sind für die meisten Hobbyisten auch heute noch die bipolaren "normalen" Transistorschaltungen, was eigentlich verwundert, da Strom-Steuerung nicht so zugänglich ist wie Spannungssteuerung und FETs im Wesentlichen auch in ihrer Funktion den Röhren ähneln, insbesondere aber dort die selbst-leitenden Typen (die heute eher selten diskret anzutreffen sind).

  • Userport-Output-Pins kann ich direkt und ohne Widerstand an Userport-Input-Pins halten bzw. kurzschließen, so wie es in der Keyboard-Matrix beim Tastendruck passiert, richtig?

    Genau, Zusammenschalten mit anderen Open Collector-Leitungen oder direkt auf Masse legen ist kein Problem. Steht auch im Wiki nochmal genauer beschrieben.

    Ruudi Den Widerstand vor PB0 in Posting Bitte melde dich an, um diesen Link zu sehen. darf man auf keinen Fall einfach entfernen, sonst fließt der LED-Strom (wohl rund 9mA) ggf. bei PB0 auf Output Low direkt in die CIA und schrottet dort die Ausgangsstufe (die nur auf 3mA spezifiziert ist). Bändige mal Dein LLM. :)

    Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen.

    Einmal editiert, zuletzt von 1570 (18. April 2024 um 16:11)

  • sonst fließt der LED-Strom (wohl rund 9mA) ggf. bei PB0 auf Output Low direkt in die CIA und schrottet dort die Ausgangsstufe (die nur auf 3mA spezifiziert ist). Bändige mal Dein LLM. :)

    NEIN! Das wird nicht passieren aus gleich mehreren Gründen: ne LED hat keinen linearen Strom-Spannungsverlauf, d.h. am CIA wird dynamisch über Temperatur weniger Spannung abfallen, als bei nem rein ohmschen Widerstand, der den gleichen rechnerischen Stromfluss ergeben würde. Zudem schaltet der Fragesteller die CIA ja gemäß seiner Angaben auch nicht an diesem Pin auf Ausgang und das System tut das beim Einschalten oder danach auch nicht von selbst.

    Auch sind die 3mA aus dem Datenblatt die "worst case" Angabe, die selbst dann gelten, wenn ALLE Ports auf Ausgang geschaltet sind und gg. GND belastet werden (d.h. Summenstrom durch GND-PIN). Ist daher auch als MINIMUM angegeben im Datenblatt und nicht als Maximum!

    Bitte melde dich an, um diesen Anhang zu sehen.

    Sind weniger Portpins als Ausgang geschaltet und aktiv, erhöht sich der zulässige Strom natürlich (wenn auch nicht linear), aber 9mA mit eben LED samt deren Vorwiderstand als Last sind meiner Erfahrung nach selbst für die CIA -als Einzellast- unkritisch! (ein warm werdender MOSFET im CIA würde selbst hochohmiger und damit die Spannung an der LED weniger, somit deren Innenwiderstand größer, doppelter Rückregeleffekt in diesem Fall im Gegensatz zu ohmsch-linearer Last)

    Die Antwort bezieht sich zudem auf einen VERSUCHS-Aufbau mit vorgegebenen Sinn und nicht auf eine dauerhafte Installation im Gerät, wo eventuell dann mal ne neue Anwendung wie ein paralleler Speeder oder Eprommer am UP zu Problemen führen könnte, z.b. durch nochmals parallel weitere Lasten.

    Insofern: 1570 halt Dir selbst den Spiegel vor, Deine Vorhaltungen mir gegenüber sind so einseitig wie die 1570 es ist :wink:

  • NEIN! Das wird nicht passieren aus gleich mehreren Gründen: ne LED hat keinen linearen Strom-Spannungsverlauf, d.h. am CIA wird dynamisch über Temperatur weniger Spannung abfallen

    Wow, LLM live. Total ohne Praxis- oder Kontextbezug. Geht auch direkt so weiter, von wegen "3mA sind schon einzeln okay und der Pin wird auch nicht auf Ausgang geschaltet" (überhaupt kein Problem, wenn die CIA nur ein POKE vom Ableben entfernt ist, klar), ansonsten wäre Herr Ruudi der Allererste, der genau sowas nicht als in allen Fällen sicher anprangern würde.

    Uh mein Popcorn geht gerade zu Neige, ich bin dann mal weg.

    Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen.

  • Ich nochmal:

    Um eine einfache serielle Verbindung mit separater Sende(PB1)- und Empfangsleitung(PB0) zu einem Raspberry 400 (rechts) herzustellen, würde ich folgendes probieren (siehe Skizze).

    Haut das so hin oder fliegt da was durch?

    Danke und schönes Wochenende

    Jörg

  • (...ich musste erstmal LLM googeln..:schande:8o)

    "Was heute noch wie ein Märchen klingt,kann morgen Wirklichkeit sein.Hier ist ein Märchen von übermorgen.Es gibt keine Kupferka­bel mehr,es gibt nur noch die Glasfaser und Terminals in jedem Raum.Man siedelt auf fernen Rech­nern.Die Mailboxen sind als Wohnraum erschlossen.Mit heute noch unvorstellbaren Geschwindigkeiten durcheilen Computerclubs unser Da­tenverbundsystem.Einer dieser Com­puterclubs ist der CCC.Gigantischer Teil eines winzigen Sicher­heitssystems,das die Erde vor Bedrohungen durch den Gilb schützt.Begleiten wir den CCC und seine Mitglieder bei ihrem Patrouillendienst am Rande der Unkenntlich­keit. CCC'84 nach ORION'64"

  • Ich nochmal:

    Um eine einfache serielle Verbindung mit separater Sende(PB1)- und Empfangsleitung(PB0) zu einem Raspberry 400 (rechts) herzustellen, würde ich folgendes probieren (siehe Skizze).

    Haut das so hin oder fliegt da was durch?

    Danke und schönes Wochenende

    Jörg

    Bei GPIO2 würde ich tendenziell noch nen Widerstand zu 5V hin einbauen. Ist glaub ich besser.

  • 5V über Transistor direkt an CIA PB0 = Rezept für gebratene CIA. Vor Pin 2 gehört ein 1k-Pullup.

    Für eine serielle Verbindung zum RP400 muss man auch die 3,3V-Pegel auf der RP-Seite beachten. Du legst da 5V an RP-GPIO2, das grillt den Raspberry, und bei PB1=High schließt der Transistor dort auch noch 5V mit Masse kurz. Teurer Spaß. Stattdessen gehört GPIO2 über einen 1k-Pullup an 3,3V.

    Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen.

  • Haut das so hin oder fliegt da was durch?

    Nö, aber mir der Hut weg!

    Der Transistor rechts unten überlebt das Einschalten nicht (fehlender Vorwiderstand!) und:

    Bitte melde dich an, um diesen Anhang zu sehen.

    Ein NPN Highside braucht an der Basis min. 5.7 V, um durchzuschalten (ok, in Germanium nur 5.3 V), sprich Du müsstest die GPIO (vermutlich nur 3.3V level) vom neumodischen Kram um ca. 2,5V höher legen, also 2x NiCD Akkus zwischen die beiden GNDs spannen, :wink:

    Im Ernst: Geht mit PNP resp. P-MOSFET, aber dann hast gleich auch nen Inverter gebaut, da der bei niedrigem Pegel dann schaltet. Also muss da noch ein Inverter dazwischen, egal ob als Transistorstufe oder eben in integrierter Form, aber dann kannst auch gleich nen Buffer nehmen und es gut sein lassen :wink:

    Die 5K(1) sind an der Stelle übrigens auch ein wenig zu hoch gegriffen, zumindest wenn Du ordentlich steile Flanken sehen willst und eine Funktion auch an älteren Chips oder bei höheren Temperaturen sicherstellen willst (sprich höhere Eingangsströme auch mal fließen können...) Würde da bei diskreter Logik eher auf 2K2 gehen, ansonsten auf 3K3.

  • Wow, LLM live. Total ohne Praxis- oder Kontextbezug. Geht auch direkt so weiter, von wegen "3mA sind schon einzeln okay und der Pin wird auch nicht auf Ausgang geschaltet" (überhaupt kein Problem, wenn die CIA nur ein POKE vom Ableben entfernt ist, klar), ansonsten wäre Herr Ruudi der Allererste, der genau sowas nicht als in allen Fällen sicher anprangern würde.

    Probiers aus Du KS !

    Mehr sag ich ned!

    und ne LED bei 5V bringt keinen um, im Gegensatz zu fehlenden Schutzleitern bei gewissen Lobhudlern...

  • mit einem 7406 oder 7407

    Den Vorwiderstand im Collector-Pfad brauchts dann aber jeweils dennoch: Also mit EINEM 7406 und min. drei, wenns "univerell" sein soll 4 Vorwiderständen, beim 7407 ein oder zwei am Ausgang je einer Stufe gg. 5V jeweils in Richtung CIA, passende Vcc in die andere Richtung, versteht sich.

    Den einen, den man weglassen könnte, der sitzt am Ausgang des 7406/7, der dann den CIA-Eingang ansteuert, denn die CIA hat ja intern eine Art Pullup, die diese Funktion übernimmt. Aber ein zusätzlicher schadet auch nicht, so lange man nicht zu niederohmig arbeitet (also im niedrigen 1stelligen K-Bereich, hier ja keine LED in Serie)...

    Man muss im FAlle des 7406 nämlich wie bei der Transistorlösung je 2 Gatter/Stufen hintereinander schalten oder aber die Invertierung in SW machen...

    7407 wäre der passende OC-(nichtinvertierende) Buffer. LS gehen genauso, hier sogar auch HC&HCT, da OD Ausgang.

  • In Wirklichkeit baut man das alles statt mit Transistoren mit einem 7406 oder 7407. Dann ist das sauber getrennt und den Pegel-Wandler für den RasPi hat man auch gleich.

    Bitte melde dich an, um diesen Anhang zu sehen.

    "Und während in Villabajo noch gegrübelt und philosophiert wird, wird in Villarriba bereits gelötet ..."

  • Und während in Villabajo noch gegrübelt und philosophiert wird, wird in Villarriba bereits gelötet ..."

    Mit DEM Schaltbild kann er es wirklich NUR löten, VERSTEHEN wird er die Funktion damit aber nicht, befürchte ich...

    Zudem hängt auch noch C1 falsch ;) (und im Zweifelsfall je nach Einschaltreihenfolge wird damit der Raspi final up gelatcht ...)

    Bitte melde dich an, um diesen Anhang zu sehen.

    C1 gehört natürlich gg. GND am unteren Anschluss, ansonsten würde ein Einschaltpuls seitens C64 auf den dann eventuell noch undefinierten oder als Eingang geschalteten (aber durch gemeinsame Masse geschlossenen Stromkreis) Raspi-Ausgang kommen und dort einen C-Mos-üblichen parasitären Thyristor eventuell zünden, mit folgendem Durchgang über die Versorgung vom Raspi stirbt dieser dann thermisch (innerer Kurzschluss)

    edit Formulierung der Root cause geändert für bessere Verständlichkeit