From b0d9f961acfff498b7c4f2dc4a54ad9513d09a3b Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Mon, 9 Mar 2009 11:50:43 +0000 Subject: Fixed interrupt driven HID device demos not clearing the interrupt flags in all circumstances. --- Demos/KeyboardFullInt/KeyboardFullInt.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) (limited to 'Demos/KeyboardFullInt/KeyboardFullInt.c') diff --git a/Demos/KeyboardFullInt/KeyboardFullInt.c b/Demos/KeyboardFullInt/KeyboardFullInt.c index 7e90b5ff2..44f983059 100644 --- a/Demos/KeyboardFullInt/KeyboardFullInt.c +++ b/Demos/KeyboardFullInt/KeyboardFullInt.c @@ -404,6 +404,15 @@ 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); @@ -420,21 +429,12 @@ 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)); - - /* Finalize the stream transfer to send the last packet */ - Endpoint_ClearCurrentBank(); } + + /* Finalize the stream transfer to send the last packet */ + Endpoint_ClearCurrentBank(); } /* Check if Keyboard LED status Endpoint has interrupted */ -- cgit v1.2.3