Added new VTARGET_REF_VOLTS and VTARGET_SCALE_FACTOR compile time defines to the...
authorDean Camera <dean@fourwalledcubicle.com>
Thu, 27 May 2010 10:36:21 +0000 (10:36 +0000)
committerDean Camera <dean@fourwalledcubicle.com>
Thu, 27 May 2010 10:36:21 +0000 (10:36 +0000)
Fixed XPLAINBridge project not correctly reading the XMEGA's supply voltage when reporting back to the host.

LUFA/ManPages/ChangeLog.txt
Projects/AVRISP-MKII/AVRISP.c
Projects/AVRISP-MKII/AVRISP.txt
Projects/AVRISP-MKII/Lib/V2ProtocolParams.c
Projects/AVRISP-MKII/makefile
Projects/XPLAINBridge/XPLAINBridge.c
Projects/XPLAINBridge/XPLAINBridge.txt
Projects/XPLAINBridge/makefile

index aa57163..638d8a1 100644 (file)
@@ -9,6 +9,8 @@
   *  \section Sec_ChangeLogXXXXXX Version XXXXXX
   *  <b>New:</b>
   *  - Added new ADC_DisableChannel() function (thanks to Mich Davis)
+  *  - Added new VTARGET_REF_VOLTS and VTARGET_SCALE_FACTOR compile time defines to the AVRISP-MKII programmer project to set
+  *    the VTARGET reference voltage and scale factor
   *
   *  <b>Changed:</b>
   *  - The RingBuff library code has been replaced in the XPLAINBridge, Benito and USBtoSerial projects with an ultra lightweight
@@ -26,6 +28,7 @@
   *    instead of the split write-only command (thanks to Tim Margush)
   *  - Fixed RNDISEthernet demos crashing when calculating checksums for Ethernet/TCP packets of more than ~500 bytes due to
   *    an overflow in the checksum calculation loop (thanks to Kevin Malec)
+  *  - Fixed XPLAINBridge project not correctly reading the XMEGA's supply voltage when reporting back to the host
   *
   *  \section Sec_ChangeLog100513 Version 100513
   *  <b>New:</b>
index e26d16c..81c1385 100644 (file)
@@ -49,7 +49,6 @@ int main(void)
        for (;;)
        {
                Process_AVRISP_Commands();
-               
                V2Params_UpdateParamValues();
                
                USB_USBTask();
index ab4472d..de08d5f 100644 (file)
  *        targets lacking an ADC.</i></td>  
  *   </tr>
  *   <tr>
+ *    <td>VTARGET_REF_VOLTS</td>
+ *    <td>Makefile CDEFS</td>
+ *    <td>Indicates the programmer AVR's AVCC reference voltage when measuring the target's supply voltage. Note that the supply
+ *        voltage should never exceed the reference voltage on the programmer AVR without some form of protection to prevent damage
+ *        to the ADC. <i>Ignored when compiled for targets lacking an ADC, or when NO_VTARGET_DETECT is defined.</i></td>  
+ *   </tr>
+ *   <tr>
+ *    <td>VTARGET_SCALE_FACTOR</td>
+ *    <td>Makefile CDEFS</td>
+ *    <td>Indicates the target's supply voltage scale factor when applied to the ADC. A simple resistive divider can be used on the
+ *        ADC pin for measuring the target's supply voltage, so that voltages above the programmer AVR's AVCC reference voltage can be
+ *        measured. This should be the reciprocal of the division performed - e.g. if the VTARGET voltage is halved, this should be set
+ *        to 2. <i>Ignored when compiled for targets lacking an ADC, or when NO_VTARGET_DETECT is defined.</i></td>  
+ *   </tr> 
+ *   <tr>
  *    <td>LIBUSB_DRIVER_COMPAT</td>
  *    <td>Makefile CDEFS</td>
  *    <td>Define to switch to a non-standard endpoint scheme, breaking compatibility with AVRStudio under Windows but making
index de21f0f..bc3ed18 100644 (file)
@@ -98,7 +98,7 @@ void V2Params_UpdateParamValues(void)
 {
        #if (defined(ADC) && !defined(NO_VTARGET_DETECT))
        /* Update VTARGET parameter with the latest ADC conversion of VTARGET on supported AVR models */
-       V2Params_SetParameterValue(PARAM_VTARGET, ((5 * 10 * ADC_GetResult()) / 1024));
+       V2Params_GetParamFromTable(PARAM_VTARGET)->ParamValue = (((uint16_t)(VTARGET_REF_VOLTS * 10 * VTARGET_SCALE_FACTOR) * ADC_GetResult()) / 1024);
        #endif
 }
 
index 9cba873..c6b64df 100644 (file)
@@ -197,6 +197,8 @@ CDEFS += -DAUX_LINE_MASK="(1 << 4)"
 CDEFS += -DVTARGET_ADC_CHANNEL=2
 CDEFS += -DENABLE_ISP_PROTOCOL
 CDEFS += -DENABLE_XPROG_PROTOCOL
+CDEFS += -DVTARGET_REF_VOLTS=5
+CDEFS += -DVTARGET_SCALE_FACTOR=1
 #CDEFS += -DNO_VTARGET_DETECT
 #CDEFS += -DLIBUSB_DRIVER_COMPAT
 
index 79e1ddb..4f3583e 100644 (file)
@@ -86,9 +86,14 @@ int main(void)
        for (;;)
        {
                if (CurrentFirmwareMode == MODE_USART_BRIDGE)
-                 USARTBridge_Task();
+               {
+                       USARTBridge_Task();
+               }
                else
-                 AVRISP_Task();
+               {
+                       AVRISP_Task();
+                       V2Params_UpdateParamValues();
+               }
 
                USB_USBTask();
        }
@@ -147,7 +152,6 @@ void SetupHardware(void)
        USB_Init();
        V2Protocol_Init();
        
-       #if 0
        /* Disable JTAG debugging */
        MCUCR |= (1 << JTD);
        MCUCR |= (1 << JTD);
@@ -162,9 +166,6 @@ void SetupHardware(void)
        /* Re-enable JTAG debugging */
        MCUCR &= ~(1 << JTD);
        MCUCR &= ~(1 << JTD);
-       #endif
-       
-       CurrentFirmwareMode = MODE_USART_BRIDGE;
 }
 
 /** Event handler for the library USB Configuration Changed event. */
index 3f9ab8e..f22feca 100644 (file)
@@ -74,9 +74,9 @@
  *    <td><b>Description:</b></td>
  *   </tr>
  *   <tr>
- *    <td>BUFF_STATICSIZE</td>
- *    <td>RingBuff.h</td>
- *    <td>Defines the maximum number of bytes which can be buffered in each Ring Buffer.</td>
+ *    <td>BUFFER_SIZE</td>
+ *    <td>LightweightRingBuff.h</td>
+ *    <td>Defines the maximum number of bytes which can be buffered in each Ring Buffer when in serial bridge mode.</td>
  *   </tr>
  *   <tr>
  *    <td>LIBUSB_DRIVER_COMPAT</td>
index c68c91d..1aefdca 100644 (file)
@@ -201,6 +201,8 @@ CDEFS += -DAUX_LINE_PIN=PINB
 CDEFS += -DAUX_LINE_DDR=DDRB
 CDEFS += -DAUX_LINE_MASK="(1 << 4)"
 CDEFS += -DVTARGET_ADC_CHANNEL=2
+CDEFS += -DVTARGET_REF_VOLTS=3.3
+CDEFS += -DVTARGET_SCALE_FACTOR=2
 #CDEFS += -DLIBUSB_DRIVER_COMPAT