X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/9991321321d30ca9383d795ea7e796098c92045f..0214e096a0274fd506b09812f47dc1183084851d:/Demos/MouseViaInt/MouseViaInt.c diff --git a/Demos/MouseViaInt/MouseViaInt.c b/Demos/MouseViaInt/MouseViaInt.c index 77e4c565e..465459a36 100644 --- a/Demos/MouseViaInt/MouseViaInt.c +++ b/Demos/MouseViaInt/MouseViaInt.c @@ -74,8 +74,8 @@ int main(void) MCUSR &= ~(1 << WDRF); wdt_disable(); - /* Disable Clock Division */ - SetSystemClockPrescaler(0); + /* Disable clock division */ + clock_prescale_set(clock_div_1); /* Hardware Initialization */ Joystick_Init(); @@ -198,6 +198,10 @@ EVENT_HANDLER(USB_UnhandledControlPacket) /* Send the flag to the host */ Endpoint_ClearSetupIN(); + + /* Acknowledge status stage */ + while (!(Endpoint_IsSetupOUTReceived())); + Endpoint_ClearSetupOUT(); } break; @@ -212,7 +216,8 @@ EVENT_HANDLER(USB_UnhandledControlPacket) /* Set or clear the flag depending on what the host indicates that the current Protocol should be */ UsingReportProtocol = (wValue != 0x0000); - /* Send an empty packet to acknowedge the command */ + /* Acknowledge status stage */ + while (!(Endpoint_IsSetupINReady())); Endpoint_ClearSetupIN(); } @@ -228,7 +233,8 @@ EVENT_HANDLER(USB_UnhandledControlPacket) /* Get idle period in MSB */ IdleCount = (wValue >> 8); - /* Send an empty packet to acknowedge the command */ + /* Acknowledge status stage */ + while (!(Endpoint_IsSetupINReady())); Endpoint_ClearSetupIN(); } @@ -243,6 +249,10 @@ EVENT_HANDLER(USB_UnhandledControlPacket) /* Send the flag to the host */ Endpoint_ClearSetupIN(); + + /* Acknowledge status stage */ + while (!(Endpoint_IsSetupOUTReceived())); + Endpoint_ClearSetupOUT(); } break; @@ -345,6 +355,15 @@ ISR(ENDPOINT_PIPE_vect, ISR_BLOCK) USB_MouseReport_Data_t MouseReportData; bool SendReport = true; + /* Select the Mouse Report Endpoint */ + Endpoint_SelectEndpoint(MOUSE_EPNUM); + + /* Clear the endpoint IN interrupt flag */ + USB_INT_Clear(ENDPOINT_INT_IN); + + /* Clear the Mouse Report endpoint interrupt and select the endpoint */ + Endpoint_ClearEndpointInterrupt(MOUSE_EPNUM); + /* Create the next mouse report for transmission to the host */ GetNextReport(&MouseReportData); @@ -367,15 +386,6 @@ ISR(ENDPOINT_PIPE_vect, ISR_BLOCK) /* Check to see if a report should be issued */ if (SendReport) { - /* Select the Mouse Report Endpoint */ - Endpoint_SelectEndpoint(MOUSE_EPNUM); - - /* Clear the endpoint IN interrupt flag */ - USB_INT_Clear(ENDPOINT_INT_IN); - - /* Clear the Mouse Report endpoint interrupt and select the endpoint */ - Endpoint_ClearEndpointInterrupt(MOUSE_EPNUM); - /* Write Mouse Report Data */ Endpoint_Write_Stream_LE(&MouseReportData, sizeof(MouseReportData)); }