diff --git a/chipdef.h b/chipdef.h index afbf5f9..63f67e7 100644 --- a/chipdef.h +++ b/chipdef.h @@ -37,6 +37,9 @@ typedef uint8_t pagebuf_t; #elif defined(__AVR_ATmega324P__) #include "mega324p.h" +#elif defined(__AVR_ATmega64__) +#include "mega64.h" + #elif defined(__AVR_ATmega644__) #include "mega644.h" diff --git a/makefile b/makefile index 65fc388..986359b 100644 --- a/makefile +++ b/makefile @@ -43,6 +43,7 @@ ## MCU = atmega169 ## MCU = atmega32 MCU = atmega324p +## MCU = atmega64 ## MCU = atmega644 ## MCU = atmega644p ## MCU = atmega128 @@ -170,6 +171,23 @@ ifeq ($(BOOTSIZE), 2048) endif endif +## +ifeq ($(MCU), atmega64) +BFD_MACH=avr5 +ifeq ($(BOOTSIZE), 512) + MT_BOOTLOADER_ADDRESS = 0xFC00 +endif +ifeq ($(BOOTSIZE), 1024) + MT_BOOTLOADER_ADDRESS = 0xF800 +endif +ifeq ($(BOOTSIZE), 2048) + MT_BOOTLOADER_ADDRESS = 0xF000 +endif +ifeq ($(BOOTSIZE), 4096) + MT_BOOTLOADER_ADDRESS = 0xE000 +endif +endif + ## ifeq ($(MCU), atmega644) BFD_MACH=avr5 diff --git a/mega64.h b/mega64.h new file mode 100644 index 0000000..e84e786 --- /dev/null +++ b/mega64.h @@ -0,0 +1,46 @@ +#ifndef _MEGA64_H_ +#define _MEGA64_H_ + +/* 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 0x02 + + +#ifdef UART_DOUBLESPEED +#define UART_CALC_BAUDRATE(baudRate) (((F_CPU*10UL) / ((baudRate) *8UL) +5)/10 -1) +#else +#define UART_CALC_BAUDRATE(baudRate) (((F_CPU*10UL) / ((baudRate)*16UL) +5)/10 -1) +#endif + +#ifndef UART_USE_SECOND +#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<