diff --git a/main.c b/main.c index c04673b..c3a14c3 100644 --- a/main.c +++ b/main.c @@ -14,35 +14,6 @@ /* ----------------------------- USB interface ----------------------------- */ /* ------------------------------------------------------------------------- */ -// PROGMEM const char usbHidReportDescriptor[52] = { /* USB report descriptor, size must match usbconfig.h */ -// 0x05, 0x01, // USAGE_PAGE (Generic Desktop) -// 0x09, 0x02, // USAGE (Mouse) -// 0xa1, 0x01, // COLLECTION (Application) -// 0x09, 0x01, // USAGE (Pointer) -// 0xA1, 0x00, // COLLECTION (Physical) -// 0x05, 0x09, // USAGE_PAGE (Button) -// 0x19, 0x01, // USAGE_MINIMUM -// 0x29, 0x03, // USAGE_MAXIMUM -// 0x15, 0x00, // LOGICAL_MINIMUM (0) -// 0x25, 0x01, // LOGICAL_MAXIMUM (1) -// 0x95, 0x03, // REPORT_COUNT (3) -// 0x75, 0x01, // REPORT_SIZE (1) -// 0x81, 0x02, // INPUT (Data,Var,Abs) -// 0x95, 0x01, // REPORT_COUNT (1) -// 0x75, 0x05, // REPORT_SIZE (5) -// 0x81, 0x03, // INPUT (Const,Var,Abs) -// 0x05, 0x01, // USAGE_PAGE (Generic Desktop) -// 0x09, 0x30, // USAGE (X) -// 0x09, 0x31, // USAGE (Y) -// 0x09, 0x38, // USAGE (Wheel) -// 0x15, 0x81, // LOGICAL_MINIMUM (-127) -// 0x25, 0x7F, // LOGICAL_MAXIMUM (127) -// 0x75, 0x08, // REPORT_SIZE (8) -// 0x95, 0x03, // REPORT_COUNT (3) -// 0x81, 0x06, // INPUT (Data,Var,Rel) -// 0xC0, // END_COLLECTION -// 0xC0, // END COLLECTION -// }; PROGMEM const char usbHidReportDescriptor[] = { /* USB report descriptor, size must match usbconfig.h */ 0x05, 0x01, // USAGE_PAGE (Generic Desktop) 0x09, 0x02, // USAGE (Mouse) @@ -63,17 +34,46 @@ PROGMEM const char usbHidReportDescriptor[] = { /* USB report descriptor, size m 0x05, 0x01, // USAGE_PAGE (Generic Desktop) 0x09, 0x30, // USAGE (X) 0x09, 0x31, // USAGE (Y) + 0x09, 0x38, // USAGE (Wheel) 0x15, 0x81, // LOGICAL_MINIMUM (-127) 0x25, 0x7F, // LOGICAL_MAXIMUM (127) 0x75, 0x08, // REPORT_SIZE (8) - 0x95, 0x03, // REPORT_COUNT (2) + 0x95, 0x03, // REPORT_COUNT (3) 0x81, 0x06, // INPUT (Data,Var,Rel) - 0x09, 0x38, // USAGE (Wheel) - 0x95, 0x01, // REPORT_COUNT (1) - 0x81, 0x06, // INPUT (Data, Variable, Relative) 0xC0, // END_COLLECTION 0xC0, // END COLLECTION }; +// PROGMEM const char usbHidReportDescriptor[] = { /* USB report descriptor, size must match usbconfig.h */ +// 0x05, 0x01, // USAGE_PAGE (Generic Desktop) +// 0x09, 0x02, // USAGE (Mouse) +// 0xa1, 0x01, // COLLECTION (Application) +// 0x09, 0x01, // USAGE (Pointer) +// 0xA1, 0x00, // COLLECTION (Physical) +// 0x05, 0x09, // USAGE_PAGE (Button) +// 0x19, 0x01, // USAGE_MINIMUM +// 0x29, 0x03, // USAGE_MAXIMUM +// 0x15, 0x00, // LOGICAL_MINIMUM (0) +// 0x25, 0x01, // LOGICAL_MAXIMUM (1) +// 0x95, 0x03, // REPORT_COUNT (3) +// 0x75, 0x01, // REPORT_SIZE (1) +// 0x81, 0x02, // INPUT (Data,Var,Abs) +// 0x95, 0x01, // REPORT_COUNT (1) +// 0x75, 0x05, // REPORT_SIZE (5) +// 0x81, 0x03, // INPUT (Const,Var,Abs) +// 0x05, 0x01, // USAGE_PAGE (Generic Desktop) +// 0x09, 0x30, // USAGE (X) +// 0x09, 0x31, // USAGE (Y) +// 0x15, 0x81, // LOGICAL_MINIMUM (-127) +// 0x25, 0x7F, // LOGICAL_MAXIMUM (127) +// 0x75, 0x08, // REPORT_SIZE (8) +// 0x95, 0x03, // REPORT_COUNT (2) +// 0x81, 0x06, // INPUT (Data,Var,Rel) +// 0x09, 0x38, // USAGE (Wheel) +// 0x95, 0x01, // REPORT_COUNT (1) +// 0x81, 0x06, // INPUT (Data, Variable, Relative) +// 0xC0, // END_COLLECTION +// 0xC0, // END COLLECTION +// }; /* This is the same report descriptor as seen in a Logitech mouse. The data * described by this descriptor consists of 4 bytes: * . . . . . B2 B1 B0 .... one byte with mouse button states @@ -102,32 +102,25 @@ static void read_Wheel(void) timing = get_timing(AnalogIn); - // PINB |= _BV(PB1); - if (AnalogIn < LowerDead[Debounce] || AnalogIn > UpperDead[Debounce]) { if (Debounce == 1 || ticktock >= timing) { + PINB |= _BV(PB1); reportBuffer.dWheel = Direction; Debounce = 0; ticktock = 0; - PINB |= _BV(PB1); - // PINB &= ~(1< 10) +{ + read_Wheel(); + if(usbInterruptIsReady()) { - // PINB |= _BV(PB1); - - // usbSetInterrupt((void *)&reportBuffer, sizeof(reportBuffer)); - // PINB |= (1< 250 ms */ - // wdt_reset(); - _delay_ms(4); + _delay_ms(2); } usbDeviceConnect(); @@ -244,8 +215,6 @@ void SetupHardware(void) TIMSK |= (1< 10) + // // { + // // PINB |= _BV(PB1); + // // count = 0; + // // } + // // count++; - // // /* called after every poll of the interrupt endpoint */ - // // read_Wheel(); - // // // DBG1(0x03, 0, 0); /* debug output: interrupt report prepared */ // usbSetInterrupt((void *)&reportBuffer, sizeof(reportBuffer)); // clearReport(); // } diff --git a/usbdrv/usbconfig.h b/usbdrv/usbconfig.h index a02b6ca..7c16c91 100644 --- a/usbdrv/usbconfig.h +++ b/usbdrv/usbconfig.h @@ -282,7 +282,7 @@ extern void hadUsbReset(void); // define the function for usbdrv.c * CDC class is 2, use subclass 2 and protocol 1 for ACM */ /* #define USB_CFG_HID_REPORT_DESCRIPTOR_LENGTH 42 */ -#define USB_CFG_HID_REPORT_DESCRIPTOR_LENGTH 56 +#define USB_CFG_HID_REPORT_DESCRIPTOR_LENGTH 52 /* Define this to the length of the HID report descriptor, if you implement * an HID device. Otherwise don't define it or define it to 0. * If you use this define, you must add a PROGMEM character array named