Estoy tratando de construir mi propio teclado mecánico. Todo el mundo usa Teensy como puedo ver. Quiero usar PIC18F2550 en su lugar. Estoy usando CCS C por cierto. El problema es que no puedo enviar más de 5 bits. Trataron de enviar diferentes matrices, chocaron de alguna manera. El aumento en el recuento de informes de "usb_desc_keyboard.h" no funciona. La función "usb_puts" tampoco funcionó.
Cuando envío varios arreglos, uno por uno, PIC envía caracteres clave. No hay problema allí. Pero no hace la misma respuesta que un teclado regular. Normalmente, el primer tipo lleva más tiempo que otros. De esta manera PIC envía caracteres continuamente. Quiero enviar 64 bits juntos. ¿Es eso posible?
Estoy usando el método de matriz para las interacciones de los botones, no tengo ningún problema.
EDITAR:
Agregué el código. El tamaño de la matriz tx_msg es 7. Quiero aumentar esto a 64. Encontré a este tipo diciendo que lo hizo. enlace Voy a intentar esto cuando llegue a casa.
void usb_keyboard_task(void)
{
static int8 tx_msg[7]={0,0,0,0,0,0,0};
static int8 leds;
if(!input(pin_B0))
tx_msg[2]=0x04;
else
tx_msg[2]=0;
usb_put_packet(1,tx_msg,sizeof(tx_msg),USB_DTS_TOGGLE);
//receive NUM LOCK, CAPS LOCK, etc LED status from PC.
//we won't do anything with it.
if (usb_kbhit(2))
{
usb_get_packet(2, &leds, 1);
}
}
void main(void)
{
setup_adc_ports(NO_ANALOGS);
set_tris_a(0b0000000);
set_tris_b(0b11111111);
port_b_pullups(0b11111111);
usb_init_cs();
output_high(pin_A0);
while (TRUE)
{
usb_task();
usb_debug_task();
if(usb_enumerated())
{
usb_keyboard_task();
delay_ms(50);
}
}
}