Browse Source

disable watchdog after reset, reduce size

pull/1/head
Olaf Rempel 11 years ago
parent
commit
997af25bee
1 changed files with 15 additions and 2 deletions
  1. +15
    -2
      main.c

+ 15
- 2
main.c View File

@@ -76,7 +76,7 @@ const static uint8_t info[16] = "TWIBOOT m88-v12";
const static uint8_t signature[4] = { 0x1E, 0x93, 0x0A, 0x00 };

/* wait 40 * 25ms = 1s */
volatile static uint8_t boot_timeout = 40;
static uint8_t boot_timeout = 40;
volatile static uint8_t cmd = CMD_WAIT;

/* flash buffer */
@@ -267,6 +267,19 @@ ISR(TIMER0_OVF_vect)

static void (*jump_to_app)(void) = 0x0000;

/*
* For newer devices (mega88) the watchdog timer remains active even after a
* system reset. So disable it as soon as possible.
* automagically called on startup
*/
void disable_wdt_timer(void) __attribute__((naked, section(".init3")));
void disable_wdt_timer(void)
{
MCUSR = 0;
WDTCSR = (1<<WDCE) | (1<<WDE);
WDTCSR = (0<<WDE);
}

int main(void)
{
DDRB = LED_GN | LED_RT;
@@ -280,7 +293,7 @@ int main(void)
TCCR0B = (1<<CS02) | (1<<CS00);

/* enable timer0 OVF interrupt */
TIMSK0 |= (1<<TOIE0);
TIMSK0 = (1<<TOIE0);

/* TWI init: set address, auto ACKs with interrupts */
TWAR = (TWI_ADDRESS<<1);

Loading…
Cancel
Save