Fixed interrupt driven HID device demos not clearing the interrupt flags in all circumstances.
This commit is contained in:
@@ -391,7 +391,16 @@ ISR(ENDPOINT_PIPE_vect, ISR_BLOCK)
|
||||
{
|
||||
USB_KeyboardReport_Data_t KeyboardReportData;
|
||||
bool SendReport;
|
||||
|
||||
|
||||
/* Select the Keyboard Report Endpoint */
|
||||
Endpoint_SelectEndpoint(KEYBOARD_EPNUM);
|
||||
|
||||
/* Clear the endpoint IN interrupt flag */
|
||||
USB_INT_Clear(ENDPOINT_INT_IN);
|
||||
|
||||
/* Clear the Keyboard Report endpoint interrupt */
|
||||
Endpoint_ClearEndpointInterrupt(KEYBOARD_EPNUM);
|
||||
|
||||
/* Create the next keyboard report for transmission to the host */
|
||||
SendReport = GetNextReport(&KeyboardReportData);
|
||||
|
||||
@@ -408,15 +417,6 @@ ISR(ENDPOINT_PIPE_vect, ISR_BLOCK)
|
||||
/* Check to see if a report should be issued */
|
||||
if (SendReport)
|
||||
{
|
||||
/* Select the Keyboard Report Endpoint */
|
||||
Endpoint_SelectEndpoint(KEYBOARD_EPNUM);
|
||||
|
||||
/* Clear the endpoint IN interrupt flag */
|
||||
USB_INT_Clear(ENDPOINT_INT_IN);
|
||||
|
||||
/* Clear the Keyboard Report endpoint interrupt */
|
||||
Endpoint_ClearEndpointInterrupt(KEYBOARD_EPNUM);
|
||||
|
||||
/* Write Keyboard Report Data */
|
||||
Endpoint_Write_Stream_LE(&KeyboardReportData, sizeof(KeyboardReportData));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user