MFA Infos zum Bau einer Tastatur

  • Wenn man keine Tastatur hat, aber eine Video/ASCII Karte, kann man sicher eine PS/2 etc. Tastatur mittels PIC/AVR/Arduino anschließen.

    Dazu sollen diese Info's dienen.


    Einige Links mit evtl. passenden (passend zu machenden) Projekten (selbst nicht getestet!):

    http://www.go4retro.com/products/ps2-encoder/

    http://www.willegal.net/appleii/appleii-kb-int.htm

    https://hc-ddr.hucki.net/wiki/…13/erweiterungen/tastatur(Nach weiter unten scrollen - Mit ATTINY 2313)


    Peter

  • Darüber habe ich auch schon nachgedacht - immerhin habe ich ja schon eine PS/2-Tastatur an den Nixdorf von Toshi gebastelt und auch an meinen J&C.

    Aber da ich den Umweg über diese Terminalkarte sowieso etwas umständlich finde, würde ich bei fehlender Tastatur vermutlich eher direkt ein "richtiges" Terminal oder einen PC mit Terminalemulation anschließen. Das sollte deutlich einfacher gehen; auf der CPU-Karte müssten dazu nur zwei Kabel an die entsprechenden Lötpunkte gelegt werden (plus Masse). Ist im CPU-Handbuch ganz gut erkennbar.


    Dann hat man auch echte 80 x 24 und nicht die arg eingeschränkten 64 x 16, außerdem Groß-/Kleinschrift etc. Und man spart sich einen Steckplatz ;)


    Dem Monitorprogramm sollte das egal sein (und das profitiert auch nicht davon) - für den Rest der Software kann ich nichts sagen. CP/M läuft ja eh nicht über diesen seriellen Anschluss afaik.


    Wenn ich heute Abend dazu komme werde ich mal versuchen, das experimentell nachzuweisen.


    Edit: Gerade gesehen, dass Peter das im Nachbarthread schon dargestellt hat.:wacko:

  • Habe mich heute mal dran gesetzt und wollte eine PS/2 Tastatur an der Videokarte dran basteln.. bin fast verzweifelt!!


    1. Das obige Bild mit der Pin Belegung stimmt NICHT! Zumindest nicht in dem Kontext, wie ich es verstanden haben wollte.

    Die Belegung des Steckers ist in der Doku weiter hinten enthalten. Pin 9 ist +5V und Pin 10 GND.

    Pin 1 ist Datenpin 1.. Pin 7 ist Datenpin 7. Pin8 ist Strobe (STB). Siehe Bild Pin Belegung.png!


    2. Datenpins sind High=1 und Low=0. Strobe aber ist aktiv HIGH!


    3. Warum auch immer hat Arduino Pin 4 als D1 manchmal des Bit gekippt??? Erst nachdem ich D1 auf Pin 12 umgelegt hatte lief es. Hat da jemand eine Erklärung für? PS/2 Tastatur nutzt Pin 3 als IRQ / CLK nd Pin 11 als Data.


    1+2 hatten mich bestimmt 2-3h gekostet - bis ich die +5V an Pin 1 messen wollte - aber da war nichts.. aber an Pin 9 - daher bin ich dann auf die andere Belegung gekommen.


    3. hat mich nochmal 1-2h gekostet.


    Dann lief es kurz - alles prima. Nachdem ich dann meine externe USB Verbindung (zum programmieren + 5V Versorgung) abgeklemmt hatte und die 5V von Pin 9 zum Arduino gelegt habe - ist mein Arduino anscheinend gestorben??! Mist! Warum?


    Serielle IF wird noch erkannt, Arduino dahinter nicht mehr.. :( Hochladen schlägt fehl..


    War mein letzter freier Uno - also noch schnell einen bestellt.. wenn der da ist, gehts weiter.. werde dann aber vorerst lieber mit externer 5V Versorgung arbeiten..


    Daher bitte alles hier mit VORSICHT geniessen. Man kann sich sicher seinen MFA/Videokarte/UNO zerschiessen!


    Arduino Code ist im zip.


    Peter

    • Official Post

    Warum auch immer hat Arduino Pin 4 als D1 manchmal des Bit gekippt??? Erst nachdem ich D1 auf Pin 12 umgelegt hatte lief es. Hat da jemand eine Erklärung für?

    D1 ist das TX fuer den USB Port. Auf jeden Fall beim Uno und wahrscheinlich bei den meisten anderen auch.

    Ist aber eigentlich auf dem Bestueckungsdruck erkennbar.


    Nachtrag: Das mit D1 hatte ich falsch verstanden. Vergiss es also.

  • Nein. D1 aus Sicht der Tastatur war auf Arduino Pin 4! Nicht auf 1 oder 0, denn die sind von der seriellen Schnittstelle belegt..


    Also als ich Pin 4 genutzt hatte ist warum auch immer dort das Bit von 1 auf 0 gekippt. Dort lag Datenpin 1 der Tastatur. Daher wurde aus o ein n... Nachdem ich das auf Pin 12 gelegt hatte, war der Spuk weg.


    Peter

    • Official Post

    Hast du mal geschaut, ob die PS2Keyboard Lib den D4 evtl. benutzt.

  • Eine offizielle Arduino lib sollte NIEMALS Pins nutzen die nicht im Header deklariert werden.


    Hatte noch einen Mega da. Kurz geflasht - läuft. D1 wieder von Pin 12 auf Pin 4 gelegt - läuft ohne Probleme.

    Nur mit der Versorgung über Pin 9 vom ASCII Stecker klappt es nicht.. es werden sofort 'Zeichen' empfangen etc.. kann auch sein, das der Videokarte dann der Saft ausgeht..? Werde ich aber weiter keine Zeit investieren..


    Nun mit externer Versorgung über USB Stecker geht es so wie es soll.. das soll für die Fälle wo keine original/passende ASCII Tastatur vorhanden ist, reichen.


    Wenn der neue UNO da ist, werde ich das mit Pin 4 auch dort nochmal testen.. und dann wird der völlig unterforderte Mega wieder erlöst.


    Peter

    • Official Post

    Eine offizielle Arduino lib sollte NIEMALS Pins nutzen die nicht im Header deklariert werden.

    Je nachdem wie die Pins in der Hardware, also innerhalb des Microcontrollers, verschaltet sind oder Abhaengigkeiten haben, kann man das evtl. gar nicht verhindern.

    Hier hilft nur RTFM !

  • RTFM habe ich schon. Für alle anderen:


    https://playground.arduino.cc/Main/PS2Keyboard

    https://www.instructables.com/…-PS2-Keyboard-to-Arduino/

    https://github.com/PaulStoffre…ob/master/PS2Keyboard.cpp



    Da wird kein anderer Pin als der Datapin und der Clockpin genutzt!


    Peter

    • Official Post

    Du machst es dir etwas einfach.

    Mit pinMode und digitalWrite werden keine Interrupts bearbeitet.


    Schau dir mal das Ende der PS2Keyboard::begin() an:


    Code
      head = 0;
      tail = 0;
      if (irq_num < 255) {
        attachInterrupt(irq_num, ps2interrupt, FALLING);
      }


    Im attachInterrupt() bzw. in der entsprechenden Interrupt-Verarbeitung musst du schauen und auch alle Abhaengigkeiten beachten.


    Ich hatte vor einiger Zeit mal mit der SoftwareSerial Lib gearbeitet. Da konnte ich einige Pins wegen internen Interrupts und Timer nicht benuzten.

    Damals hatte ich mich aus Neugierde durch alle Sourcen durch gekaempft.

  • (at)funkenzupfer: Sorry. Ich weiß nicht, warum du nun zum dritten Male vorschlägst, ich möge den Sourcecode der Lib lesen?


    PS/2 hat neben GND und +5V genau EINEN Data-Pin und EINEN Clock-Pin. Der Cock-Pin muss am Arduino an einem Pin sein, der einen IRQ auslösen kann - das ist die einzige Bedingung! Der Data-Pin kann sonstwo liegen. Je nach Arduino-Modell kann man daher folgende Clock-Pins nehmen (aus Header der Lib/Example):


    Da ich einen UNO verwendet habe, bleiben also NUR Pin 2 oder 3. Ich hatte 3 genommen.

    (Nur bei einem Teensy 1.0 könnte man auch Pin 4 nehmen - trifft hier aber ja nicht zu)


    Von irgendwelchen weiteren Pins außer der zweien ist nirgendwo eine Rede. Im Lib-Code sind die Abhängigkeiten zwischen gewähltem Pin und Arduino Modellen abgebildet.


    Und da es mit dem Mega ja nun auch klappt mit Pin 4 (reine Kosmetik - Pin 12 hätte es auch getan..)... weiter sehe ich wenn der neue UNO da ist..


    Solltest du aber KONKRETE Hinweise haben, das wie auch immer Pin 4 hier von der Lib doch genutzt wird, wenn Clock-Pin=3 und Data-Pin=11 so wie in meinem Code, so lerne ich gerne dazu.


    Grundsätzlich hast du aber Recht, das man sich im Zweifel die komplette Lib ansehen muss!


    --


    (at): Joe_IBM: Ich Hammel!! Und ja - jetzt weiß ich, warum der UNO gestorben ist! Irgendwie hatte ich wohl im Laufe der Stunden dann Pin 9 und Pin 11 durcheinander gebracht. Und +12V auf einen UNO zu geben, wo er +5V haben möchte ich keine gute Idee :(


    Ich hatte auch sogar vorher gemessen mal, als ich die Steckkabel am Stecker angelötet hatte und da waren auch 5V - aber an dem Pin unter Pin 10 = Pin 11.

    Argh! Mist. Zu viele Kabel - zu viele Stunden..


    Aber: Dann werde ich mal schnell das Kabel von Pin 9 auf Pin 11 wieder umlöten und dann nochmals messen und probieren, ob es dann ohne externes Netzteil klappt..

    EDIT: Gerade probiert (vorher gemessen 4.9V) auf Pin 11 des Steckers auf Pin gegenüber Pin 77 beim Mega (dort sollen 5V liegen lt. Plan) (brauche Buchse - sonst hätte ich auch noch andere Pins nehmen können). Leider klappt das NICHT!?


    Peter

  • Wenn man keine Tastatur hat, aber eine Video/ASCII Karte, kann man sicher eine PS/2 etc. Tastatur mittels PIC/AVR/Arduino anschließen.

    Dazu sollen diese Info's dienen.


    Peter

    Hallo Peter...


    ich habe mit Interesse diesen Thread gefunden.. weil ich genau diese Art ASCI Tastatur "vor meiner "Nase liegen habe.

    Die hat genau die Tasten wie abgebildet angeordnet und auch rechts oben auf dem Bild zu sehen diese 16 Kontakte-Stifte.


    Frage woher stammen bitte die beiden ersten Bilder aus Thread #1 ?


    Ich möchte diese Tastatur an meinen Apple1-Clone anschliessen...

    und muss nun schauen, was "Apple" kompatibel ist...


    => sicherlich als erstes die "Strobe" Zeit, wo der Tastatur den Impuls erzeugt,.. wenn der nicht passt,.. kommt ja nichts an..


    =>Ich frage wegen den Bildern. weil Apple kein "ENABLEI+II" kennt ?? muss da ein 5V Signal drauf, damit

    die Tastatur "dauernd" funktioniert (und wofür ist "I" bzw. "II" ??)


    und für was steht genau AKD ?? ??


    die Apple Tastatur hat noch eine OE (Eingang),.. ist das einfach Enable1 ?


    Danke VG Micha

    Meine Sammlung: CBM4032,CBM610,VIC20, C16, Cplus, C64, SX64,C128D, LT286-C, Amiga 1000, C= PC1+10+20+40

  • und hier der fertige Tastatur-Adapter von PeterSieg :

     


    ..aber du suchst ja eigentlich eine hübsche echte Tastatur für deinen Apple - in dem Fall also:

    https://www.ebay.de/itm/224456…a5663d:g:6xAAAOSwu15gmJa0

    ..da ist immerhin ne Tastatur dabei ..is aber nochmal richtig teuer..