Fix TPI communications in the AVRISP project when bit-banged USART mode is selected.
authorDean Camera <dean@fourwalledcubicle.com>
Fri, 29 Jan 2010 05:31:25 +0000 (05:31 +0000)
committerDean Camera <dean@fourwalledcubicle.com>
Fri, 29 Jan 2010 05:31:25 +0000 (05:31 +0000)
Projects/AVRISP-MKII/Lib/XPROG/TINYNVM.c
Projects/AVRISP-MKII/Lib/XPROG/TINYNVM.h
Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.c

index 9dac31c..0e6833a 100644 (file)
@@ -116,7 +116,7 @@ bool TINYNVM_WaitWhileNVMControllerBusy(void)
  *\r
  *  \return Boolean true if the command sequence complete successfully\r
  */\r
  *\r
  *  \return Boolean true if the command sequence complete successfully\r
  */\r
-bool TINYNVM_ReadMemory(const uint32_t ReadAddress, uint8_t* ReadBuffer, uint16_t ReadSize)\r
+bool TINYNVM_ReadMemory(const uint16_t ReadAddress, uint8_t* ReadBuffer, uint16_t ReadSize)\r
 {\r
        /* Wait until the NVM controller is no longer busy */\r
        if (!(TINYNVM_WaitWhileNVMControllerBusy()))\r
 {\r
        /* Wait until the NVM controller is no longer busy */\r
        if (!(TINYNVM_WaitWhileNVMControllerBusy()))\r
@@ -147,7 +147,7 @@ bool TINYNVM_ReadMemory(const uint32_t ReadAddress, uint8_t* ReadBuffer, uint16_
  *\r
  *  \return Boolean true if the command sequence complete successfully\r
  */\r
  *\r
  *  \return Boolean true if the command sequence complete successfully\r
  */\r
-bool TINYNVM_WriteMemory(const uint32_t WriteAddress, const uint8_t* WriteBuffer, uint16_t WriteLength)\r
+bool TINYNVM_WriteMemory(const uint16_t WriteAddress, const uint8_t* WriteBuffer, uint16_t WriteLength)\r
 {\r
        /* Wait until the NVM controller is no longer busy */\r
        if (!(TINYNVM_WaitWhileNVMControllerBusy()))\r
 {\r
        /* Wait until the NVM controller is no longer busy */\r
        if (!(TINYNVM_WaitWhileNVMControllerBusy()))\r
index e6a6749..546e5ab 100644 (file)
@@ -63,8 +63,8 @@
 \r
        /* Function Prototypes: */              \r
                bool TINYNVM_WaitWhileNVMBusBusy(void);\r
 \r
        /* Function Prototypes: */              \r
                bool TINYNVM_WaitWhileNVMBusBusy(void);\r
-               bool TINYNVM_ReadMemory(const uint32_t ReadAddress, uint8_t* ReadBuffer, uint16_t ReadLength);\r
-               bool TINYNVM_WriteMemory(const uint32_t WriteAddress, const uint8_t* WriteBuffer, uint16_t WriteLength);\r
+               bool TINYNVM_ReadMemory(const uint16_t ReadAddress, uint8_t* ReadBuffer, uint16_t ReadLength);\r
+               bool TINYNVM_WriteMemory(const uint16_t WriteAddress, const uint8_t* WriteBuffer, uint16_t WriteLength);\r
                bool TINYNVM_EraseMemory(void);\r
 \r
                #if defined(INCLUDE_FROM_TINYNVM_C)\r
                bool TINYNVM_EraseMemory(void);\r
 \r
                #if defined(INCLUDE_FROM_TINYNVM_C)\r
index 1406428..0f590c7 100644 (file)
@@ -96,7 +96,7 @@ ISR(TIMER1_COMPA_vect, ISR_BLOCK)
 }\r
 \r
 /** ISR to manage the TPI software USART when bit-banged TPI USART mode is selected. */\r
 }\r
 \r
 /** ISR to manage the TPI software USART when bit-banged TPI USART mode is selected. */\r
-ISR(TIMER1_COMPB_vect, ISR_BLOCK)\r
+ISR(TIMER1_CAPT_vect, ISR_BLOCK)\r
 {\r
        /* Toggle CLOCK pin in a single cycle (see AVR datasheet) */\r
        BITBANG_TPICLOCK_PIN |= BITBANG_TPICLOCK_MASK;\r
 {\r
        /* Toggle CLOCK pin in a single cycle (see AVR datasheet) */\r
        BITBANG_TPICLOCK_PIN |= BITBANG_TPICLOCK_MASK;\r
@@ -209,10 +209,10 @@ void XPROGTarget_EnableTargetTPI(void)
        /* Set DATA line high for idle state */\r
        BITBANG_TPIDATA_PORT |= BITBANG_TPIDATA_MASK;\r
 \r
        /* Set DATA line high for idle state */\r
        BITBANG_TPIDATA_PORT |= BITBANG_TPIDATA_MASK;\r
 \r
-       /* Fire timer capture channel ISR to manage the software USART */\r
-       OCR1B   = BITS_BETWEEN_USART_CLOCKS;\r
-       TCCR1B  = (1 << WGM12) | (1 << CS10);\r
-       TIMSK1  = (1 << OCIE1B);\r
+       /* Fire timer capture channel ISR to manage the software USART */\r
+       ICR1    = BITS_BETWEEN_USART_CLOCKS;\r
+       TCCR1B  = (1 << WGM13) | (1 << WGM12) | (1 << CS10);\r
+       TIMSK1  = (1 << ICIE1);\r
 #endif\r
 \r
        /* Send two BREAKs of 12 bits each to enable TPI interface (need at least 16 idle bits) */\r
 #endif\r
 \r
        /* Send two BREAKs of 12 bits each to enable TPI interface (need at least 16 idle bits) */\r