Autor Tema: Proyecto: Emulación Teclado PS/2 con PIC (Engañe a su PC y dele gato por liebre)  (Leído 70733 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado aitopes

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5100
    • uControl
Re: Proyecto: Emulación Teclado PS/2 con PIC (Engañe a su PC y dele gato por lie
« Respuesta #30 en: 18 de Diciembre de 2006, 09:37:23 »
Bien!
Lo mio sera mas que sencillo: 10 o 12 pulsadores, y un bucle leyendolos...cuando se pulse alguno, enviar el codigo al puerto, y a cruzar los dedos....;)
Voy a leer todo para ver el tema de los tiempos, etc.
Gracias!
Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7918
Re: Proyecto: Emulación Teclado PS/2 con PIC (Engañe a su PC y dele gato por lie
« Respuesta #31 en: 18 de Diciembre de 2006, 09:41:19 »
A ver.....RedPic, corrigeme si estoy muy equivocado:

¿Seria posible usando lo expuesto en este hilo hacer una interfaz que "traduzca" la pulsacion de varios pulsadores robustos a "golpes de tecla" en la PC?

Tengo muchas ganas de armar una maquina tipo "fichines" con el MAME, con un mueble y todo, y la parte de los controles me tenia medio complicado...pero si se puede engañar al ordenador que esta dentro de la caja y hacerle creer que se estan pulsando teclas (las asignadas por el MAME) mientras que en realidad se estan machacando brutos e irrompibles pulsadores industriales, seria la ostia! :-/

Es posible?!?!? :shock:

Que es el MAME??
Obviar respuestas groseras ... :D :D
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado aitopes

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5100
    • uControl
Re: Proyecto: Emulación Teclado PS/2 con PIC (Engañe a su PC y dele gato por lie
« Respuesta #32 en: 18 de Diciembre de 2006, 09:49:04 »
Hola!

Micro Arcade Machine Emulator es un soft que se consigue en varios sabores (win, linux, dos, etc) que permite emular el hard de los "fichines", esas maquinas recreativas de los 80-90. Soporta casi 2000 juegos, y para jugar solo hace falta una PC pequeña, este soft gratis y la ROM del juego que quieras. Por ejemplo, el PAC MAN ocupa unos 8 kb. La imagen y sonidos que ves en la pantalla son exactos a los originales....de hecho, estas usando el programa original que esta corriendo en una maquina virtual.
Lo que voy a hacer es el mueble para esconder la compu dentro, y hacerme el bocho de que tengo una de las maquinas originales....prometo mostrar resultados, y si hay interes, abrir un hilo e ir mostrando resultados.

Saludos!
Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5552
    • Picmania by Redraven
Re: Proyecto: Emulación Teclado PS/2 con PIC (Engañe a su PC y dele gato por liebre)
« Respuesta #33 en: 18 de Diciembre de 2006, 09:50:33 »
MAME significa Multiple Arcade Machine Emulator ... Espacio Latino  :D






Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado mariofer

  • PIC10
  • *
  • Mensajes: 11
Re: Proyecto: Emulación Teclado PS/2 con PIC (Engañe a su PC y dele gato por lie
« Respuesta #34 en: 18 de Julio de 2008, 19:57:46 »
Lo que voy a hacer es el mueble para esconder la compu dentro, y hacerme el bocho de que tengo una de las maquinas originales....prometo mostrar resultados, y si hay interes, abrir un hilo e ir mostrando resultados.


Si Ariel, hay bastante interes de mi parte! has concluido el proyecto?
Me interesaria mucho ver como has implementado lo de leer pulsadores y enviar el codigo correspondiente a una tecla al PC.
Saludos!

Desconectado juasan11

  • PIC10
  • *
  • Mensajes: 8
Re: Proyecto: Emulación Teclado PS/2 con PIC (Engañe a su PC y dele gato por liebre)
« Respuesta #35 en: 08 de Diciembre de 2008, 10:53:43 »
Buenas redpic. Yo tambien ando haciendo un proyecto similar al tuyo, solo que necesito saber como has hecho para enviar al teclado por que aqui no veo ese codigo.
Estoy haciendo un adaptador braille para teclado y necesito capturar pulsaciones de teclado de 8 en 8 como maximo y reenviarlas con la letra coorespondiente, para el caso de las ocho teclas pulsadas la letra correspodiente es \ (alt gr, \ , suelto \,suelto alt gr),use hace mucho una funcion del amigo nostrico pero esta diseñada con delays y cuando mi adaptador empieza a ir mas rapido se acaba colgando. Estoy trabajando con una funcion hecha a base de un timer, de momento me funciona bien pero me gustaria conocer un poco mejor como lo has hecho tu.

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5552
    • Picmania by Redraven
Re: Proyecto: Emulación Teclado PS/2 con PIC (Engañe a su PC y dele gato por liebre)
« Respuesta #36 en: 08 de Diciembre de 2008, 11:12:41 »
amigo juasan11 lo lamento pero este proyecto no contempla el by-pass entre el PC y el Teclado, solo la emulación del teclado propiamente dicho. Es como el final del viaje y no un punto de parada intermedio.

No sería especialmente complejo rediseñarlo para que se inserte entre ambos pero habría que hacer cambios sustanciales, sobre todo en el tratamiento de las señales, y sospecho que el hardware, tal como está montado, tampoco serviría.

Lo siento.

P.D.: Yo, a nivel de experimentos he hecho por separado ambas partes del problema, éste en el que emulamos un teclado PS/2 (nuetro PIC habla "tecladés")y Ponga un teclado PS/2 en su PIC (vida) en el que leemos un Teclado PS/2 y lo utilizamos desde el PIC (nuestro PIC entiende "tecladés"). Entre ambos está lo que creo que tú quieres hacer.
« Última modificación: 08 de Diciembre de 2008, 11:28:04 por RedPic »
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado juasan11

  • PIC10
  • *
  • Mensajes: 8
Re: Proyecto: Emulación Teclado PS/2 con PIC (Engañe a su PC y dele gato por liebre)
« Respuesta #37 en: 08 de Diciembre de 2008, 11:44:26 »
Muchas gracias por la contestacion.
crees que por tiempo a 20 mhz me deberia dar tiempo a recibir toda la informacion, consultar dentro de la tabla que me he generado en rom y enviar la secuencia de scancodes correcta.
Me explico un poco mejor, tiene dos modos de funcionamiento a selecionar mediante un interruptor de palanca de dos posiciones, tiene que esto es lo que mas me ha sorprendido de tu proyecto el cd 4053, (coincidimos en esto,sorprendente), el pic 16f876 con solo una interrupcion externa dedicada al reloj del teclado, lo alimento a traves del mismo puerto ps/2.
Bueno las dos posiciones corresponden, una al modo teclado normal, (el flujo de datos no pasa por el pic, pasa por el cd 4053),la segunda es el modo braille solo se usan 8 teclas del teclado que con combinaciones de ellas se sacan los 255 caracteres del ascii.(ademas se usan las teclas como tabulador, enter, ctrl, alt,...)
Pues esto funciona bien pero con una persona acostumbrada a este tipo de escritura (suelen escribir mas rapido que una persona normal en un teclado normal), me satura el pic, o eso creo, a veces cuando son secuencias largas se acaba perdiendo algun byte del final, por ejemplo para enviar Á: pulso ´, suelto ´, pulso shift, pulso a, suelto a, suelto shift, alguna vez he perdido suelto shift y se ha quedado en mayusculas o con alt gr y ya no funcionaba nada.

Lo que yo he descifrado es que las interrupciones recibidas despues de que sueltes la primera tecla (que es cuando se pone a comparar con la tabla y a enviar el scan code sacado de la tabla)  cortan la transmision y eso que la transmision no la tengo hecha como aqui si no con  un timer.

Sera posible hacerlo todo con tan solo un pic o me hara falta ponerle dos, uno para recibir y otro para enviar.

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5552
    • Picmania by Redraven
Re: Proyecto: Emulación Teclado PS/2 con PIC (Engañe a su PC y dele gato por liebre)
« Respuesta #38 en: 08 de Diciembre de 2008, 12:23:44 »
Sin tener muy claro cuál es la secuencia correcta puedo pensar en voz alta ...

Los 20 Mhz deberían ser suficientes, quizás habría que ver la rutina que consulta la tabla por si es posible hacerla mas rápida y eficiente, que el 90% de las veces es posible,.

Y en cualquier caso antes que poner dos PIC's, por lo engorroso, es preferible utilizar un 18F2550 o 4550 y hacerlo correr a 48Mhz con el mismos cristal de 20Mhz, con lo que debería haber tiempo mas que de sobra para ambas funciones y aún para otras si fuera necesario.

Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado juasan11

  • PIC10
  • *
  • Mensajes: 8
Re: Proyecto: Emulación Teclado PS/2 con PIC (Engañe a su PC y dele gato por liebre)
« Respuesta #39 en: 08 de Diciembre de 2008, 12:39:10 »
este es el codigo destinado a entrar en las tablas,

void compara_pul(void){
   int8 w=0,pulsa=0;
   for(w=1;w<=g;w++){
      if((salida[w]!=0xF0)&&(salida[w-1]!=0xF0)&&(salida[w]!=0x00)){     //        descifro un pulsado dentro del vector donde se almacena lo recibido
         if(salida[w]==0x1C){//a
            pulsa=pulsa|0x80;                                         // con este sistema genero una especie de codigo ascii
         }
         else if(salida[w]==0x1B){//s
            pulsa=pulsa|0x40;
         }
         else if(salida[w]==0x23){//d
            pulsa=pulsa|0x20;
         }
         else if(salida[w]==0x2B){//f
            pulsa=pulsa|0x10;
         }
         else if(salida[w]==0x3B){//j
            pulsa=pulsa|0x08;
         }
         else if(salida[w]==0x42){//k
            pulsa=pulsa|0x04;
         }
         else if(salida[w]==0x4B){//l
            pulsa=pulsa|0x02;
         }
         else if(salida[w]==0x4C){//ñ
            pulsa=pulsa|0x01;
         }
      }         
   }
   for(w=0;w<41;w++){
      salida[w]=0;
   }
   x=1;
   
   braille=TABLA[pulsa];            //hay 4 tablas alojadas en rom que tiene los codigos alojados en la posicion de memoria pulsa
   braille1=TABLA1[pulsa];
   acentos=TABLA2[pulsa];
   acentos1=TABLA3[pulsa];      // con estas cuatro variables se entran en la parte de las secuencias de envio, estan todas las posibles hasta las teclas especiales

Como lo podria optimizar
« Última modificación: 08 de Diciembre de 2008, 13:01:35 por juasan11 »

Desconectado Aleix

  • PIC10
  • *
  • Mensajes: 8
Re: Proyecto: Emulación Teclado PS/2 con PIC (Engañe a su PC y dele gato por liebre)
« Respuesta #40 en: 11 de Febrero de 2009, 09:04:31 »
Hola,
En primer lugar felicitar a RedPic por este genial proyecto.
Yo queria comentar un problema que tengo. Necesito hacer que un pic me envie la pulsación de una tecla cada cierto tiempo.
Lo que he hecho es montar un 16F876A en una plaquita a 10Mhz y lo he programado con el codigo que ha colgado RedPic. Al no tener que conmutar de teclado a pic he obiado todo lo referente a este hw y en el main simplemente he hecho que mande una 'a' cada 3 segundo. El HW utilizado simplemente es el conector PS/2 macho con las dos R de 10K de pull-up en el data y el clk (pines RB5 y RB3). Todo el sistema se alimenta de la tension del PC (5V del conector PS/2).
Ahora viene cuando lo conecto al PC (y este con el cursor en un bloc de notas ) en teoria tendria que escribir a    aaaaaaaaaaaaa... etc... y no hace nada... simplemente mi PC se pone a pitar... que puede suceder???

Muchas gracias por todo.
Atentamente Aleix.

Desconectado jhoonyn46

  • PIC10
  • *
  • Mensajes: 21
Re: Proyecto: Emulación Teclado PS/2 con PIC (Engañe a su PC y dele gato por liebre)
« Respuesta #41 en: 14 de Febrero de 2009, 17:18:39 »
buenos dias amigo su proyecto es interesante solo quiero hacer una pregunta porque yo estoy haciendo algo parecido pero con un mouse ps/2 y no se como hacer para que el mouse me funcione en la teoria dice q tiene el mismo fucionamiento del teclado pero no es real porque de verdad no logro hacer que aunque sea me envie datos al pic porq no activa ni su reloj interno, si uste tiene algo que me pueda servir de ayuda espero me lo haga saber yo estoy programando en lenguaje c y estoy usando un pic 16f628a, gracias por todo y espero me pueda ayudar.

Desconectado SavageChicken

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 936
Re: Proyecto: Emulación Teclado PS/2 con PIC (Engañe a su PC y dele gato por liebre)
« Respuesta #42 en: 14 de Febrero de 2009, 19:44:18 »
Hola,
En primer lugar felicitar a RedPic por este genial proyecto.
Yo queria comentar un problema que tengo. Necesito hacer que un pic me envie la pulsación de una tecla cada cierto tiempo.
Lo que he hecho es montar un 16F876A en una plaquita a 10Mhz y lo he programado con el codigo que ha colgado RedPic. Al no tener que conmutar de teclado a pic he obiado todo lo referente a este hw y en el main simplemente he hecho que mande una 'a' cada 3 segundo. El HW utilizado simplemente es el conector PS/2 macho con las dos R de 10K de pull-up en el data y el clk (pines RB5 y RB3). Todo el sistema se alimenta de la tension del PC (5V del conector PS/2).
Ahora viene cuando lo conecto al PC (y este con el cursor en un bloc de notas ) en teoria tendria que escribir a    aaaaaaaaaaaaa... etc... y no hace nada... simplemente mi PC se pone a pitar... que puede suceder???

Muchas gracias por todo.
Atentamente Aleix.

Eso que comentas, sucede cuando tu PIC no envía el tren de datos correcto al PC, seguramente hay algún bit de más o de menos en tu programa.
Recuerda también que la comunicación PC<--->Teclado es bidireccional, cuando conectas un teclado al PC, este último envía una seria de comandos al teclado para inicializarlo (a lo que el teclado debe saber responder), además cuando el PC no entiende algúna tecla enviada por el teclado le pide que se la reenvíe, por otro lado cuando el PC no puede recibir un dato por estar ocupado pone las lineas de clock y data en ciertos nivele lógicos para hacerselo saber al Teclado.
En fin... como verás la cosa no es tan solo enviar una letra "a", sino que debes respetar el protocolo de comunicación para que la cosa ande.
Todo esto te lo comento porque yo implementé un aparatito que se comunicaba con el PC y le mandaba teclas presionadas, y me dio bastante trabajo, al final tube que implementar el protocolo casi completo y recién ahí funcionó bien, antes de eso eran puros pitidos, y en el mejor de los casos funcionaba un rato y luego pitidos nuevamente.

Para que veas de que hablo date una vuelta por este link

Salud  8)
« Última modificación: 14 de Febrero de 2009, 20:34:51 por SavageChicken »
No hay preguntas tontas...
Solo hay tontos que no preguntan.

Desconectado basicline

  • PIC10
  • *
  • Mensajes: 2
Hola maestros.....
Estoy leyendo con gran interes todos los avances que teneis sobre el tema de comunicar un pic a un puerto ps/2 convencional.
Vereis yo no tengo mucha idea, por no decir nada de asembler, tengo alguna nocion de 'c' y para soldar una resistencia y un cristal valgo.
La custion es que necesito montar un circuito el cual a traves de una serie de pulsadores me envie al sistema una serie de teclas predefinidas, la cantidad de pulsadores no deberia de sobrepasar de 8.
Con un 16f84a y un cristas de 44MHz y un manual de Microchip he conseguido enviar letras pero a traves de MsDos, cuando entro en Windows tengo el mismo problema que "jhoonyn46" . He visto el post que proporciona "SavageChicken" y esta muy bien pero no llego con mis conocimientos para modificarlo en base a mis pretensiones, aunque me ha servido para saver que lo que estoy haciendo esta mal.
Os agradeceria muchisimo alguna ayuda para que alguien como yo pueda llegar a buen puerto.
Si "jhoonyn46" lo consigue, yo necesito lo mismo.

Muchas gracias y un saludo

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5552
    • Picmania by Redraven
Aprovecho para comentaros algo sobre este tema ... iba esta mañana en el coche y me acordé del tema del teclado ps/2, tengo media docena de ellos cubriéndose de polvo amontonados uno sobre otro, y pensando en los líos que montamos cada vez que necesitamos un puñetero teclado matricial de 4x4 en lugar de tener todo un teclado de mas de cien teclas por banda, viento en popa a toda vela, no corta el mar sino vuela, un teclado bergantín  ...   :D :D

Me dije yo a mi mismo ensimismado, como mirando para adentro, te voy a hacer unos tecladones como los que usa el ranchero te los comienzo de lana, te los acabo de cuero ...  :D :D  :D :D

Resumiendo y dejándome de poetas y cancioneros, voy a construirme una librería que haga todo el ciclo completo de un teclado ps/2 de forma que si lo conectamos a un PC el puñetero Güindous no se entere de que le estamos dando gato por liebre de verdad, sin necesidad de conectarle un teclado de verdad para que le responda, que el PIC le diga y haga todo el proceso completo.

Ya os iré dando noticias del tema.  :mrgreen:

Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania