AVR USB Terminal Keyboard

  • Hallo,


    am Wochenende wollte ich eine Tastatur ELZET-80 aus der Z80 Zeit an meinem PC anschließen.
    Also habe ich gesucht und auch das 26 Jahre alte Handbuch gefunden, die Tastatur wird von einem Intel 8048 dekodiert und liefert 7-Bit parallel, serial TTL und 20mA TTL Pegel mit 9600 Baud 8/None/1.
    Diese Tastatur wollte ich am PC, der nur PS/2 oder USB Anschlüsse hat, betreiben.


    Das passende Projekt für einen AVR µP ist das Terminal Keyboard.


    Link: http://hobby-electrons.sourcef…ojects/terminal-keyboard/


    Die Firmware für 56700 Baud konnte ich von einem atMega48 auf den atMega8 und den atTiny2313 portieren und so auf meine AVR CDC-232 Hardware aufsetzten.


    Und was soll ich sagen, man kann mit einem Terminal oder über den PC und einem Terminalprogramm Tastatureingaben an einen zweiten Rechner senden.


    Hier noch einige Bilder und die neue Firmware für eigene Experimente !


    Weiterführende Links:
    - http://www.qrpforum.de/index.p…ad&postID=49882#post49882
    - http://www.qrpforum.de/index.p…ad&postID=49888#post49888
    .

  • Hallo,


    super Projekt! Das liefert mir eine super Vorlage für mein eigenes! Danke dir!


    Nun schwant mir auch, wieso das damals bei mir einfach nicht geklappt hat: Ich habe vergessen den EEPROM zu brennen. Ich komme mir gerade vor, wie ein Vollidiot. :thumbup:

  • Hallo Jan,


    super wenn Du damit etwas anfangen kannst.


    Was meinst Du mit

    Zitat

    Ich habe vergessen den EEPROM zu brennen.

    73 de Uwe
    DC5PI

  • Oh tut mir Leid, der wird bei dem CDC Stack des USB-V gar nicht gebraucht. Ich habe jedoch eine Liste mit verfügbaren Tasten im EEPROM abgelegt gehabt. Den habe ich natürlich vergessen zu brennen, weshalb (egal ob eine Taste gedrückt war oder nicht) immer ein falsches Ergebnis an den PC gesendet wurde!


    Hätte ich die Liste in den EEPROM des AVR's gebrannt, hätte es funktioniert :)


    Ich bin ein großer Fan deiner Projekte, weil ich bei fast jedem deiner kleinen Projektvorstellungen etwas lernen kann :thumbup:

  • Moin moin,



    ich habe inzwischen die Attiny2313- Version des USB Terminal Keyboard aufgebaut. Da sie die Zeichen entsprechend der US- Keyboard- Belegung ausspuckte (also Z und Y vertauscht, Slash statt Minus usw.) , habe ich im Quellcode herumgepfuscht und die Codetabelle auf deutsche Verhältnisse angepasst. Vielleicht kann jemand die geänderte Version gebrauchen.




    Ein Problem habe ich jedoch: unter Linux funktioniert das Gerät prima. Unter Windows wird zwar der HID- Treiber installiert, aber dann kommt die Fehlermeldung "Kann das Gerät nicht starten (Code 10)".


    Das Referenzprojekt "EasyLogger" von obdev.at, das auch ein HID- Keyboard emuliert, funktioniert jedoch einwandfrei unter meinem Windows.


    Auf den Micro$oft- Support- Seiten habe ich nur unbrauchbare Ratschläge gefunden. Daher würde mich interessieren, ob jemand das Terminal Keyboard unter Windows ans Laufen bekommen hat.


    73,
    Ralf

  • Nach einigen Stunden Herumgefummels (als Linux- Nutzer weiss ich, dass man mangelndes Fachwissen in gewissem Umfang durch Hartnäckigkeit ausgleichen kann) funktioniert die Hard- / Software nun auch unter Windows.


    Ursache war ein unzutreffender Wert in usbconfig.h :
    Es stand 52 drin; korrekt ist 35:


    #define USB_CFG_HID_REPORT_DESCRIPTOR_LENGTH 35


    Linux war das wurscht, Windows ist deswegen mit einer nichtssagenden Fehlermeldung ausgestiegen.



    Ich habe ausserdem den Mega8- Schaltplan geändert, weil in den neueren Softwareversionen die USB- DMINUS- Leitung von Port D4 auf Port D3 umgezogen ist und habe einen Schaltplan für die AtTiny2313- Variante beigefügt. Die Pegelwandlung erledigt an Stelle des MAX232 ein simpler NPN- Transistor.



    Den Serial- Keyboard- Wandler finde ich deshalb so interessant, weil man damit Messwerte damit direkt in eine PC- Anwendung schreiben kann, z.B. kann man mit einem weiteren Mikrocontroller (der in schlichtem, verständlichen BASCOM programmiert ist) Analogwerte messen, als serielle Daten ausgeben, und über den Serial- Keyboard- Wandler spaltenweise in ein Excel- (oder OpenOffice-Calc-) Datenblatt schreiben lassen.


    Im Excel- Formaular kann man dann allerlei Berechnungen anstellen.


    Klingt umständlich, hat aber den Vorteil, dass man die Aufgabe statt in krypischem C- Code in BASCOM und mit Excel- Formeln lösen kann, was nicht nur mir leichter fallen dürfte ;) .


    Ralf





    PS: Danke an DE508, dass er die Schaltung hier vorgestellt hat; ich glaube, ich werde viel Freude daran haben.

  • Hallo Ralf,


    danke für die Weiterentwicklung, ich komme nicht dazu das jetzt zu testen.
    Die Problemlösung hätte ich auch so gemacht.

    73 de Uwe
    DC5PI

  • Hallo Uwe,


    ich hoffe ja, dass es bei Dir auch funktioniert (habe es nicht nur auf meinem Rechner, sondern auch auf eienr "jungfräulichen" Windows- Kiste auffer Arbeit getestet), aber es wäre trotzdem nett, wenn Du Dir die Änderungen im Quellcode anguckst.


    Da ich die Schaltung so nützlich finde, werde ich auch ein Artikelchen für Burhard Kainkas Website http://www.elektronik-labor.de schreiben.


    73,
    Ralf

  • Moin moin,


    die Version vom 14.3.2012 hatte noch kleinere Mängel


    - die Erkennung von ANSI- Escape- Codes für die Cursorsteuerung funktionierte nicht mehr
    - die generelle Auswertung der Controlzeichen CTRL-A bis CTRL-Z führte zu sonderbaren Effekten; deshalb habe ich die meisten totgelegt


    Eine neue Version gibt es in einem Beitrag, der inzwischen auf Burkhard Kainkas Website erschienen ist:


    http://www.elektronik-labor.de/AVR/VUSB.html


    Und die alte Idee mit dem Morsekeyboard habe ich auch realisiert:


    http://www.elektronik-labor.de/AVR/Morseterminal2.html


    73,
    Ralf