diff --git a/cpu/avr/Makefile.avr b/cpu/avr/Makefile.avr index e87c0764d..7350b1866 100644 --- a/cpu/avr/Makefile.avr +++ b/cpu/avr/Makefile.avr @@ -1,4 +1,4 @@ -# $Id: Makefile.avr,v 1.10 2008/02/07 19:56:56 oliverschmidt Exp $ +# $Id: Makefile.avr,v 1.11 2008/10/14 09:44:12 adamdunkels Exp $ ### Check if we are running under Windows @@ -12,6 +12,9 @@ endif .SUFFIXES: +### Optimization setting +OPTI=s + ### Define the CPU directory CONTIKI_CPU=$(CONTIKI)/cpu/avr @@ -35,12 +38,12 @@ AS = avr-as AR = avr-ar OBJCOPY = avr-objcopy STRIP = avr-strip -CFLAGSNO = -I. -I$(CONTIKI)/core -I$(CONTIKI_CPU) \ +CFLAGSNO = -I. -I$(CONTIKI)/core -I$(CONTIKI_CPU) $(USB_INCLUDES) \ -I$(CONTIKI)/platform/$(TARGET) \ ${addprefix -I,$(APPDIRS)} \ - -Wall -mmcu=$(MCU) -gstabs -CFLAGS = $(CFLAGSNO) -Os -BOOTLOADER_START = 0x1e000 + -Wall -mmcu=$(MCU) -gdwarf-2 $(CONTIKI_PLAT_DEFS) +CFLAGS += $(CFLAGSNO) -O$(OPTI) +BOOTLOADER_START = 0x1FC00 LDFLAGS = -mmcu=$(MCU) -Wl,-Map=contiki-$(TARGET).map \ -Wl,--section-start=.bootloader=$(BOOTLOADER_START) @@ -50,9 +53,11 @@ LDFLAGS = -mmcu=$(MCU) -Wl,-Map=contiki-$(TARGET).map \ CONTIKI_TARGET_DIRS_CONCAT = ${addprefix $(CONTIKI)/platform/$(TARGET)/, \ $(CONTIKI_TARGET_DIRS)} -vpath %.c $(PROJECTDIRS) $(CONTIKI)/cpu/avr/dev \ +vpath %.c $(PROJECTDIRS) $(CONTIKI)/cpu/avr/dev $(CONTIKI)/cpu/avr/dev/usb \ + $(CONTIKI)/cpu/avr/dev/usb/rndis $(CONTIKI)/cpu/avr/dev/usb/serial \ + $(CONTIKI)/cpu/avr/dev/usb/storage \ $(CONTIKIDIRS) $(APPDIRS) $(CONTIKI_TARGET_DIRS_CONCAT) \ - $(CONTIKI_CPU) + $(CONTIKI_CPU) $(CONTIKI)/cpu/avr/radio/rf230 $(CONTIKI)/cpu/avr/radio/mac ### Compilation rules diff --git a/cpu/avr/rtimer-arch.c b/cpu/avr/rtimer-arch.c index dce3407e5..b3fb5a78b 100644 --- a/cpu/avr/rtimer-arch.c +++ b/cpu/avr/rtimer-arch.c @@ -28,7 +28,7 @@ * * This file is part of the Contiki operating system. * - * $Id: rtimer-arch.c,v 1.2 2007/12/11 17:21:14 joxe Exp $ + * $Id: rtimer-arch.c,v 1.3 2008/10/14 09:44:12 adamdunkels Exp $ */ /** @@ -48,10 +48,21 @@ #include "lib/energest.h" #include "sys/rtimer.h" #include "rtimer-arch.h" + +#if defined(__AVR_ATmega1284P__) + #define ETIMSK TIMSK3 + #define ETIFR TIFR3 + #define TICIE3 ICIE3 + + //Has no 'C', so we just set it to B. The code doesn't really use C so this + //is safe to do but lets it compile + #define OCIE3C OCIE3B + #define OCF3C OCF3B +#endif /*---------------------------------------------------------------------------*/ #ifdef TCNT3 -SIGNAL (SIG_OUTPUT_COMPARE3A) { +ISR (TIMER3_COMPA_vect) { ENERGEST_ON(ENERGEST_TYPE_IRQ); ETIMSK &= ~((1 << OCIE3A) | (1 << OCIE3B) | (1 << TOIE3) | @@ -61,7 +72,11 @@ SIGNAL (SIG_OUTPUT_COMPARE3A) { rtimer_run_next(); ENERGEST_OFF(ENERGEST_TYPE_IRQ); -} +} + +#else +#error "No Timer3 in rtimer-arch.c" + #endif /*---------------------------------------------------------------------------*/ void @@ -88,7 +103,10 @@ rtimer_arch_init(void) TCNT3 = 0; /* Maximum prescaler */ - TCCR3B |= 5; + TCCR3B |= 5; + +#else +#error "No Timer3 in rtimer-arch.c" #endif @@ -109,7 +127,10 @@ rtimer_arch_schedule(rtimer_clock_t t) OCR3A = t; ETIFR |= (1 << ICF3) | (1 << OCF3A) | (1 << OCF3B) | (1 << TOV3) | (1 << OCF3C); - ETIMSK |= (1 << OCIE3A); + ETIMSK |= (1 << OCIE3A); + +#else +#error "No Timer3 in rtimer-arch.c" #endif