#include <stdint.h>
#include <stdbool.h>
#include <string.h>
+ #include <stddef.h>
#include "Architectures.h"
#include "Attributes.h"
#include "BoardTypes.h"
/* Architecture specific utility includes: */
- #if (ARCH == ARCH_AVR8)
+ #if defined(__DOXYGEN__)
+ /** Type define for an unsigned integer the same width as the selected architecture's machine register. */
+ typedef MACHINE_REG_t uint_reg_t;
+ #elif (ARCH == ARCH_AVR8)
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h>
#include <avr/boot.h>
#include <util/atomic.h>
#include <util/delay.h>
+
+ typedef uint8_t uint_reg_t;
+ #elif (ARCH == ARCH_UC3B)
+ #include <avr32/io.h>
+
+ typedef uint32_t uint_reg_t;
+
+ // TODO
+ #define EEMEM
+ #define PROGMEM const
+ #define ISR(Name) void Name (void)
+ #define ATOMIC_BLOCK(x) if (1)
+ #define ATOMIC_RESTORESTATE
+ #define pgm_read_byte(x) *x
+ #define eeprom_read_byte(x) *x
+ #define eeprom_update_byte(x, y) *x = y
+ #define eeprom_write_byte(x, y) *x = y
+ #define _delay_ms(x)
+ #define memcmp_P(...) memcmp(__VA_ARGS__)
+ #define memcpy_P(...) memcpy(__VA_ARGS__)
+
+ #warning The UC3B architecture support is currently experimental and incomplete!
#endif
/* Public Interface - May be used in end-application: */