Hallo Zusammen, ich versuche mir theoretisch vorzustellen, wie ich mir einen Umschalter für 20 PINs gleichzeitig bauen könnte. Beispiel: Ich habe 4 Platinen mit jeweils 20 PINs I/O und eine "Steuerplatine" die die 20 PINs ebenfalls I/O in Richtung der Platinen 1:1 verbunden werden sollen. Es soll immer nur eine 1:1 Verbindung sein. Welche IC könnte das am Besten abbilden ? Danke & Grüße
Du hast nicht angegeben, was für Pegel da umzuschalten sind. Eventuell gehen für Deine Aufgabe die Analogschalter CD4051,52,53 http://www.ti.com/litv/schs047g MfG Paul
Paul Baumann schrieb: > Du hast nicht angegeben, was für Pegel da umzuschalten sind. Eventuell > gehen für Deine Aufgabe die Analogschalter CD4051,52,53 > > http://www.ti.com/litv/schs047g > > MfG Paul Hallo Paul, nun ich bin nicht so der Elektroniker, sorry, ich denke mit Pegel meinst du sicher die Spannung ? Es sind max. 5 V. Nur das ich mich nochmal richtig ausdrücke. Ich möchte 20 PINs gleichzeitig 1:1 Umschalten können. Und das gerne mit 4 Platinen. Genau geht es darum eine C64 Tastatur an 4 C64 anzuschliessen.
Wenn die Signale wirklich I/O sind (bidirektional) und nicht entweder I oder O (unidirektional) dann ist ein Analogschalter-IC schon die richtige Wahl, denke ich. Wenn du allerdings nur unidirektionale Signale hast wäre evtl. ein Bustreiber aus der *24x-Reihe sinnvoller, weil du dort dann weniger ICs brauchst. Also schieb am besten mal eine komplette Liste der Signale her. Ralf
Nachtrag: Übrigens ganz ohne ICs würde es gehen wenn du einfach einen guten alten mechanischen Parallelport-Switch verwendest ;) Ralf
Carsten Sulzberger schrieb: > Nur das ich mich nochmal richtig ausdrücke. Ich möchte 20 PINs > gleichzeitig 1:1 Umschalten können. > > Und das gerne mit 4 Platinen. > > Genau geht es darum eine C64 Tastatur an 4 C64 anzuschliessen. Also die Steuerplatine (Tastatur) immer auf einen einzelnen C64, drei C64 bleiben jeweils unbeschaltet - richtig? Wenn Mechanisch reicht besorg dir bei Ebay o.ä einen alten 1 zu 4 Druckerumschalter. Soll es Elektronisch sein dann ist ein Multiplexer wie der CD 4052 schon eine denkbare Möglichkeit. Brauchst halt 10 davon und es ist ein ziemlicher "Drahtverhau". Etwas eleganter ließe sich das mit Programmierbaren Bausteinen erledigen, also µC oder CPLD. Wobei die Bausteine dann aber 5V vertragen können müssen was bei den größeren Gehäusen über 40 Pin im Bereich der µC schon selten geworden ist und CPLD in 5V Technik ist mittlerweile noch exotischer. (Alternativ zu 5V Bauteilen geht auch Pegelwandlung, ist aber wieder erheblich mehr Bauteilaufwand) Zusätzlich muss noch das Programm bzw. die Hardwarebeschreibung erstellt werden. Dafür ließe sich so ein Umschalter mit deutlich einfacherem Layout und bei verwendung von 40Pin µC mit drei Bausteinen realisieren... Gruß Carsten
Ralf schrieb: > Nachtrag: Übrigens ganz ohne ICs würde es gehen wenn du einfach einen > guten alten mechanischen Parallelport-Switch verwendest ;) Das würde ich in diesem Fall aber nicht empfehlen, da die C64-Tastatur direkt an einer der CIA angeschlossen ist und die sind erfahrungsgemäß sehr empfindlich was das Umstecken/Umschalten von Peripherie unter Spannung angeht.
Da währe es fast einfacher den C64 eine PS2-Tastatur beizubringen und dann die Daten- und Clockleitungen zu schalten.
Dirk W. schrieb: > Ralf schrieb: >> Nachtrag: Übrigens ganz ohne ICs würde es gehen wenn du einfach einen >> guten alten mechanischen Parallelport-Switch verwendest ;) > > Das würde ich in diesem Fall aber nicht empfehlen, da die C64-Tastatur > direkt an einer der CIA angeschlossen ist und die sind erfahrungsgemäß > sehr empfindlich was das Umstecken/Umschalten von Peripherie unter > Spannung angeht. Danke, für den Tipp, auf das bin ich gerade auch gekommen, könnte gefährlich für die CIA werden.
Oliver R. schrieb: > Da währe es fast einfacher den C64 eine PS2-Tastatur beizubringen und > dann die Daten- und Clockleitungen zu schalten. Jo, das klingt ja auch nach einer Lösung, aber ich würde gerne die Tastatur vom C64 verwenden, kann man die auf PS/2 umbauen ?
Gibt es keine Möglichkeit, das man die Tastatur vorher vom CIA entkoppelt und dann wieder sanft anhängt ? Bin auch gerne für einen Kabelverhau bereit, wenn es sein muß, oder ich mache mit eine saubere Platine in Eagle.
Wie vorher schon gesagt, bin nicht so der Elektroniker, habe aber eine steile Lernkurve :-) Wenn man die ganze Sache mit Optokopplern trennt, würde das gehen ? So würde doch die Spannung auf dem jeweiligem Board bleiben und der CIA nichts vom Schalten "merken". Grüße Carsten
:
Bearbeitet durch User
Hi, Carsten Sulzberger schrieb: > Gibt es keine Möglichkeit, das man die Tastatur vorher vom CIA > entkoppelt und dann wieder sanft anhängt ? Naja, das kommt etwas darauf an "was" den CIA denn tatsächlich hinnraft. Wenn es Einflüsse von Aussen sind (z.B. ESD) kann man durchaus Schutzmaßnahmen ergreifen. Im Einfachsten Fall halt Porttreiber davor. Können aber auch einfach "unzulässige" Signalzustände oder falsches Timing eine Zerstörung herbeiführen (z.B. weil im IC zwei Transistoren gegeneinander Treiben) geht ohne eigene Logik nichts. ICh (BJ79) habe die C64 Zeit zwar noch fast von Anfang an Live miterlebt, aber nur als Anwender... Für erfolgreiche Umbauten an dem Gerät war ich noch zu Jung. Deshalb weiß ich darüber nicht viel mehr als das man aussen am USerport die Module nicht unter Spannung stecken sollte und auch das ein Freund von mir seinen C64 so wirklich gekillt hat. Aber was nun wirklich das Problem war ? Eine absolut Sichere und vom Layout unkritische Lösung wäre es wenn du auf beiden Seiten etwas Intelligenz hereinbrinst. Also eine µC Schaltung an die Tastatur welche die Tastatureingaben auswertet und in etwas Serielles Umsetzt (evtl. sogar "echtes PS2 kompatible Signale" oder einfach nur SPI bzw. UART) und pro C64 dann eine Mikrocontrollerschaltung die elektrisch dann wieder die Tastenanschläge simuliert. Gruß Carsten
:
Bearbeitet durch User
Also, gut dann verstehe ich es so: Sauber eher mit Intelligenz, also µC = Arduino ? Wenn das die Richtige Richtung ist, dann wäre das schon mal was. Habe hier "zufällig" ein paar UNOs rumliegen, die beschäftigt werden wollen. An die Tastatur kommt der Arduino und der verteilt an die entsprechenden Elektronik des anzusprechenden Boards die Tastatur Signale. Schalten tue ich dann quasi per "software". Wir würde ich am geschicktesten an die umsetzende Hardware rangehen ? Pro Board ne eigene Logik ? Grüße Carsten
Die Tastatur ist als Matrix mit 8 Spalten und 8 Zeilen aufgebaut, dazu kommt die Restore(?)-Taste die einem NMI auslöst. Das kannst Du mit Arduinos umsetzen, aber die Tastatur mit einem AVR/Arduino abfragen und den C64 eine andere Tastaturschnittstelle beibringen vereinfacht die Umschaltung unheimlich. Ist aber schon über 20 Jahre her daß ich dadran gebastelt hab.
Oliver R. schrieb: > Die Tastatur ist als Matrix mit 8 Spalten und 8 Zeilen aufgebaut, > dazu > kommt die Restore(?)-Taste die einem NMI auslöst. Das kannst Du mit > Arduinos umsetzen, aber die Tastatur mit einem AVR/Arduino abfragen und > den C64 eine andere Tastaturschnittstelle beibringen vereinfacht die > Umschaltung unheimlich. Klingt schon mal gut. Wie kann ich das verstehen 'dem C64 eine andere Tastaturschnittstelle beibringen' ? Grüße Carsten
Carsten Sulzberger schrieb: > Sauber eher mit Intelligenz, also µC = Arduino ? Arduino ist eine Möglichkeit von vielen. Kannst du nehmen, oder halt jeden X beliebigen µC der genug IO hat und den du Programmieren kannst. > Wir würde ich am geschicktesten an die > umsetzende Hardware rangehen ? Pro Board ne eigene Logik ? Ja! genau so würde ich es machen. Das Layout könnte bei allen Platinen sogar genau gleich sein. Beim "Sender" (Tastatur) funktioniert dasselbe Layout wie bei den vier Empfängern. Nur die Firmware muss sich bei Sender und Empfänger unterscheiden. Wenn du auf Nummer "ganz Sicher" gehen Willst könntest du pro Platine mit einem bzw. zwei Optokopplern (je nach der von dir gewählten Seriellen Schnittstelle) eine komplette galvanische Trennung schaffen. Gruß Carsten
Es sind nicht 20 Pin, sondern nur 17, die NMI Resetleitung (RESTORE) ist kritisch und sollte nicht verlàngert werden. Ein Druckerumschalter hat 18 Leitungen, passt also perfekt. Theoretisch kònntest du die NMI Leitung aktive buffern und somit auch umschaltbar machen, ist jedoch àhnlich der Resetleitung des FTDI Kabels beim ARDUINO aufgebaut (DTR). Es gilt auch, Tastatur und die zwei Joystick Ports benutzen dieselben Leitungen, also solltest du auch diese gleich Multiplexen oder stoert dich das? Es sind einfach zwei Ports, ein fixer 8bit Ausgang und ein fixer 8bit Eingang. Software fuer AVR fuer PS2 Tastatur oder als PS2 Tastatur gibt es auch, Arduino sehe ich da sehr schlecht, da das Timing doch recht Anspruchsvoll und Zickig ist, es werden da ja 4 Peripherien gemultiplext und auch die internen pull-up ausgenutzt, um externe Widerstànde zu sparen. Beim AVR kann man zusàtzliche pull-up einschalten, wenn man da was verlàngert, beim Drucker Umschalter sollte man aber 8x pull-up vorsehen.
Hallo Chris, erstmal danke und das mit den Joystickport habe ich nur zwecks der Einfachheit unerwähnt gelassen, geplant ist es alle mal. Gut ich werde mich dann mal an die Sache experimentell annähern. Erstmal die Tastatur mit dem Arduino an einem C64 testen. Wenn ich das hinbekomme, werde ich mal wieder bei Euch nachfragen. Danke für Eure tolle Hilfe bzw. Denkanstösse. Grüße Carsten
Vergiss nicht, GND auch umzuschalten, ist sehr wichtig, ansonsten wird der CIA kaputt. Arduino, wie bereits gesagt, zu langsam, ist nichr realisierbar, zumindest nicht mit der ARDUINO IDE. Zu den Joysticks, es existieren da zwei ADC Wandler, sogennannte RCTIME basierte, es wird die Entladung und Ladung eines Kondensators gemessen. Diese befinden sich nicht an der 20pin Steckerleiste, sondern sind separat gerouted. Wenn du die Funktionalitàt nicht brauchst, dann ist es egal. Weiters CIA is MOS und AVR ist CMOS (C=complementary). Viel Glueck mit ARDUINO und errinnere dich, dass alles mit sehr krummen Frequenzen ablàuft, da alles mit der Videoausgabe syncronisiert ist, um z.B. Videoeingabestifte oder Pistolen zu ermòglichen, oder SW generierte erweiterete Farbpaletten usw. Mfg Chris
Hi, ICh habe mir jetzt auch mal den Schaltplan aus dem Netz gezogen... chris schrieb: > Vergiss nicht, GND auch umzuschalten, ist sehr wichtig, ansonsten wird > der CIA kaputt. Wie meinst du das? Das er auf jeden Fall aufpassen soll das GND immer sicher verbunden ist? -> Da würde ich sicherheitshalber zustimmen Oder das er GND auch Auftrennen soll wenn er Umschaltet... DA würde ich aber laut Schaltplan wehemennt wiedersprechen. Die GND Verbindung des Steckers geht direkt auf den allgemeinen SystemGND Zudem ist es "dasselbe" GND das auch bei den Joystickports verwendet wird. Und die sind definitiv Hotplugfähig... Aber ein wirkliches Umschalten findet bei der "Mehrplatinenlösung" ja überhaupt nicht mehr statt - Elektrisch bleibt sowieso immer alles Verbunden. Es wird nur noch gewechselt welcher µC gerade aktiv Tastendrücke Simuliert während die anderen sich still verhalten. > Arduino, wie bereits gesagt, zu langsam, ist nichr > realisierbar, zumindest nicht mit der ARDUINO IDE. Hhhm - da kann ich jetzt nichts definitives zu sagen. Wobei ich das wirklich enttäuschend fände wenn das wirklich nicht mit den Arduino gehen würde - auch bei halbwegs Sinnvoller Programmierung nicht. Das man gerade mit Arduino sicher sein Programm so schreiben kann das der µC viele hundert Befehle abarbeiten muss nur um einen Pin zu toggeln ist wohl bekannt. Aber das es immer so langsam sein soll? Schließlich sind die Timinganforderungen ja nicht wirklich hoch. Das sind viele Millisekunden pro Spalte. Sollte es aber wirklich nicht mit der Arduino SW gehen müsste er sich halt direkt mit nativen C unter AVR Studio herumschlagen. Dann ist der LErneffekt wenigstens größer. > Weiters CIA is MOS und AVR ist CMOS (C=complementary). Wenn die Spannungen gleich sind spielt der Unterschied zwischen CMOS und dem vermutlich in NMOS ausgeführten CIA bei dieser Anwendung keine Rolle. Das sind technische FEinheitendas der internen Strukturen und lange nicht so wichtig wie die Unterschiede zwischen CMOS und TTL. > errinnere dich, dass alles > mit sehr krummen Frequenzen ablàuft, da alles mit der Videoausgabe > syncronisiert ist, um z.B. Videoeingabestifte oder Pistolen zu > ermòglichen oder SW generierte erweiterete Farbpaletten usw. Naja - so krumm finde ich die Frequenzen des C64 gar nicht... Da habe ich weit schlimmeres gesehen. Gerade die 50 Tastaturabfragen pro Sekunde sind doch schön gerade ;-) Allerdings spielen die Frequenzen für diese Anwendung keine Rolle. Da würde ich einfach eine Tabelle im Speicher anlegen wo für jede mögliche Taste hinterlegt ist ob gedrückt oder nicht. Im Prinzip würde da sogar ein 8Byte Array reichen. Und immer wenn die Zeile eins weitergeschaltet wird gibt man das zugehörige Byte über einen der Ports aus... (Entweder direkt oder über einen Transistor in OC bzw. OD Schaltung wenn einem das lieber ist... Mit Transistor könnte man aber auch 3V µC verwenden - zudem käme das dem elektrischen Verhalten der echten Tastatur um nächsten....) Man muss also nur auf die Zeilenwechsel schnell reagieren, der Rest kann völlig losgelöst vom C64 Timing erfolgen. Den weiteren Softwareteil würde ich so aufbauen das der µC an der Tastatur die Zeilenleitungen wie der C 64 der Reihe nach abfragt und jeweils den Zustand der Spaltenleitungen dann als Ergebniss ebenfalls in ein 8Byte schreibt. (ein Byte pro Zeilen). Die tatsächliche Abfragegeschwindigkeit ist dabei völlig egal, sollte nur schnell genug sein damit keine spürbaren Verzögerungen entstehen. Nach jedem Durchlauf wird dann ein 9Byte Datenburst seriell an die vier Empfänger gesendet. Entweder UART oder SPI. Dabei enthält das erste Byte dann die Information über die nicht Multiplexte Taste und -wenn die Umschaltung des Ziel mechanisch nahe an der Tastatur erfolgen soll- die Information für welchen Rechner die Tastaturinformationen gerade bestimmt sind. Die Empfangsboards empfangen diese Datenbursts und prüfen dann ob sie adressiert sind. ISt dies der Fall werden die Daten dann in das interne Array übernommen. (Quasi ein ähnlicher Ablauf wie bei einem Bildspeicher...) Die Reaktion auf die Zeilenwechsel würde ich beim Empfänger als Interrupt ausführen da zeitkritisch aber nur sehr wenig Rechenzeit beanspruchend, die Reaktion auf die eingehenden Seriellen Daten entweder über Polling oder falls vorhanden über einen niedriger priorisierten Interrupt. Der Empfangsbuffer sollte einen Spaltenwechselinterrupt ja notfalls überbrücken können... Aber genug der Anregungen - Jetzt ist selber weitermachen angesagt ;-) Gruß Carsten
Hallo Carsten und Chris, danke das ihr Euch so damit auseinander setzt. Gibt mir sehr viel Input um darüber nachzudenken. :-) Es soll immer nur ein C64 mit der Tastatur gleichzeitig verbunden sein. Die Tastatur wird auch nicht für viel Text benutzt, eher als Programmbedienung. Wahrscheinlich ist eher die Mouse anzubinden der grössere Act. Wie schon zuvor gesagt ich nähere mich der Sache Experimentell und werde erneut davon berichten. Grüße Carsten
Carsten Sch. schrieb: > Hi, > > ICh habe mir jetzt auch mal den Schaltplan aus dem Netz gezogen... > chris schrieb: >> Vergiss nicht, GND auch umzuschalten, ist sehr wichtig, ansonsten wird >> der CIA kaputt. > > Wie meinst du das? Das er auf jeden Fall aufpassen soll das GND immer > sicher verbunden ist? -> Da würde ich sicherheitshalber zustimmen Bezog sich auf die LPT Switch Loesung. Trotzdem solltest du dir mal ausmahlen was passiert, wenn di Massen zusammengeschaltet ist, und einer nicht eingeschalten ist, bzw erst eingeschalten wird. >> Arduino, wie bereits gesagt, zu langsam, ist nichr >> realisierbar, zumindest nicht mit der ARDUINO IDE. > Hhhm - da kann ich jetzt nichts definitives zu sagen. Wobei ich das > Schließlich sind die Timinganforderungen ja nicht wirklich hoch. Das > sind viele Millisekunden pro Spalte. Sie sind nicht so extrem hoch, aber es spielt sich nicht im Millisekunden Bereich ab, sondern im Mikrosekunden bereich. > > Wenn die Spannungen gleich sind spielt der Unterschied zwischen CMOS und > dem vermutlich in NMOS ausgeführten CIA bei dieser Anwendung keine > Rolle. Das sind technische FEinheitendas der internen Strukturen und > lange nicht so wichtig wie die Unterschiede zwischen CMOS und TTL. Grundsaetzlich ist (N)MOS Opencollector mit 4kohm pull-up zu VCC und die Levels sind TTL, teilweise aber auch push-pull sowie niedrigen Treiber und Input Kapazitaeten. Sprich AVR auf MOS ist kein Problem, umgekehrt kann es zu Problemen kommen. Es gibt viele Programme, welche PortB als Ausgang und PortA als Eingang nutzen. Ohne entsprechende externe Schaltung geht eine AVR da nicht, da PortB push-pull ist (mit pull/up Widerstand). Kernel verwendet PortA als Output, da ist der AVR kompatibel. > Naja - so krumm finde ich die Frequenzen des C64 gar nicht... Da habe > ich weit schlimmeres gesehen. 17.734475 Mhz / 18 = 0,98524861 Mhz bzw durch 9 fuer die 2Mhz Version. > Gerade die 50 Tastaturabfragen pro Sekunde > sind doch schön gerade ;-) Wenn diese vom Quarz kommen, sind sie ca 50.74 Hz, kommen sie vom RTC Interrupt, dann sind sie mit der Netzfrequenz syncronisiert welches von der 9V Wechselspannung kommt. Heute ist diese schlimmer als Frueher. Zudem musst du beachten, dass viele Programme die Tastatur direkt abfragen, speziell solche welche Tastatur und Joystick gleichzeitig verwenden. Die Tastatur ist nicht alles, auch der Joystick wird an den gleichen Ports bedient, wie auch der Lightpen usw, sei es vom Kernel wie auch von den Programmen selbst.
Carsten Sch. schrieb: > Zudem > ist es "dasselbe" GND das auch bei den Joystickports verwendet wird. Und > die sind definitiv Hotplugfähig... Das stimmt leider nicht, da die Joystick-Ports ebenfalls direkt an die CIAs gehen. Es gibt eine gewisse Chance, dass z.B. beim Umstecken eines Joysticks von Port 1 auf Port 2 während der C64 eingeschaltet ist anschließend der CIA im Eimer ist. Habe ich damals selbst miterleben dürfen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.