diff --git a/optiboot/bootloaders/optiboot/optiboot.c b/optiboot/bootloaders/optiboot/optiboot.c index b1176ad..ab59436 100644 --- a/optiboot/bootloaders/optiboot/optiboot.c +++ b/optiboot/bootloaders/optiboot/optiboot.c @@ -625,8 +625,17 @@ int main(void) { #if LED_START_FLASHES > 0 // Set up Timer 1 for timeout counter +#if defined(__AVR_ATtiny261__)||defined(__AVR_ATtiny461__)||defined(__AVR_ATtiny861__) + TCCR1B = 0x0E; //div 8196 - we could divide by less since it's a 10-bit counter, but why? +#elif defined(__AVR_ATtiny25__)||defined(__AVR_ATtiny45__)||defined(__AVR_ATtiny85__) + TCCR1 = 0x0E; //div 8196 - it's an 8-bit timer. +#elif defined(__AVR_ATtiny43__) + #error "LED flash for Tiny43 not yet supported" +#else TCCR1B = _BV(CS12) | _BV(CS10); // div 1024 #endif +#endif + #ifndef SOFT_UART #if defined(__AVR_ATmega8__) || defined (__AVR_ATmega8515__) || \ @@ -1056,9 +1065,18 @@ void verifySpace() { #if LED_START_FLASHES > 0 void flash_led(uint8_t count) { do { - TCNT1 = -(F_CPU/(1024*16)); - TIFR1 = _BV(TOV1); - while(!(TIFR1 & _BV(TOV1))); + #if defined(__AVR_ATtiny261__)||defined(__AVR_ATtiny461__)||defined(__AVR_ATtiny861__) || defined(__AVR_ATtiny25__)||defined(__AVR_ATtiny45__)||defined(__AVR_ATtiny85__) + TCNT1 = -(F_CPU/(8196*16)); + TIFR = _BV(TOV1); + while(!(TIFR & _BV(TOV1))); + #elif defined(__AVR_ATtiny43__) + #error "LED flash for Tiny43 not yet supported" + #else + TCNT1 = -(F_CPU/(1024*16)); + TIFR1 = _BV(TOV1); + while(!(TIFR1 & _BV(TOV1))); + #endif + #if defined(__AVR_ATmega8__) || defined(__AVR_ATmega8515__) || \ defined(__AVR_ATmega8535__) || defined(__AVR_ATmega16__) || \ defined(__AVR_ATmega162__) || defined(__AVR_ATmega32__) || \