X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/bbcdaaa6dc6024911a280e5fda6b4a43f71fb98e..1ed6925b5bf417848b83887b32e3ede05a1c691b:/Projects/AVRISP/AVRISP.c diff --git a/Projects/AVRISP/AVRISP.c b/Projects/AVRISP/AVRISP.c index 0491102b4..c0572fca2 100644 --- a/Projects/AVRISP/AVRISP.c +++ b/Projects/AVRISP/AVRISP.c @@ -42,15 +42,17 @@ int main(void) { SetupHardware(); - - printf("AVRISP-MKII Clone\r\n"); + + V2Params_LoadNonVolatileParamValues(); LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY); for (;;) - { - Process_AVRISP_Commands(); - + { + Process_AVRISP_Commands(); + + V2Params_UpdateParamValues(); + USB_USBTask(); } } @@ -66,9 +68,20 @@ void SetupHardware(void) clock_prescale_set(clock_div_1); /* Hardware Initialization */ - SerialStream_Init(9600, false); LEDs_Init(); USB_Init(); + + #if defined(ADC) + /* Initialize the ADC converter for VTARGET level detection on supported AVR models */ + ADC_Init(ADC_FREE_RUNNING | ADC_PRESCALE_128); + ADC_SetupChannel(VTARGET_ADC_CHANNEL); + ADC_StartReading(VTARGET_ADC_CHANNEL | ADC_RIGHT_ADJUSTED | ADC_REFERENCE_AVCC); + #endif + + /* Millisecond timer initialization for timeouts and delays */ + OCR0A = ((F_CPU / 64) / 1000); + TCCR0A = (1 << WGM01); + TCCR0B = ((1 << CS01) | (1 << CS00)); } /** Event handler for the library USB Connection event. */ @@ -98,24 +111,24 @@ void EVENT_USB_Device_ConfigurationChanged(void) } } -void EVENT_USB_Device_UnhandledControlRequest(void) +/** Processes incoming V2 Protocol commands from the host, returning a response when required. */ +void Process_AVRISP_Commands(void) { - printf("CONTROL REQUEST\r\n"); -} - -void Process_AVRISP_Commands(void) -{ /* Device must be connected and configured for the task to run */ if (USB_DeviceState != DEVICE_STATE_Configured) - return; - + return; + Endpoint_SelectEndpoint(AVRISP_DATA_EPNUM); - - /* Check to see if a V2 Protocol command has been received - if not, abort */ - if (!(Endpoint_IsOUTReceived())) - return; - - /* Pass off processing of the V2 Protocol command to the V2 Protocol handler */ - V2Protocol_ProcessCommand(); -} - + + /* Check to see if a V2 Protocol command has been received */ + if (Endpoint_IsOUTReceived()) + { + LEDs_SetAllLEDs(LEDMASK_BUSY); + + /* Pass off processing of the V2 Protocol command to the V2 Protocol handler */ + V2Protocol_ProcessCommand(); + + LEDs_SetAllLEDs(LEDMASK_USB_READY); + } +} +