Matrix-Tastatur an PicoMOD3

  • Wir möchten eine Matrix-Tastatur an das PicoMOD3 anschließen und suchen dafür eine möglichst einfache Lösung für Hardwareseite und Softwareseite.


    Es wurde uns empfohlen, die Tastatur an den J5 anzuschließen, wodurch sie mit dem aktuellen Kernel wie eine Standardtastatur angesprochen werden kann.


    Allerdings habe ich grade in der Dokumentation PicoMOD3-StartInterface gelesen, dass beim J5 die Pins 17-24 gar nicht verbunden sind.


    Ist das korrekt? Wie kann ich die Matrix-Tastatur dann anschließen?


    MfG, W. Böck

  • Hallo,
    auf dem J5 liegen einige IOs (5 Stück). Mit Hilfe des Schaltplans (im "Schematic" Ordner der SKit CD) können Sie weitere IOs für die Matrix auswählen. Achtung, wenn diese IOs von anderen Treibern verwendet werden, müssen Sie diese Treiber deaktivieren!
    Wieviele Tasten hat Ihre Matrix?
    Welche IOs außer die vom J5 kommen für Sie noch in Frage?
    Im "Device Driver Document" finden Sie dazu Tabellen und ein Beispiel.

    F&S Elektronik Systeme GmbH
    As this is an international forum, please try to post in English.
    Da dies ein internationales Forum ist, bitten wir darum, Beiträge möglichst in Englisch zu verfassen.

  • Unsere Tastatur hat 24 Tasten (3 Reihen auf 8 Spalten).


    Damit wäre der J5 wohl leider ungeeignet, oder?



    Ihr Kollege Bäder hatte uns einmal nahegelegt, die Tastatur über den I²C Bus (J5 Pin 10 und 11) anzusprechen und den Baustein PCA9555 zu verwenden.
    Dafür haben wir auch schon einen Hardware-Anschluss angefertigt, allerdings klappt die Software-Ansteuerung nicht.
    Ich hatte dazu nur die VB Klasse NI2CFile aus einem Beispiel (siehe Link) in C# umgeschrieben. (ohne etwas anzupassen)
    http://fs-net.de/phpBB2/viewtopic.php?p=953


    Der FS-Bus wäre auch noch frei.

  • Hallo,
    Matrixtastaur via:
    - Matrixtastaturtreiber: Hier können Sie die 5 IOs von J5 verwenden und noch weitere auswählen, wenn es Ihre HW Konfiguration zulässt -> siehe Schaltplan SKit auf CD (siehe mein letzter Betrag oben).
    - I2C Treiber: Das ist eine gute Möglichkeit falls zu wenige IOs zur Verfügung stehen. Allerdings müssen Sie die Tastendrücke dann selbst auswerten. Der NI2C Treiber für die PicoMOD3 wird grade fertiggestellt. Ohne Treiber sollte schon das "CreateFile" nicht funktionieren.

    F&S Elektronik Systeme GmbH
    As this is an international forum, please try to post in English.
    Da dies ein internationales Forum ist, bitten wir darum, Beiträge möglichst in Englisch zu verfassen.

  • Die Lösung mit dem Matrixtastaturtreiber wäre wohl komfortabler.


    Könnten wir dazu also z.B. die Pins 1-11 von J5 verwenden?


    Wie müsste man dass dann Softwareseitig konfigurieren?

  • Hallo,

    Quote

    Könnten wir dazu also z.B. die Pins 1-11 von J5 verwenden?


    Prinzipiell können Sie diese Pins verwenden (NI2C: IO11,12 und NSPI: IO64-67). Allerdings können Sie diese Schnittstellen dann später nicht mehr verwenden! Wenn feststeht wie ihre HW aussieht, sollten Sie die Wahl der IOs an diese Gegebenheiten anpassen, auch wenn Sie ggf einige Leitungen anlöten müssen.

    Quote

    Wie müsste man dass dann Softwareseitig konfigurieren?


    a) Sie müssen dafür sorgen das die IOs nicht von anderen Schnitstellen verwendet werden. Einen Treiber können Sie unter HKLM\Drivers\BuiltIn\<Driver> z.B. mit "ndcucfg"

    Quote

    reg open \Drivers\Builtin\<Driver>
    reg set value Flags dword 4
    reg save

    deaktivieren. In Ihren Fall müssen Sie das nicht ausführen weil z.Z. I2C und SPI noch nicht im Standardkernel enthalten sind.
    b) Sie müssen mit Hilfe der Device Driver Dokuments, Abschitt "Matrix-Keyboard" die gewünschten Einstellungen durchführen (siehe example 1 und table 4).

    F&S Elektronik Systeme GmbH
    As this is an international forum, please try to post in English.
    Da dies ein internationales Forum ist, bitten wir darum, Beiträge möglichst in Englisch zu verfassen.

  • Teilweise hat das geklappt, aber es gibt noch ein Problem.



    Die ScanCodes werden laut der Debug Ausgabe richtig erzeugt:


    Tastenreihe 1 erzeugt KBD: ScanCode: 0x00000001 bis 0x00000008
    Tastenreihe 2 erzeugt KBD: ScanCode: 0x00000011 bis 0x00000018
    Tastenreihe 3 erzeugt KBD: ScanCode: 0x00000021 bis 0x00000028


    Allerdings funktioniert das Umwandeln in die Tastencodes nicht richtig.


    Die Tastencodes werden offenbar nicht richtig aus der Registry gelesen.
    (\hardware\devicemap\keybd\matrix\map\hardware)


    Das Fehlverhalten ist irgendwie unlogisch, aber konsistent und reproduzierbar.
    Es macht z.B. auch einen Unterschied, in welcher Reihenfolge man die Registryeinträge macht!



    Anm.: Als Matrix Keyboard Type habe ich übrigens 16 eingestellt, wie im Beispiel.
    Wert 19 liefert das gleiche Ergebnis.
    Werte 1 und 3 liefern ganz falsche Ergebnisse.




    Beispielkonfiguration:

    Code
    1. !>reg open \hardware\devicemap\keybd\matrix\map
    2. OK
    3. !>reg enum
    4. OK -> reg enum key \
    5. OK -> reg enum value \
    6. 00 "2"=dword:3 \
    7. 01 "1"=dword:2 \
    8. OK
    9. !>


    Ergebnis:
    Taste 1 erzeugt ESC, so als ob man keine Zuweisung gemacht hätte.
    Taste 2 erzeugt eine 2, funktioniert also korrekt.


    Wenn nur Taste 1 konfiguriert ist, also man das Mapping von Taste 2 entfernt, funktioniert Taste 1 korrekt.




    Seltsamerweise verhält es sich anders, wenn die Registryeinträge in einer anderen Reihenfolge vorliegen:

    Code
    1. !>reg open \hardware\devicemap\keybd\matrix\map
    2. OK
    3. !>reg enum
    4. OK -> reg enum key \
    5. OK -> reg enum value \
    6. 00 "1"=dword:2 \
    7. 01 "2"=dword:3 \
    8. OK
    9. !>



    Ergebnis:
    Taste 1 erzeugt eine 1.
    Taste 2 erzeugt auch eine 1.



    Ich habe auch schon Versuche mit vier belegten Tasten gemacht, aber das Verhalten wurde dann noch unlogischer.




    Habe ich irgendwo eine falsche Einstellung gemacht, oder gibt es evtl. noch ein Problem mit dem Matrix Treiber?




    P.S. zur DeviceDriver Doku:
    1) Aus dem Wert Matrix Keyboard Type werde ich nicht ganz schlau.
    Auf Seite 13 sind die Werte 0, 1, 3, 17 und 19 beschrieben.
    Im Beispiel auf Seite 25 wird allerdings der Wert 16(?) verwendet.
    Offensichtlich ist es ein Bitmuster, aber wofür steht dann das 1er-Bit?


    2) Nur so am Rande:
    Im Beispiel auf Seite 25 werden die Codes 1, 2, 16 und 27 gemappt.
    Wenn ich mich nicht irre, sollten das aber die Codes 1, 2, 17 und 18 sein.

  • Hallo,
    wir werden das beschriebene Verhalten kurzfristig untersuchen und Sie dann hier informieren.

    F&S Elektronik Systeme GmbH
    As this is an international forum, please try to post in English.
    Da dies ein internationales Forum ist, bitten wir darum, Beiträge möglichst in Englisch zu verfassen.

  • Die Angelegenheit ist leider durch laufende Projekte vorzögert worden. Wir werden die Priorität erhöhen um Ihnen mittelfristig eine Lösung anzubieten. Wir werden Sie dann hier informieren.

    F&S Elektronik Systeme GmbH
    As this is an international forum, please try to post in English.
    Da dies ein internationales Forum ist, bitten wir darum, Beiträge möglichst in Englisch zu verfassen.

  • Guten Tag Herr Brandt,
    wir selbst verwenden zum Testen einen Eigenbau (Schaltplan siehe HW Doku). Von Kunden weiß ich, das z.B. von Hoffmann + Krippner sehr anspruchsvolle Tastaturen anbietet (http://www.tastatur.de/D/index.php).

    F&S Elektronik Systeme GmbH
    As this is an international forum, please try to post in English.
    Da dies ein internationales Forum ist, bitten wir darum, Beiträge möglichst in Englisch zu verfassen.

  • The problem with the matrix keyboard driver is solved.
    Please download new image NKP3_CF35_090406 from the download area.
    We have also corrected the documentation "Device Driver".
    Regards

    F&S Elektronik Systeme GmbH
    As this is an international forum, please try to post in English.
    Da dies ein internationales Forum ist, bitten wir darum, Beiträge möglichst in Englisch zu verfassen.

  • Hallo Zusammen,


    ich bin dabei ein eigenes BaseBoard für die PicoMod3 zu entwickeln.
    Was ich nicht verwenden werde ist FS-Bus und CF. Ich benötige JTAG nicht für meine Application.
    Ob es benötigt wird für das PicoMod3 Modul ist mir noch nicht klar. Weis das jemand?


    In Sache Hardwaretasten benötige ich 6 bis 9 Tasten.
    Was währe für mich bitte der beste Weg?


    Die letzte Nachricht von Herrn Frölich über den Treiber NKP3_CF35_090406, bezieht sich das auf einen I2C Treiber für Matrix Tastatur?


    Gruß Kostas

  • The device driver for matrix keyboard is well suited for your task with 9 keys, and Mr. Frölich is talking about this matrix driver. This is a driver using the I/O ports of the PicMOD3, not I2C. Please refer to the latest device driver documentation for PicoMOD3.


    Regards,


    H. Keller

    F&S Elektronik Systeme GmbH
    As this is an international forum, please try to post in English.
    Da dies ein internationales Forum ist, bitten wir darum, Beiträge möglichst in Englisch zu verfassen.

  • Quote from "froelich"

    The problem with the matrix keyboard driver is solved.
    Please download new image NKP3_CF35_090406 from the download area.
    We have also corrected the documentation "Device Driver".
    Regards


    Hello, I would like to test the image, but could not find where to download it from the FS-net.de homepage in the downloads section.


    Am I looking in the wrong place?