Autor Tema: Proyecto : Ponga un teclado PS/2 en su PIC (vida)  (Leído 44204 veces)

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

Desconectado atlasdelcarinakeel

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 277
RE: Proyecto : Ponga un teclado PS/2 en su PIC (vida)
« Respuesta #15 en: 02 de Abril de 2006, 04:27:00 »
Pero yo use un AT89C51 de Atmel. Sonrisa Gigante
Si tienes un problema y tiene solucion, para que te preocupas? y si no tiene solucion, para que te preocupas?

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5552
    • Picmania by Redraven
RE: Proyecto : Ponga un teclado PS/2 en su PIC (vida)
« Respuesta #16 en: 02 de Abril de 2006, 06:40:00 »
Para poder agracederle infinitamente su trabajo, necesito saber quien es el autor
(su Nick en Todopic) de un programa que empieza así :

Codigo:

//-----------------------------------------------------------------------------
// Title:         KEYBOARD_PC_To_RS232.c
// Description:   Interfase entre un teclado convencional tipo AT y un puerto RS232C
// Date:          Abr-2005
// Ver.Rev.:      V01
// Author:        XP8100 (xp8100@gmail.com)
//
//                #Based on the AN AVR313: Interfacing the PC AT Keyboard from ATMEL#
//
//-----------------------------------------------------------------------------



Porque funciona de maravilla. Le he hecho algunas modificaciones para adaptarlo
a mi RRBOARD1 con su PIC 16F628A y, salvo un pequeño detalle, ha salido funcionando
a la primera. (El detalle es que con un Xtal de 4Mhz no va de ninguna manera,
hay que colocarle un Xtal de 20Mhz para que funcione. Imagino que es que la
frecuencia de transmisión del Teclado es demasiado alta para el de 4 y pierde
bits por el camino, pero con el de 20 no se le escapa uno).

Gracias, gracias, gracias a mi desconocido benefactor .... Rebotado Rebotado Rebotado Rebotado

Ahora lo pondré bonito, le añadiré comentarios por doquier y lo dejaré listo para
que hasta el más novato sea capaz de entenderlo (y reproducirlo)

.... ju, jua, jua Muchas risas Muchas risas Muchas risas

¡¡¡ Cómo disfruto !!! Giño Giño Giño

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

Desconectado RaDoN

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1498
RE: Proyecto : Ponga un teclado PS/2 en su PIC (vida)
« Respuesta #17 en: 02 de Abril de 2006, 08:24:00 »
Sonrisa GiganteSonrisa GiganteSonrisa GiganteSonrisa GiganteSonrisa GiganteSonrisa Gigante

Que tio!!! no paras!!! Que más quisiera tener yo tb algo de tiempo libre Llorando
Si juegas contra el mejor, pierdes como los demás.

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5552
    • Picmania by Redraven
RE: Proyecto : Ponga un teclado PS/2 en su PIC (vida)
« Respuesta #18 en: 02 de Abril de 2006, 10:37:00 »
Bueno, lo prometido es deuda. Aquí teneis el programa que nos permite conectar
un Keyboard PS/2 a un PIC.

Solo hago uso de dos hilos, uno debe ser RB0 para podernos aprovechar de su
función de Interrupción Externa, el otro puede ser cualquier pin de Entrada. Yo
he hecho uso del RB3. Como hace falta poner unas resistencias Pull-Up externas
a las lineas de Clock y Data he aprovechado la caracteristica de los PIC que incluye
dichas resistencias de forma programable en los pines del Puerto B, para activarlas
y evitarme así el tener de forma externa.

El teclado envia los códigos de rastreo, los fin de pulsado de tecla (break) y los de
teclas especiales mediante "bytes" de 11 bits start+codigo_8_bits+paridad+Stop
asi que la recogida de estos bits se produce en la interrupción externa, a la que está
conectada la señal de clock. Cada vez que se produce un pulso (negativo) de clock
se lee un bit. Cuando hemos leído los 11 bits en total tenemos un nuevo byte para
procesar. Este byte resulta de haber descartado los que no nos hacen falta y solo
se toman en cuenta realmente los codigo_8_bits de toda la secuencia.

Fijaos que para detectar cada uno de los bits en la Interrupción externa debemos
configurar ésta para que salte en el flaco de bajada ext_int_edge(H_TO_L);

Le dejo al programa los créditos originales de nuestro benefactor anónimo, añadiéndole
solo la modificación realizada por mi. Además he editado la tabla de conversión
poniéndola en columnas para que aparezcan mas compactas y se lea mejor el
código fuente.

<span class="texto_mini">Codigo:</span>[hr /
]
//-----------------------------------------------------------------------------
// Title:         KEYBOARD_PC_To_RS232.c
// Description:   Interfase entre un teclado convencional tipo AT y un puerto RS232C
// Date:          Abr-2005
// Ver.Rev.:      V01
// Author:        XP8100 (xp8100@gmail.com)
//
//                #Based on the AN AVR313: Interfacing the PC AT Keyboard from ATMEL#
//                #Adaptado para 16F628A por Redraven
//
//-----------------------------------------------------------------------------
//
// init_kb()      Inicializa rutina y contadores
//
// decode (char)  Decodifica la pulsación realizada, convirtiendola a un caracter de la tabla
//
// int_ext_isr    Rutina de gestión de interrupciones. Captura los diferentes bit"s
//
//-----------------------------------------------------------------------------
// RB0 - Señal de reloj
// RB3 - Tren de impulsos (11 bit) Start+10101010+Paridad+Stop
//-----------------------------------------------------------------------------
//
// Commment   : Permite conectar un teclado convencional de PC a un entorno
//              gestionado por un PIC 16F877.
//              El actual sistema se define como un primer prototipo, en el que no se realizan
//              acciones concretas asociadas a teclas establecidas.
//              Tampoco se actua sobre los indicadores luminosos del teclado, repetición de teclas, ...
//
//
//
// THIS DOCUMENT IS PROVIDED TO THE USER "AS IS"
//-----------------------------------------------------------------------------
#include "16F628a.h"
#fuses HS,NOWDT,NOPROTECT,NOPUT,NOBROWNOUT,NOLVP
#use Delay(Clock=20000000)
#use rs232(baud=19200, xmit=PIN_B2, rcv=PIN_B1)
#zero_ram
//-----------------------------------------------------------------------------
// Definiciones globales
//-----------------------------------------------------------------------------
unsigned char edge, bitcount;
char got_interrupt;
char interrupt_count;
char status_b3;
#bit INTF_BIT = 0x0B.1 // INTCON BIT 1 = INTF RB0/INT External Interrupt Flag Bit
//-------- Tabla de caracteres correspondientes a la pulsación de la tecla
//-------- en modalidad normal (sin pulsar SHIFT)
unsigned char const unshifted[68][2] = {
0x0d,9,
0x0e,"º", 0x15,"q", 0x16,"1", 0x1a,"z", 0x1b,"s", 0x1c,"a", 0x1d,"w",
0x1e,"2", 0x21,"c", 0x22,"x", 0x23,"d", 0x24,"e", 0x25,"4", 0x26,"3",
0x29," ", 0x2a,"v", 0x2b,"f", 0x2c,"t", 0x2d,"r", 0x2e,"5", 0x31,"n",
0x32,"b", 0x33,"h", 0x34,"g", 0x35,"y", 0x36,"6", 0x39,",", 0x3a,"m",
0x3b,"j", 0x3c,"u", 0x3d,"7", 0x3e,"8", 0x41,",", 0x42,"k", 0x43,"i",
0x44,"o", 0x45,"0", 0x46,"9", 0x49,".", 0x4a,"-", 0x4b,"l", 0x4c,"ñ",
0x4d,"p", 0x4e,""", 0x52,"´", 0x54,"`", 0x55,"¡", 0x5a,13,  0x5b,"+",
0x5d,"ç", 0x61,"<", 0x66,8,   0x69,"1", 0x6b,"4", 0x6c,"7", 0x70,"0",
0x71,".", 0x72,"2", 0x73,"5", 0x74,"6", 0x75,"8", 0x79,"+", 0x7a,"3",
0x7b,"-", 0x7c,"*", 0x7d,"9",
0,0
};
//-------- Tabla de caracteres correspondientes a la pulsación de la tecla
//-------- en modalidad desplazamiento (pulsando SHIFT)
unsigned char const shifted[68][2] = {
0x0d,9,
0x0e,"ª", 0x15,"Q", 0x16,"!", 0x1a,"Z", 0x1b,"S", 0x1c,"A", 0x1d,"W",
0x1e,""", 0x21,"C", 0x22,"X", 0x23,"D", 0x24,"E", 0x25,"$", 0x26,"·",
0x29," ", 0x2a,"V", 0x2b,"F", 0x2c,"T", 0x2d,"R", 0x2e,"%", 0x31,"N",
0x32,"B", 0x33,"H", 0x34,"G", 0x35,"Y", 0x36,"&", 0x39,"L", 0x3a,"M",
0x3b,"J", 0x3c,"U", 0x3d,"/", 0x3e,"(", 0x41,";", 0x42,"K", 0x43,"I",
0x44,"O", 0x45,"=", 0x46,")", 0x49,":", 0x4a,"_", 0x4b,"L", 0x4c,"Ñ",
0x4d,"P", 0x4e,"?", 0x52,"¨", 0x54,"^", 0x55,"¿", 0x5a,13,  0x5b,"*",
0x5d,"Ç", 0x61,">", 0x66,8,   0x69,"1", 0x6b,"4", 0x6c,"7", 0x70,"0",
0x71,".", 0x72,"2", 0x73,"5", 0x74,"6", 0x75,"8", 0x79,"+", 0x7a,"3",
0x7b,"-", 0x7c,"*", 0x7d,"9",
0,0
};
//-----------------------------------------------------------------------------
// Definición de protipos
//-----------------------------------------------------------------------------
void init_kb(void);
void decode(unsigned char sc);
//-----------------------------------------------------------------------------
// Rutina de gestión de interrupciones
//-----------------------------------------------------------------------------
#int_ext
void int_ext_isr(void){
unsigned char data;
   //-------- Los bit 3 a 10 se considerran datos. Paridad, start y stop
   //-------- son ignorados
   if(bitcount < 11 && bitcount > 2){
      data = (data >> 1);
      status_b3 = input(PIN_B3);
      if((status_b3) == 1){
          data = data | 0x80;
      }
   }
   //-------- Todos los bits se han recibido
   if(--bitcount == 0){
      decode(data);
      data = 0;
      bitcount = 11;
      got_interrupt = TRUE;
   }
   got_interrupt = TRUE;
   interrupt_count++;
   disable_interrupts(INT_EXT);
}
//-----------------------------------------------------------------------------
// Main
//-----------------------------------------------------------------------------
void main(void)
{
   delay_ms(100);
   init_kb();
   //-------- Los pins indicados (B0 y B3) son configurados como entradas.
   output_float(PIN_B0);
   output_float(PIN_B3);
   //-------- Activa pullups sobre todos los pins del puerto B.
   port_b_pullups(TRUE);
   //-------- Espera a que se activen.
   delay_us(5);
   //-------- Inicializa las variables usadas por la rutina de interrupción
   //-------- antes de activar las interrupciones
   interrupt_count = 0;
   got_interrupt = FALSE;
   status_b3 = 0;
   //-------- Desde que se activó el modo PULLUPS del puerto B, el estado
   //-------- normal del pin B0 es ALTO. La gestión de la interrupción externa
   //-------- se gestiona cuando se produce un cambio de nivel ALTO a BAJO.
   ext_int_edge(H_TO_L);
   //-------- Asegurarse de que el el bit de flag de la interrupción externa
   //-------- es borrado antes de activar la gestión de dicha interrupción
   //-------- externa.
   INTF_BIT = 0;
   enable_interrupts(INT_EXT);
   enable_interrupts(GLOBAL);
   //-------- Bucle principal.
   //-------- Chequear si se produce alguna interrupción (got_interrupt). Si es así, contar, borrar
   //-------- el flag y esperar 50 ms, reactivando la gestión de las interrupciones
   while(1){
      //-------- Chequear si se produce alguna interrupción (got_interrupt).
      if(got_interrupt == TRUE){
            //-------- Borrar el flag global que se inicio en la rutina de servicio
            //-------- de interrupciones externas.
            got_interrupt = FALSE;
            //-------- Esperar 50 ms para evitar rebotes en los contactos de las teclas.
            //delay_ms(50);
            //-------- Borrar cualquier interrupción producida durante el periodo de espera.
            INTF_BIT = 0;
            //-------- Reactivar interrupciones
            enable_interrupts(INT_EXT);
         } // --- End If ---
      } // --- End While ---
} // --- End MAIN ---
//-----------------------------------------------------------------------------
// Funciones
//-----------------------------------------------------------------------------

//-----------------------------------------------------------------------------
// Inicialización de teclado.
//-----------------------------------------------------------------------------
void init_kb(void){
   //-------- Longitud de la trama para cada pulsación y mensaje de bienvenida
   bitcount = 11;
   printf("

PC AT Keyboard Interface Ver 1.0 by XP8100" );
   printf("

Adpapted for 16F628A by Redpic" );
   printf("

Decoder and Monitoring for 16F628A connected ...


" );
}
//-----------------------------------------------------------------------------
// Decodificación de pulsaciones
//-----------------------------------------------------------------------------
void decode(unsigned char sc){
   static unsigned char is_up=0, shift = 0, mode = 0;
   unsigned char i;

   printf("[%X]",sc); // Monitor de código de rastreo

   //-------- El último dato recibido fue el identificador de Up-Key
   if (!is_up){
         switch (sc){
               //-------- Identificador de Up-Key
               case 0xF0 :
                  is_up = 1;
                  break;
               //-------- SHIFT Izquierdo
               case 0x12 :
                  shift = 1;
                  break;
               //-------- SHIFT Derecho
               case 0x59 :
                  shift = 1;
                  break;
               //-------- ENTER
               case 0x5A :
                  shift = 0;
                  printf("

" );
                  break;
               //-------- Si no es ninguno de los identificadores especiales, procesar
               //-------- pulsación, localizando caracter en tabla de caracteres.
               default:
                  //-------- Pulsación normal
                  if(!shift)
                     {
                        for(i = 0; unshifted[ i ][ 0 ]!=sc && unshifted[ i ][ 0 ]; i++);
                        if (unshifted[ i ][ 0 ] == sc)
                           {
                              printf("<%c>", unshifted[ i ][ 1 ]);
                           }
                     }
                  else
                  //-------- Pulsación + SHIFT presionado
                     {
                        for(i = 0; shifted[ i ][ 0 ]!=sc && shifted[ i ][ 0 ]; i++);
                        if (shifted[ i ][ 0 ] == sc)
                           {
                              printf("<%c>", shifted[ i ][ 1 ]);
                           }
                     }
                     break;
               } // --- End Switch
         }
      else
         {
         //-------- No se permiten 2 0xF0 en una fila
         is_up = 0;
         switch (sc)
            {
               //-------- SHIFT Izquierdo
               case 0x12 :
                  shift = 0;
                  break;
               //-------- SHIFT Derecho
               case 0x59 :
                  shift = 0;
                  break;
            } // --- End Switch
         }
}




Y por último, y como siempre,  os pongo un volcado de mi monitor RS232 con
los resultados de la detección de teclas y su posterior envío por el puerto serie
del PIC. En este ejemplo monitorizo la secuencia de teclas [ a ][ s ][ d ][ intro ][ f ][ g ]

Fijaos que he incluido en la transmisión tanto los códigos de rastreo como las teclas
decodificadas que dichos códigos significan:




Resultado plenamente satisfactorio <img   src="http://pics.miarroba.com/caretos/lol.gif" alt="Muchas risas" title="Muchas risas" /> <img   src="http://pics.miarroba.com/caretos/lol.gif" alt="Muchas risas" title="Muchas risas" /> <img   src="http://pics.miarroba.com/caretos/lol.gif" alt="Muchas risas" title="Muchas risas" /> <img   src="http://pics.miarroba.com/caretos/bounce.gif" alt="Rebotado" title="Rebotado" /> <img   src="http://pics.miarroba.com/caretos/bounce.gif" alt="Rebotado" title="Rebotado" /> <img   src="http://pics.miarroba.com/caretos/bounce.gif" alt="Rebotado" title="Rebotado" /> <img   src="http://pics.miarroba.com/caretos/bounce.gif" alt="Rebotado" title="Rebotado" /> <img   src="http://pics.miarroba.com/caretos/bounce.gif" alt="Rebotado" title="Rebotado" />



« Última modificación: 10 de Mayo de 2006, 02:17:40 por RedPic »
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado electronando

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 427
RE: Proyecto : Ponga un teclado PS/2 en su PIC (vida)
« Respuesta #19 en: 02 de Abril de 2006, 14:08:00 »
interesante adptacion justo cuando se me acabvaba reciencito de quemar mi 16f628 jaja , oigan aprovechando son bien delicaditos estos no solo me olvide conectar la resistencia mclr a vdd estaba funcionando lo apague bruscamente y se despidio el pic ni mas jaja buena adaptacion red

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Proyecto : Ponga un teclado PS/2 en su PIC (vida)
« Respuesta #20 en: 04 de Abril de 2006, 19:20:29 »
Qué bueno que lograste hacerlo funcionar Red!

Te dejo un link al foro oficial de CCS en donde hay una librería para lo mismo...

 :arrow: http://www.ccsinfo.com/forum/viewtopic.php?t=25673

 :mrgreen:

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5552
    • Picmania by Redraven
Re: Proyecto : Ponga un teclado PS/2 en su PIC (vida)
« Respuesta #21 en: 05 de Abril de 2006, 01:16:46 »
Si, migsantiago, ya lo conocía. Fíjate en mi segundo post de este mismo hilo, entre los recursos que proponía para este tema el último enlace era precisamente este que tu propones.  :)

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

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5552
    • Picmania by Redraven
Re: Proyecto : Ponga un teclado PS/2 en su PIC (vida)
« Respuesta #22 en: 07 de Abril de 2006, 16:54:23 »
¡Esto es sorprendente! Publico aquí en el foro antes que en mi página PicManía ...  :lol:  :lol:  :lol:

Esto, ahora que lo pienso, me viene bien ya que empiezo aquí con un avance, o con mis intenciones ... voy posteando cosas, resultados, informaciones y ... me váis ayudando, colaborando, informando ... y al final tengo todo, un poco desordenado o confuso, pero todo al fin y al cabo. Y es entonces cuando lo publico en mi página, con la ventaja de que conozco el final del proyecto, así que puedo ordenar los temas, lo necesario, lo inútil ....

Si queréis ver el artículo completo, ordenado y descrito en condiciones de ser entendido podéis visitar Conectando un Teclado PS/2 a la RRBOARD1


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

inglaof

  • Visitante
Re: Proyecto : Ponga un teclado PS/2 en su PIC (vida)
« Respuesta #23 en: 17 de Abril de 2006, 13:44:02 »
Bueno, en ese caso de las pullups es porque utilizan el PORTB, pero si deseas utilizar otro port que no las tiene, por ejemplo en mi caso utilice el PortC, y por eso las utilice, o si quieres utilizar otro port como por ejemplo el pin RA4, el cual es de drenaje abierto, con la finalidad de aprovechar la interrupcion para iniciar la recepcion de datos, en fin...

Bueno, yo pensaba colaborar jeje, pero veo que llego un poco tarde, ya hay muchas respuestas. En mi caso realize una rutina en ensablador para la recepcion de codigos del teclado. Si alguien considera conocerla, no duden en contactarme para ello..:D

no se si ya lo han comentado en este tema, pero en dado caso lo repetire:

Cuando se presiona una tecla del teclado con conector PS2, este teclado envia 1 bit de inicio, 1 byte de datos, 1 bit de paridad y un bit de stop, es el formato que utilizan.

Ahora, cada vez que presionas una tecla, se reciben al menos 3 bytes de informacion (con sus correspondientes bits de inicio, paridad y stop), donde el primer byte recibido representa el codigo de la tecla, el segundo representa el un codigo de area del teclado, si bien recuerdo ( recordemos que hay teclas repetidas como los numeros), y nuevamente el dato de la misma tecla, como confirmacion, asi lo entiendo yo. Por internet estan los codigos de las teclas. Espero sea un agregado a este tema util...

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5552
    • Picmania by Redraven
Re: Proyecto : Ponga un teclado PS/2 en su PIC (vida)
« Respuesta #24 en: 17 de Abril de 2006, 14:58:36 »
Amigo Inglaof ¿por que no publicas tu código aqui?

Así nuestros amigos Picmaníacos tendrán mas información y otras formas de hacerlo para aprender y experimentar ...

Un saludo.

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

Desconectado betito_mmf

  • PIC10
  • *
  • Mensajes: 13
Re: Proyecto : Ponga un teclado PS/2 en su PIC (vida)
« Respuesta #25 en: 10 de Mayo de 2006, 01:14:26 »

Umm..    Al pulsar una tecla del teclado PS/2 , este envia 1 bit de inicio , 8 bits de datos , 1 de paridad y 1 de stop , eso esta claro .

Y  que hay de los 3  bytes de informacion como funciona esto. El host recibe la 1ra secuencia de bits y luego debe  esperar la 2da y finalmente la 3ra ,y que sucede si dejo precionado  una tecla bastante tiempo , no entiendo esa parte y me gustaria si no es molestia , ver un  diagrama de bloques o flujo para poder entender mejor el funcionamiento Host - teclado

Saludos amigos  ;-)


If you want the peace prepare for the war

:-) :-) :-)  HOY SERE MEJOR QUE AYER  :mrgreen:

Desconectado nostrico

  • PIC10
  • *
  • Mensajes: 33
AYUDA NECESITO ENVIAR DATOS AL PS/2 del mi PC, a traves de PS/2 teclado...
« Respuesta #26 en: 31 de Mayo de 2006, 16:00:15 »
Saludos a los de Foro  :shock: tengo un problema con el protocolo PS/2... Necesito enviar información DESDE el PIC 16f877 al PC por el PS/2, como tesis de grado para un equipo que necesita hacer eso al computador... COMO HAGO... lo que consigo en todos lados es el proyecto al revez... es decir el pic decodifica el teclado... Ayudenme gracias... :(
"La electronica nos salvará..." CZWIENCZEK

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5552
    • Picmania by Redraven
Re: Proyecto : Ponga un teclado PS/2 en su PIC (vida)
« Respuesta #27 en: 01 de Junio de 2006, 15:20:48 »
Amigo nostrico:

Quien busca encuentra ....  :lol:

Una vez terminado este Ponga un teclado PS/2 en su PIC ya he empezado con el
Emulación Teclado PS/2 con PIC (Engañe a su PC y dele gato por liebre) ...

aún estoy en ello, pero es el siguiente (y lógico) paso a dar.  :mrgreen:


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

Desconectado aitopes

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5100
    • uControl
Re: Proyecto : Ponga un teclado PS/2 en su PIC (vida)
« Respuesta #28 en: 02 de Junio de 2006, 07:35:09 »
Hola!
Acabo de llegar al foro, y me gusto el proyecto para enviar datos al PC mediante el puerto PS/2 del teclado. Supongo que para muchas aplicaciones es una forma muy sencilla de transferir informacion, simplemente como si se hubiera tipeado.
Lo que me parece raro es que se necesiten 20Mhz para no perder datos desde el teclado... Tenes informacion acerca de la velocidad con la que transmite los datos el teclado? Me llama la atencion que se haya definido una velocidad muy alta para esa interfaz, ya que nadie tipeea taaaan rapido..  :)

Suerte!
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 : Ponga un teclado PS/2 en su PIC (vida)
« Respuesta #29 en: 02 de Junio de 2006, 11:17:10 »
En el segundo post de este mismo hilo escribía :

Enlaces donde hay de todo lo necesario para este proyecto:


Ratón PS/2 controlado por un dsPIC

Teclado AT-PS2 Interfaz y funciones v1.2

TECHNICAL SPECIFICATION FOR G83-6000

AT Keyboard Interface V1.04

The PS/2 Keyboard Interface

DIY hardware keylogger

As to connect pic to the connector mini din (ps/2) in CCS C Forum


Ahí está todo lo necesario. (La velocidad del muestreo no tiene nada que ver con la velocidad de tipeo, sino con la velocidad de transmisión del protocolo PS/2)

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


 

anything