add netio and funkstuff boards
This commit is contained in:
parent
92d3f545a3
commit
788e4dd633
36
Makefile
36
Makefile
@ -9,10 +9,12 @@ SOURCE = $(wildcard *.c)
|
|||||||
|
|
||||||
#CONFIG = ispprog
|
#CONFIG = ispprog
|
||||||
#CONFIG = flightctrl
|
#CONFIG = flightctrl
|
||||||
#CONFIG = funkstuff
|
#CONFIG = funkstuff88
|
||||||
CONFIG = ispprog2
|
CONFIG = funkstuff168
|
||||||
|
#CONFIG = ispprog2
|
||||||
|
#CONFIG = avrnetio
|
||||||
|
|
||||||
AVRDUDE_PROG := -c avr910 -b 115200 -P /dev/ttyUSB0
|
AVRDUDE_PROG := -c avr910 -b 115200 -P /dev/ispprog
|
||||||
#AVRDUDE_PROG := -c dragon_isp -P usb
|
#AVRDUDE_PROG := -c dragon_isp -P usb
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
@ -39,17 +41,28 @@ endif
|
|||||||
|
|
||||||
# -------------------------
|
# -------------------------
|
||||||
|
|
||||||
ifeq ($(CONFIG), funkstuff)
|
ifeq ($(CONFIG), funkstuff88)
|
||||||
MCU=atmega88
|
MCU=atmega88
|
||||||
AVRDUDE_MCU=m88 -F
|
AVRDUDE_MCU=m88 -F
|
||||||
|
|
||||||
# (ext. crystal)
|
# (8MHz internal osc., 2.7V BOD)
|
||||||
#AVRDUDE_FUSES=lfuse:w:0x84:m hfuse:w:0xda:m
|
AVRDUDE_FUSES=lfuse:w:0xe2:m hfuse:w:0xdd:m efuse:w:0x02:m
|
||||||
BOOTLOADER_START=0x1C00
|
BOOTLOADER_START=0x1C00
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# -------------------------
|
# -------------------------
|
||||||
|
|
||||||
|
ifeq ($(CONFIG), funkstuff168)
|
||||||
|
MCU=atmega168
|
||||||
|
AVRDUDE_MCU=m168 -F
|
||||||
|
|
||||||
|
# (ext. crystal 16MHz, 2.7V BOD)
|
||||||
|
AVRDUDE_FUSES=lfuse:w:0xff:m hfuse:w:0xdd:m efuse:w:0x02:m
|
||||||
|
BOOTLOADER_START=0x3C00
|
||||||
|
endif
|
||||||
|
|
||||||
|
# -------------------------
|
||||||
|
|
||||||
ifeq ($(CONFIG), ispprog2)
|
ifeq ($(CONFIG), ispprog2)
|
||||||
MCU=atmega328p
|
MCU=atmega328p
|
||||||
AVRDUDE_MCU=m328p -F
|
AVRDUDE_MCU=m328p -F
|
||||||
@ -59,6 +72,17 @@ AVRDUDE_FUSES=lfuse:w:0xe2:m hfuse:w:0xdc:m efuse:w:0x02:m
|
|||||||
BOOTLOADER_START=0x7C00
|
BOOTLOADER_START=0x7C00
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# -------------------------
|
||||||
|
|
||||||
|
ifeq ($(CONFIG), avrnetio)
|
||||||
|
MCU=atmega644
|
||||||
|
AVRDUDE_MCU=m644
|
||||||
|
|
||||||
|
# (16MHz ext. crystal, 2.7V BOD)
|
||||||
|
AVRDUDE_FUSES=lfuse:w:0xd7:m hfuse:w:0xdc:m efuse:w:0xfd:m
|
||||||
|
BOOTLOADER_START=0xF800
|
||||||
|
endif
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
|
|
||||||
CFLAGS = -pipe -g -Os -mmcu=$(MCU) -Wall
|
CFLAGS = -pipe -g -Os -mmcu=$(MCU) -Wall
|
||||||
|
83
main.c
83
main.c
@ -52,7 +52,7 @@
|
|||||||
/* *********************************************************************** */
|
/* *********************************************************************** */
|
||||||
#elif defined(CONFIG_flightctrl)
|
#elif defined(CONFIG_flightctrl)
|
||||||
/*
|
/*
|
||||||
* using ATmega644 @20MHz:
|
* using ATmega644P @20MHz:
|
||||||
* Fuse E: 0xFD (2.7V BOD)
|
* Fuse E: 0xFD (2.7V BOD)
|
||||||
* Fuse H: 0xDC (1024 words bootloader)
|
* Fuse H: 0xDC (1024 words bootloader)
|
||||||
* Fuse L: 0xFF (ext. Crystal)
|
* Fuse L: 0xFF (ext. Crystal)
|
||||||
@ -81,11 +81,11 @@
|
|||||||
#define SUPPORT_MKBL 1
|
#define SUPPORT_MKBL 1
|
||||||
|
|
||||||
/* *********************************************************************** */
|
/* *********************************************************************** */
|
||||||
#elif defined(CONFIG_funkstuff)
|
#elif defined(CONFIG_funkstuff88)
|
||||||
/*
|
/*
|
||||||
* using ATmega88 @8MHz:
|
* using ATmega88 @8MHz:
|
||||||
* Fuse E: 0xFA (2.7V BOD)
|
* Fuse E: 0xFA (512 words bootloader)
|
||||||
* Fuse H: 0xDD (512 words bootloader)
|
* Fuse H: 0xDD (2.7V BOD)
|
||||||
* Fuse L: 0xE2 (internal osc)
|
* Fuse L: 0xE2 (internal osc)
|
||||||
*/
|
*/
|
||||||
#define F_CPU 8000000
|
#define F_CPU 8000000
|
||||||
@ -102,11 +102,39 @@
|
|||||||
//#define ISP_NUM PIND3
|
//#define ISP_NUM PIND3
|
||||||
//#define ISP_POL 1
|
//#define ISP_POL 1
|
||||||
|
|
||||||
/* low active led on PORTB3 */
|
/* low active led on PORTD6 */
|
||||||
//#define LED_DDR DDRB
|
#define LED_DDR DDRD
|
||||||
//#define LED_PORT PORTB
|
#define LED_PORT PORTD
|
||||||
//#define LED_NUM PORTB3
|
#define LED_NUM PORTD6
|
||||||
//#define LED_POL 0
|
#define LED_POL 0
|
||||||
|
|
||||||
|
/* *********************************************************************** */
|
||||||
|
#elif defined(CONFIG_funkstuff168)
|
||||||
|
/*
|
||||||
|
* using ATmega168 @16MHz:
|
||||||
|
* Fuse E: 0xFA (512 words bootloader)
|
||||||
|
* Fuse H: 0xDD (2.7V BOD)
|
||||||
|
* Fuse L: 0xFF (external crystal)
|
||||||
|
*/
|
||||||
|
#define F_CPU 16000000
|
||||||
|
#define BAUDRATE 19200
|
||||||
|
#define DEVCODE 0x74 /* mega16 devcode */
|
||||||
|
|
||||||
|
/* 100 * 10ms => 1000ms */
|
||||||
|
#define TIMEOUT 100
|
||||||
|
|
||||||
|
/* enter bootloader if PIND3 is high */
|
||||||
|
//#define ISP_DDR DDRD
|
||||||
|
//#define ISP_PIN PIND
|
||||||
|
//#define ISP_PORT PORTD
|
||||||
|
//#define ISP_NUM PIND3
|
||||||
|
//#define ISP_POL 1
|
||||||
|
|
||||||
|
/* low active led on PORTD6 */
|
||||||
|
#define LED_DDR DDRD
|
||||||
|
#define LED_PORT PORTD
|
||||||
|
#define LED_NUM PORTD6
|
||||||
|
#define LED_POL 0
|
||||||
|
|
||||||
/* *********************************************************************** */
|
/* *********************************************************************** */
|
||||||
#elif defined(CONFIG_ispprog2)
|
#elif defined(CONFIG_ispprog2)
|
||||||
@ -136,6 +164,28 @@
|
|||||||
#define LED_NUM PORTB0
|
#define LED_NUM PORTB0
|
||||||
#define LED_POL 1
|
#define LED_POL 1
|
||||||
|
|
||||||
|
/* *********************************************************************** */
|
||||||
|
#elif defined(CONFIG_avrnetio)
|
||||||
|
/*
|
||||||
|
* using ATmega644 @16MHz:
|
||||||
|
* Fuse E: 0xFD (2.7V BOD)
|
||||||
|
* Fuse H: 0xDC (1024 words bootloader)
|
||||||
|
* Fuse L: 0xD7 (ext. Crystal)
|
||||||
|
*/
|
||||||
|
#define F_CPU 16000000
|
||||||
|
#define BAUDRATE 38400
|
||||||
|
#define DEVCODE 0x74 /* mega16 devcode */
|
||||||
|
|
||||||
|
/* 100 * 10ms => 1000ms */
|
||||||
|
#define TIMEOUT 100
|
||||||
|
|
||||||
|
/* enter bootloader if PINB1 is low */
|
||||||
|
#define ISP_DDR DDRB
|
||||||
|
#define ISP_PIN PINB
|
||||||
|
#define ISP_PORT PORTB
|
||||||
|
#define ISP_NUM PINB1
|
||||||
|
#define ISP_POL 0
|
||||||
|
|
||||||
/* *********************************************************************** */
|
/* *********************************************************************** */
|
||||||
#else
|
#else
|
||||||
#error "unknown CONFIG"
|
#error "unknown CONFIG"
|
||||||
@ -208,7 +258,8 @@ static uint8_t recvcheck(void)
|
|||||||
} /* recvcheck */
|
} /* recvcheck */
|
||||||
#endif /* defined(TIMEOUT) */
|
#endif /* defined(TIMEOUT) */
|
||||||
|
|
||||||
#elif defined(__AVR_ATmega88__) || defined(__AVR_ATmega328P__) || defined(__AVR_ATmega644P__)
|
#else
|
||||||
|
|
||||||
static void uartinit(void)
|
static void uartinit(void)
|
||||||
{
|
{
|
||||||
/* set baudrate */
|
/* set baudrate */
|
||||||
@ -287,11 +338,9 @@ static void writeEEpromPage(uint16_t size)
|
|||||||
#if defined(__AVR_ATmega16__)
|
#if defined(__AVR_ATmega16__)
|
||||||
EECR |= (1<<EEMWE);
|
EECR |= (1<<EEMWE);
|
||||||
EECR |= (1<<EEWE);
|
EECR |= (1<<EEWE);
|
||||||
#elif defined(__AVR_ATmega88__) || defined(__AVR_ATmega328P__) || defined(__AVR_ATmega644P__)
|
#else
|
||||||
EECR |= (1<<EEMPE);
|
EECR |= (1<<EEMPE);
|
||||||
EECR |= (1<<EEPE);
|
EECR |= (1<<EEPE);
|
||||||
#else
|
|
||||||
#error writeEEpromPage() not implemented
|
|
||||||
#endif
|
#endif
|
||||||
eeprom_busy_wait();
|
eeprom_busy_wait();
|
||||||
|
|
||||||
@ -324,7 +373,11 @@ static void readSendEEpromPage(uint16_t size)
|
|||||||
} /* readSendEEpromPage */
|
} /* readSendEEpromPage */
|
||||||
|
|
||||||
|
|
||||||
#if defined(__AVR_ATmega88__) || defined(__AVR_ATmega328P__) || defined(__AVR_ATmega644P__)
|
#if defined(__AVR_ATmega88__) || \
|
||||||
|
defined(__AVR_ATmega168__) || \
|
||||||
|
defined(__AVR_ATmega328P__) || \
|
||||||
|
defined(__AVR_ATmega644__) || \
|
||||||
|
defined(__AVR_ATmega644P__)
|
||||||
/*
|
/*
|
||||||
* For newer devices the watchdog timer remains active even after a
|
* For newer devices the watchdog timer remains active even after a
|
||||||
* system reset. So disable it as soon as possible.
|
* system reset. So disable it as soon as possible.
|
||||||
@ -339,7 +392,9 @@ void disable_wdt_timer(void)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(ISP_NUM) || defined(TIMEOUT)
|
||||||
static void (*jump_to_app)(void) __attribute__ ((noreturn)) = 0x0000;
|
static void (*jump_to_app)(void) __attribute__ ((noreturn)) = 0x0000;
|
||||||
|
#endif
|
||||||
|
|
||||||
int main(void) __attribute__ ((noreturn));
|
int main(void) __attribute__ ((noreturn));
|
||||||
int main(void)
|
int main(void)
|
||||||
|
Loading…
Reference in New Issue
Block a user