Weddington, Eric wrote:
-----Original Message-----
The fuse API documentation doesn't seem to quite match up with the xmega implementation. I tried using the FUSES macro, but it doesn't appear to be defined when targeting an xmega16a4. However, the following does work.

/* Configure fuses. */
NVM_FUSES_t __fuse FUSEMEM = {
   .FUSEBYTE0 = FUSE0_DEFAULT,
   .FUSEBYTE1 = 0x00,
   .FUSEBYTE2 = (FUSE_BODPD0),
   .FUSEBYTE4 = FUSE4_DEFAULT,
   .FUSEBYTE5 = (FUSE_BODACT0 & FUSE_BODLVL2 & FUSE_BODLVL0)
};


Is this a user error, a bug, or is the xmega fuse API intentionally different?

My guess is that the API is intentionally different. However, it's a bug in 
that avr-libc is not correctly accounting for the differences. That's something 
we need to fix.

Would something like this be appropriate?

--- /usr/avr/include/avr/fuse.h 2010-03-10 16:32:49.000000000 -0800
+++ fuse.h      2010-03-13 10:54:26.000000000 -0800
@@ -261,8 +261,12 @@
 #endif

 #ifndef FUSES
+#ifdef __AVR_XMEGA__
+#define FUSES NVM_FUSES_t __fuse FUSEMEM
+#else
 #define FUSES __fuse_t __fuse FUSEMEM
 #endif
+#endif

 #endif /* !__ASSEMBLER__ */


--
Galen Seitz
gal...@seitzassoc.com


_______________________________________________
AVR-libc-dev mailing list
AVR-libc-dev@nongnu.org
http://lists.nongnu.org/mailman/listinfo/avr-libc-dev

Reply via email to