Add VTARGET level detection to the AVRISP project on supported AVR models.
[pub/USBasp.git] / Projects / AVRISP / AVRISP.c
index f14b654..d4ae910 100644 (file)
@@ -35,7 +35,6 @@
  */\r
 \r
 // TODO: Add in software SPI for lower programming speeds below 125KHz\r
  */\r
 \r
 // TODO: Add in software SPI for lower programming speeds below 125KHz\r
-// TODO: Add in VTARGET detection\r
 // TODO: Add reversed target connector checks\r
 \r
 #include "AVRISP.h"\r
 // TODO: Add reversed target connector checks\r
 \r
 #include "AVRISP.h"\r
@@ -53,7 +52,12 @@ int main(void)
 \r
        for (;;)\r
        {
 \r
        for (;;)\r
        {
-               Process_AVRISP_Commands();
+               Process_AVRISP_Commands();\r
+               \r
+               #if defined(ADC)\r
+               /* Update VTARGET parameter with the latest ADC conversion of VTARGET on supported AVR models */\r
+               V2Params_SetParameterValue(PARAM_VTARGET, ((5 * 10 * ADC_GetResult()) / 1024));\r
+               #endif
 \r
                USB_USBTask();\r
        }\r
 \r
                USB_USBTask();\r
        }\r
@@ -73,6 +77,13 @@ void SetupHardware(void)
        LEDs_Init();\r
        USB_Init();\r
 \r
        LEDs_Init();\r
        USB_Init();\r
 \r
+       #if defined(ADC)\r
+       /* Initialize the ADC converter for VTARGET level detection on supported AVR models */\r
+       ADC_Init(ADC_FREE_RUNNING | ADC_PRESCALE_128);\r
+       ADC_SetupChannel(VTARGET_ADC_CHANNEL);\r
+       ADC_StartReading(VTARGET_ADC_CHANNEL | ADC_RIGHT_ADJUSTED | ADC_REFERENCE_AVCC);\r
+       #endif\r
+       \r
        /* Millisecond timer initialization for timeout checking */\r
        OCR0A  = ((F_CPU / 64) / 1000);\r
        TCCR0A = (1 << WGM01);\r
        /* Millisecond timer initialization for timeout checking */\r
        OCR0A  = ((F_CPU / 64) / 1000);\r
        TCCR0A = (1 << WGM01);\r