Autor Tema: Control de MegaKeypad 8x9  (Leído 1560 veces)

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

Desconectado rogeliogamberro

  • PIC10
  • *
  • Mensajes: 34
Control de MegaKeypad 8x9
« en: 08 de Enero de 2009, 06:42:41 »
Hola a Todos!

Estoy metido en un gran problema que no se resolver. Por eso acudo a ustedes.
Poseo un teclado matricial de 8x9. Es decir que voy ingrasando un uno en forma rotativa mediante un registro de desplazamiento de 8 bits y observo por las 9 salidas de la matriz si estan activas o no (en el programa, estas son entradas y las he llamado T0-T8).
De esta matriz debo interrogar (en lo posible con menos de 5 ms de demora) los pines de T0-T5 y enviar un comando a la PC de 3 bytes a 9600 (lo cual demora 2,5 ms aproximadamente). Los pines T6 a T8 deben ser interrogados como minimo a 30 ms y se debe envia un comando a la PC de 2 bytes (lo cual demora 1,7 ms)
He medido el rebote de las teclas rapidas y es menor a los 2 ms.
El Hardware funciona correctamente pero el software tiene una alta demora en enviar los datos debido a que la funcion putc() hace un pulling y no deja que mi codigo avance.

Que alternativa de programacion me sugieren para poder cumplir con las especificaciones? Aclaro que es un 16f877 y lo estoy programando en CCS
He probado de escanear las teclas con un timer y en el main enviar los datos pero la gran demora del putc () no deja que funcione correctamente. Tambien hice la prueba inversa.
Gracias por sus propuestas y Feliz Año! :D

Aclaracion: En la seccion de programacion en CCS consulte solo una parte de lo enunciado aqui ( lo refernte al problema del putc). Si hice mal o se considera doble post agradeceria el avisarme asi lo quito. :-)
 
« Última modificación: 08 de Enero de 2009, 08:30:54 por rogeliogamberro »

Desconectado Javicho

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 570
Re: Control de MegaKeypad 8x9
« Respuesta #1 en: 09 de Enero de 2009, 14:38:14 »
Hola:

En el programa principal lee tus pulsadores y en el RSI realiza el tramite de envio de tus bytes a la PC mediante el USART del pic, seran como 2 procesos independientes y asi no tendras que esperar que termine el envio de los bytes a la pc para seguir leyendo los pulsadores.

Ten en cuenta tambien que 1byte enviado esta compuesto por 1 bit de inicio + 8 bits de datos + 1 bit de stop, es decir, en total el tiempo que demoras en enviar 1byte es 10x104uS=1.04mS aprox.

Javicho.