diff --git a/lib_xua/src/core/user/user_hid.xc b/lib_xua/src/core/user/user_hid.xc index d27d6914..4319bf43 100644 --- a/lib_xua/src/core/user/user_hid.xc +++ b/lib_xua/src/core/user/user_hid.xc @@ -4,6 +4,7 @@ #include #include "user_hid.h" +#define HID_DEASSERT_COUNT 10000000 #define HID_INTERRUPT_COUNT 1000000000 #define HID_REPORT_DATA 0x01 @@ -24,16 +25,18 @@ void UserReadHIDData( unsigned char hidData[ HID_DATA_SIZE ]) tmr :> curr_time; tick_count += ( last_time < curr_time ) ? curr_time - last_time : curr_time + ( UINT_MAX - last_time ); - if( HID_INTERRUPT_COUNT <= tick_count ) { + if(( HID_INTERRUPT_COUNT <= tick_count ) && ( tick_count <= ( HID_INTERRUPT_COUNT + HID_DEASSERT_COUNT ))) { for( unsigned idx = 0; idx < HID_DATA_SIZE; ++idx ) { hidData[ idx ] = HID_REPORT_DATA; } - - tick_count = 0; } else { for( unsigned idx = 0; idx < HID_DATA_SIZE; ++idx ) { hidData[ idx ] = 0x00; - } + } + + if (( HID_INTERRUPT_COUNT + HID_DEASSERT_COUNT ) <= tick_count ) { + tick_count = 0; + } } last_time = curr_time;