Added INVERTED_ISP_MISO compile time option to the AVRISP-MKII clone project (thanks...
authorDean Camera <dean@fourwalledcubicle.com>
Sun, 30 Oct 2011 14:12:11 +0000 (14:12 +0000)
committerDean Camera <dean@fourwalledcubicle.com>
Sun, 30 Oct 2011 14:12:11 +0000 (14:12 +0000)
LUFA/DoxygenPages/ChangeLog.txt
Projects/AVRISP-MKII/AVRISP-MKII.txt
Projects/AVRISP-MKII/Lib/ISP/ISPTarget.h
Projects/AVRISP-MKII/makefile

index 38fe115..c2e304a 100644 (file)
@@ -12,6 +12,7 @@
   *   - None
   *  - Library Applications:
   *   - Added User Application APIs to the CDC and DFU class bootloaders
+  *   - Added INVERTED_ISP_MISO compile time option to the AVRISP-MKII clone project (thanks to Chuck Rohs)
   *
   *  <b>Changed:</b>
   *  - Core:
index c47a65e..4533a85 100644 (file)
  *    <td>Define to move the ISP rescue clock to the AVR's XCK pin instead of the OCR1A output pin. This is useful for existing programming
  *        hardware that does not expose the OCR1A pin of the AVR, but *may* cause some issues with PDI programming mode.
  *   </tr>
+ *   <tr>
+ *    <td>INVERTED_ISP_MISO</td>
+ *    <td>Makefile LUFA_OPTS</td>
+ *    <td>Define to invert the received data on the ISP MISO line. This is sometimes needed depending on the level translation hardware used,
+ *        if the translator hardware inverts the received logic level.
+ *   </tr>
  *  </table>
  */
 
index 906ee82..350283f 100644 (file)
                 */
                static inline uint8_t ISPTarget_ReceiveByte(void)
                {
+                       #if !defined(INVERTED_ISP_MISO)
                        if (HardwareSPIMode)
                          return SPI_ReceiveByte();
                        else
                          return ISPTarget_TransferSoftSPIByte(0x00);
+                       #else
+                       if (HardwareSPIMode)
+                         return ~SPI_ReceiveByte();
+                       else
+                         return ~ISPTarget_TransferSoftSPIByte(0x00);                  
+                       #endif
                }
 
                /** Sends and receives a byte of ISP data to and from the attached target, using the
                 */
                static inline uint8_t ISPTarget_TransferByte(const uint8_t Byte)
                {
+                       #if !defined(INVERTED_ISP_MISO)
                        if (HardwareSPIMode)
                          return SPI_TransferByte(Byte);
                        else
                          return ISPTarget_TransferSoftSPIByte(Byte);
+                       #else
+                       if (HardwareSPIMode)
+                         return ~SPI_TransferByte(Byte);
+                       else
+                         return ~ISPTarget_TransferSoftSPIByte(Byte);          
+                       #endif
                }
 
 #endif
index 80d50ba..10b3c75 100644 (file)
@@ -144,6 +144,7 @@ LUFA_OPTS += -D VTARGET_SCALE_FACTOR=1
 #LUFA_OPTS += -D NO_VTARGET_DETECT
 #LUFA_OPTS += -D LIBUSB_DRIVER_COMPAT
 #LUFA_OPTS += -D XCK_RESCUE_CLOCK_ENABLE
+#LUFA_OPTS += -D INVERTED_ISP_MISO
 
 
 # Create the LUFA source path variables by including the LUFA root makefile