Hola, vengo hace un buen tiempo tratando de armar una controladora USB HID, y sin saber programacion en C, usando el CCS y codigos que fui juntando termine armando algo que funciona, una interface 8 canales analogicos, 32 botones y 64 leds.
Ahora, esta interface manda constantemente paquetes al usb, aunque no se modifique valor alguno, y quisiera evitar esto, asi que escribí este codigo, en donde:
Las variables serian:
"ejex" analogicos
"ejexa" valores analogicos anteriores para comparacion
"Btnxax" botones
Seria algo asi:
Si eje1 es distinto a eje1a, cargo la variable TXusb con el valor de eje1 y envio el paquete al USB, si el eje1 es igual a eje1a, sigo de largo.
Con los botones es lo mismo, si no hay alguno pulsado, sigue, si hay alguno pulsado, envio ese valor al usb.
MI consulta es, estan bien las sintaxis de los "if"?
Si es necesario el codigo completo lo subo.
Gracias de antemano.
Ahora, esta interface manda constantemente paquetes al usb, aunque no se modifique valor alguno, y quisiera evitar esto, asi que escribí este codigo, en donde:
Las variables serian:
"ejex" analogicos
"ejexa" valores analogicos anteriores para comparacion
"Btnxax" botones
Código:
int8 Eje1=0;
int8 Eje2=0;
int8 Eje3=0;
int8 Eje4=0;
int8 Eje5=0;
int8 Eje6=0;
int8 Eje7=0;
int8 Eje8=0;
int8 Btn1a8=0;
int8 Btn9a16=0;
int8 Btn17a24=0;
int8 Btn25a32=0;
int8 Eje1a=0;
int8 Eje2a=0;
int8 Eje3a=0;
int8 Eje4a=0;
int8 Eje5a=0;
int8 Eje6a=0;
int8 Eje7a=0;
int8 Eje8a=0;
if(usb_enumerated())
{
if(eje1 != eje1a)
{ txusb[4]=eje1;
usb_put_packet( 1, txusb, USB_CONFIG_HID_TX_SIZE, USB_DTS_TOGGLE);
}
if(eje2 != eje2a)
{ txusb[5]=eje2;
usb_put_packet( 1, txusb, USB_CONFIG_HID_TX_SIZE, USB_DTS_TOGGLE);
}
if(eje3 != eje3a)
{ txusb[6]=eje3;
usb_put_packet( 1, txusb, USB_CONFIG_HID_TX_SIZE, USB_DTS_TOGGLE);
}
if(eje4 != eje4a)
{ txusb[7]=eje4;
usb_put_packet( 1, txusb, USB_CONFIG_HID_TX_SIZE, USB_DTS_TOGGLE);
}
if(eje5 != eje5a)
{ txusb[8]=eje5;
usb_put_packet( 1, txusb, USB_CONFIG_HID_TX_SIZE, USB_DTS_TOGGLE);
}
if(eje6 != eje6a)
{ txusb[9]=eje6;
usb_put_packet( 1, txusb, USB_CONFIG_HID_TX_SIZE, USB_DTS_TOGGLE);
}
if(eje7 != eje7a)
{ txusb[10]=eje7;
usb_put_packet( 1, txusb, USB_CONFIG_HID_TX_SIZE, USB_DTS_TOGGLE);
}
if(eje8 != eje8a)
{ txusb[11]=eje8;
usb_put_packet( 1, txusb, USB_CONFIG_HID_TX_SIZE, USB_DTS_TOGGLE);
}
if(Btn1a8 != 0)
{ txusb[12]=Btn1a8;
usb_put_packet( 1, txusb, USB_CONFIG_HID_TX_SIZE, USB_DTS_TOGGLE);
}
if(Btn9a16 != 0)
{ txusb[13]=Btn9a16;
usb_put_packet( 1, txusb, USB_CONFIG_HID_TX_SIZE, USB_DTS_TOGGLE);
}
if(Btn17a24 != 0)
{ txusb[14]=Btn17a24;
usb_put_packet( 1, txusb, USB_CONFIG_HID_TX_SIZE, USB_DTS_TOGGLE);
}
if(Btn25a32 != 0)
{ txusb[15]=Btn25a32;
usb_put_packet( 1, txusb, USB_CONFIG_HID_TX_SIZE, USB_DTS_TOGGLE);
}
delay_us(10);
}
eje1a=eje1;
eje2a=eje2;
eje3a=eje3;
eje4a=eje4;
eje5a=eje5;
eje6a=eje6;
eje7a=eje7;
eje8a=eje8;
}
Seria algo asi:
Si eje1 es distinto a eje1a, cargo la variable TXusb con el valor de eje1 y envio el paquete al USB, si el eje1 es igual a eje1a, sigo de largo.
Con los botones es lo mismo, si no hay alguno pulsado, sigue, si hay alguno pulsado, envio ese valor al usb.
MI consulta es, estan bien las sintaxis de los "if"?
Si es necesario el codigo completo lo subo.
Gracias de antemano.