Hi Chris,
just to confirm that doing the 100us USB Service works from within a timer allowing other operations to continue rather than just looping the USBService. Here is the code from within my service routine (using Darrell Taylor's instant interrupts - damn they're good!):
Thanks very much for the fix - it is massively appreciated (although I should have thanked you months ago!). Hopefully this information will help others!Code:'******************************************************************************* 'Timer 0 Interrupt Handler: Service the USB '******************************************************************************* ServiceUSB: if usbsetupcount < 15000 then ' If USBSetupCount has not finished then usbservice ' Service the USB every 100us usbsetupcount = usbsetupcount + 1 TMR0H = $FF ' Make Timer 0 hold 65387 so that it takes 100us TMR0L = $6B ' to interrupt each time (Prescale of 8) @ INT_RETURN endif usbservice ' Keep USB connection alive TMR0H = $C5 ' Make Timer 0 hold 50537 so that it takes 10ms TMR0L = $69 ' to interrupt each time (Prescale of 8) @ INT_RETURN
Rob




Bookmarks