Hardware interrupts should be enabled separately by using the lines:
#include <avr/io.h>
PMIC.CTRL |= PMIC_LOLVLEX_bm | PMIC_MEDLVLEX_bm | PMIC_HILVLEX_bm;
These should go into a separate init file specific for AVR XMega.
Signed-off-by: Onno <developer@gorgoz.org>
Reviewed-by: Luca Ottaviano <lottaviano@develer.com>
git-svn-id: https://src.develer.com/svnoss/bertos/trunk@4843
38d2e660-2303-0410-9eaa-
f027e97ec537
#define CPU_RAM_START 0x100
#elif CPU_AVR_ATMEGA1281 || CPU_AVR_ATMEGA1280 || CPU_AVR_ATMEGA2560
#define CPU_RAM_START 0x200
#define CPU_RAM_START 0x100
#elif CPU_AVR_ATMEGA1281 || CPU_AVR_ATMEGA1280 || CPU_AVR_ATMEGA2560
#define CPU_RAM_START 0x200
+ #elif CPU_AVR_XMEGA_D
+ #define CPU_RAM_START 0x2000
#else
#warning Fix CPU_RAM_START address for your AVR, default value set to 0x100
#define CPU_RAM_START 0x100
#else
#warning Fix CPU_RAM_START address for your AVR, default value set to 0x100
#define CPU_RAM_START 0x100
+;FIXME: We probably need to safe the RAMP registers for some XMEGA devices / setups
+
; Set new stack pointer.
; AVR is an 8 bit processor so
; care must be taken when updating
; Set new stack pointer.
; AVR is an 8 bit processor so
; care must be taken when updating
#define CPU_CORE_NAME "AVR"
#if defined(__AVR_ATmega32__)
#define CPU_CORE_NAME "AVR"
#if defined(__AVR_ATmega32__)
#define CPU_AVR_ATMEGA32 1
#define CPU_NAME "ATmega32"
#else
#define CPU_AVR_ATMEGA32 1
#define CPU_NAME "ATmega32"
#else
#endif
#if defined(__AVR_ATmega64__)
#endif
#if defined(__AVR_ATmega64__)
#define CPU_AVR_ATMEGA64 1
#define CPU_NAME "ATmega64"
#else
#define CPU_AVR_ATMEGA64 1
#define CPU_NAME "ATmega64"
#else
#endif
#if defined(__AVR_ATmega103__)
#endif
#if defined(__AVR_ATmega103__)
#define CPU_AVR_ATMEGA103 1
#define CPU_NAME "ATmega103"
#else
#define CPU_AVR_ATMEGA103 1
#define CPU_NAME "ATmega103"
#else
#endif
#if defined(__AVR_ATmega128__)
#endif
#if defined(__AVR_ATmega128__)
#define CPU_AVR_ATMEGA128 1
#define CPU_NAME "ATmega128"
#else
#define CPU_AVR_ATMEGA128 1
#define CPU_NAME "ATmega128"
#else
#endif
#if defined(__AVR_ATmega8__)
#endif
#if defined(__AVR_ATmega8__)
#define CPU_AVR_ATMEGA8 1
#define CPU_NAME "ATmega8"
#else
#define CPU_AVR_ATMEGA8 1
#define CPU_NAME "ATmega8"
#else
#endif
#if defined(__AVR_ATmega168__)
#endif
#if defined(__AVR_ATmega168__)
#define CPU_AVR_ATMEGA168 1
#define CPU_NAME "ATmega168"
#else
#define CPU_AVR_ATMEGA168 1
#define CPU_NAME "ATmega168"
#else
#endif
#if defined(__AVR_ATmega328P__)
#endif
#if defined(__AVR_ATmega328P__)
#define CPU_AVR_ATMEGA328P 1
#define CPU_NAME "ATmega328P"
#else
#define CPU_AVR_ATMEGA328P 1
#define CPU_NAME "ATmega328P"
#else
#endif
#if defined(__AVR_ATmega1281__)
#endif
#if defined(__AVR_ATmega1281__)
#define CPU_AVR_ATMEGA1281 1
#define CPU_NAME "ATmega1281"
#else
#define CPU_AVR_ATMEGA1281 1
#define CPU_NAME "ATmega1281"
#else
#endif
#if defined(__AVR_ATmega1280__)
#endif
#if defined(__AVR_ATmega1280__)
#define CPU_AVR_ATMEGA1280 1
#define CPU_NAME "ATmega1280"
#else
#define CPU_AVR_ATMEGA1280 1
#define CPU_NAME "ATmega1280"
#else
#endif
#if defined(__AVR_ATmega2560__)
#endif
#if defined(__AVR_ATmega2560__)
#define CPU_AVR_ATMEGA2560 1
#define CPU_NAME "ATmega2560"
#else
#define CPU_AVR_ATMEGA2560 0
#endif
#define CPU_AVR_ATMEGA2560 1
#define CPU_NAME "ATmega2560"
#else
#define CPU_AVR_ATMEGA2560 0
#endif
+ #if defined(__AVR_ATxmega32D4__)
+ #define CPU_AVR_XMEGA 1
+ #define CPU_AVR_XMEGA_D 1
+ #define CPU_AVR_ATXMEGA32D4 1
+ #define CPU_NAME "ATxmega32d4"
+ #else
+ #define CPU_AVR_ATXMEGA32D4 0
+ #endif
+
#if CPU_AVR_ATMEGA32 + CPU_AVR_ATMEGA64 + CPU_AVR_ATMEGA103 + CPU_AVR_ATMEGA128 \
+ CPU_AVR_ATMEGA8 + CPU_AVR_ATMEGA168 + CPU_AVR_ATMEGA328P + CPU_AVR_ATMEGA1281 \
#if CPU_AVR_ATMEGA32 + CPU_AVR_ATMEGA64 + CPU_AVR_ATMEGA103 + CPU_AVR_ATMEGA128 \
+ CPU_AVR_ATMEGA8 + CPU_AVR_ATMEGA168 + CPU_AVR_ATMEGA328P + CPU_AVR_ATMEGA1281 \
- + CPU_AVR_ATMEGA1280 + CPU_AVR_ATMEGA2560 != 1
+ + CPU_AVR_ATMEGA1280 + CPU_AVR_ATMEGA2560 + CPU_AVR_ATXMEGA32D4 != 1
#error AVR CPU configuration error
#endif
#error AVR CPU configuration error
#endif
+
+ #if defined(CPU_AVR_XMEGA) && defined(CPU_AVR_MEGA)
+ #error CPU cannot be MEGA and XMEGA
+ #elif defined(CPU_AVR_MEGA)
+ #define CPU_AVR_XMEGA 0
+ #elif defined(CPU_AVR_XMEGA)
+ #define CPU_AVR_MEGA 0
+ #endif
+
+ #if CPU_AVR_MEGA + CPU_AVR_XMEGA != 1
+ #error AVR CPU configuration error
+ #endif
+
#define CPU_AVR_ATMEGA8 0
#define CPU_AVR_ATMEGA168 0
#define CPU_AVR_ATMEGA328P 0
#define CPU_AVR_ATMEGA8 0
#define CPU_AVR_ATMEGA168 0
#define CPU_AVR_ATMEGA328P 0
#define CPU_AVR_ATMEGA1281 0
#define CPU_AVR_ATMEGA1280 0
#define CPU_AVR_ATMEGA2560 0
#define CPU_AVR_ATMEGA1281 0
#define CPU_AVR_ATMEGA1280 0
#define CPU_AVR_ATMEGA2560 0
+ #define CPU_AVR_XMEGA 0
+ #define CPU_AVR_XMEGA_D 0
#endif
#if defined (__MSP430__)
#endif
#if defined (__MSP430__)