Header MSX | Pin | Función | Puerto Teensy++ 2.0 (AT90USB1286) |
---|---|---|---|
8 | Y0 | Input pullup con Interrupt | D0 |
9 | Y1 | Input pullup con Interrupt | D1 |
19 | Y2 | Input pullup con Interrupt | D2 |
14 | Y3 | Input pullup con Interrupt | D3 |
15 | Y4 | Input pullup con Interrupt | E4 |
13 | Y5 | Input pullup con Interrupt | E5 |
21 | Y6 | Input pullup con Interrupt | E6 |
6 | Y7 | Input pullup con Interrupt | E7 |
5 | Y8 | Input pullup con Pin Change Interrupt | B0 |
20 | X0 | Output | C0 |
11 | X1 | Output | C1 |
18 | X2 | Output | C2 |
7 | X3 | Output | C3 |
16 | X4 | Output | C4 |
12 | X5 | Output | C5 |
10 | X6 | Output | C6 |
17 | X7 | Output | C7 |
Todos los pines responden tanto a falling como raising edges. Algo que es importante si queremos evitar caracteres indeseados, sobre todo en BASIC. Además que también es necesario si la aplicación que estemos ejecutando no usa el BIOS para leer la matriz del teclado.
Saludos!
---- POST ORIGINAL, desactualizado! -----
Hola, soy nuevo. Venía a compartir este proyecto, a ver si hay alguien interesado en ayudar probando y desarrollandolo. Está funcionando aunque con algunos problemas, para los cuales me vendría muy bien algo de ayuda desinteresada (es un proyecto libre a fin de cuentas).
https://github.com/dc740/matrix-kbd-simulator
La idea en sí es bastante sencilla. Simula un teclado de matriz usando cualquier Arduino de 16Mhz (o más).
La conexión es bastante simple y no necesita componentes externos (quizás un puerto PS2 hembra si no quieren cortar el cable del teclado)
Sólo necesita que saquemos 8 cables desde la placa de la MSX.
Desde el S3527, en el header de conexión a teclado (el de 24 pines, que incluso están numerados en la placa):
(removido pinout original que estaba aquí)
Como verán son 8 puertos de output... 8 bits... por los que en el Arduino habrá que usar un puerto entero para estos, así es más fácil.
Para el puerto PS2, es la conexión estandar a un Arduino. Un puerto de datos, uno de clock, Vcc y ground.
Características:
* permite conectar un teclado PS2
* Permite tipear más rápido de lo que lee basic, almacena las teclas y las va enviando una en una.
Problemas actuales:
* a veces se queda presionada alguna tecla (pierde el release)
* por algún motivo sólo funciona en BASIC. Cuando inicio algún cartucho no funciona. (AYUDA!!!)
Principio de funcionamiento:
* la MSX lee la matriz cada (1/(refresco video)), es decir, cada 20ms en 50hz.
* El S3527 recorre la matriz con pulsos de 17,666us para cada columna. Son 9
* El arduino lee el primer pulso y va cambiando la salida del puerto que hayamos elegido para simular que las teclas están presionadas.
* La primer columna hay que setearla un poco antes porque el arduino tarda 3,5us en setear el output luego de una interrupción, y no es lo suficientemente rápido.
* El resto de las columnas sólo es cuestión de establecer bien los timings.
Espero que les guste, y sobre todo... que les interese ayudar.
Saludos!