Fixed bug in the TWI peripheral driver for the AVR8 devices causing incorrect failure...
[pub/USBasp.git] / LUFA / Drivers / Peripheral / AVR8 / TWI_AVR8.c
index 9cfad9a..e7629d5 100644 (file)
@@ -45,7 +45,7 @@ uint8_t TWI_StartTransmission(const uint8_t SlaveAddress,
                TWCR = ((1 << TWINT) | (1 << TWSTA) | (1 << TWEN));
 
                TimeoutRemaining = (TimeoutMS * 100);
-               while (TimeoutRemaining-- && !(BusCaptured))
+               while (TimeoutRemaining && !(BusCaptured))
                {
                        if (TWCR & (1 << TWINT))
                        {
@@ -65,6 +65,7 @@ uint8_t TWI_StartTransmission(const uint8_t SlaveAddress,
                        }
 
                        _delay_us(10);
+                       TimeoutRemaining--;
                }
 
                if (!(TimeoutRemaining))
@@ -77,12 +78,13 @@ uint8_t TWI_StartTransmission(const uint8_t SlaveAddress,
                TWCR = ((1 << TWINT) | (1 << TWEN));
 
                TimeoutRemaining = (TimeoutMS * 100);
-               while (TimeoutRemaining--)
+               while (TimeoutRemaining)
                {
                        if (TWCR & (1 << TWINT))
                          break;
 
                        _delay_us(10);
+                       TimeoutRemaining--;
                }
 
                if (!(TimeoutRemaining))