diff options
Diffstat (limited to 'Bootloader/mega644.h')
-rw-r--r-- | Bootloader/mega644.h | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/Bootloader/mega644.h b/Bootloader/mega644.h new file mode 100644 index 0000000..0926944 --- /dev/null +++ b/Bootloader/mega644.h @@ -0,0 +1,42 @@ +#ifndef _MEGA644_H_ +#define _MEGA644_H_ + +/* I (M. Thomas) could not find an official Boot-ID + for the ATmega644 so pretend it's an ATmega64 */ +/* Part-Code ISP */ +#define DEVTYPE_ISP 0x45 +/* Part-Code Boot */ +#define DEVTYPE_BOOT 0x46 + +#define SIG_BYTE1 0x1E +#define SIG_BYTE2 0x96 +#define SIG_BYTE3 0x09 + +#define UART_BAUD_HIGH UBRR0H +#define UART_BAUD_LOW UBRR0L +#define UART_STATUS UCSR0A +#define UART_TXREADY UDRE0 +#define UART_RXREADY RXC0 +#define UART_DOUBLE U2X0 +#define UART_CTRL UCSR0B +#define UART_CTRL_DATA ((1<<TXEN0) | (1<<RXEN0)) +#define UART_CTRL2 UCSR0C +#define UART_CTRL2_DATA ( (1<<UCSZ01) | (1<<UCSZ00)) +#define UART_DATA UDR0 + +#define WDT_OFF_SPECIAL +static inline void bootloader_wdt_off(void) +{ + cli(); + wdt_reset(); + /* Clear WDRF in MCUSR */ + MCUSR &= ~(1<<WDRF); + /* Write logical one to WDCE and WDE */ + /* Keep old prescaler setting to prevent unintentional time-out */ + WDTCSR |= (1<<WDCE) | (1<<WDE); + /* Turn off WDT */ + WDTCSR = 0x00; +} + + +#endif // #ifndef _MEGA644_H_ |