Beim avr-gcc musst du auch bloß die Fuses setzen, die du haben willst (also alle die auf 0 gesetzt werden sollen. Wenn man Makros verwendet werden diese intern invertiert. Steht alles in den .h Dateien.
Meine Headerdatei für den VS Test ist zum Beispiel
Code:
#ifndef _AST_FUSE_SET_ATMEGA8_H_
#define _AST_FUSE_SET_ATMEGA8_H_
#include <avr/io.h>
FUSES =
{
.low = (FUSE_SUT0 & FUSE_CKSEL3 & FUSE_CKSEL1 & FUSE_CKSEL0),// & FUSE_BODLEVEL & FUSE_BODEN),
.high = HFUSE_DEFAULT, //(FUSE_SPIEN & FUSE_BOOTSZ1 & FUSE_BOOTSZ0)
};
// high=0xD9 low=0x24
//zum Fusebits ermitteln
//http://palmavr.sourceforge.net/cgi-bin/fc.cgi
/*
Fuses
#define FUSE_MEMORY_SIZE 2
Low Fuse Byte
#define FUSE_CKSEL0 ~_BV(0)
#define FUSE_CKSEL1 ~_BV(1)
#define FUSE_CKSEL2 ~_BV(2)
#define FUSE_CKSEL3 ~_BV(3)
#define FUSE_SUT0 ~_BV(4)
#define FUSE_SUT1 ~_BV(5)
#define FUSE_BODEN ~_BV(6)
#define FUSE_BODLEVEL ~_BV(7)
#define LFUSE_DEFAULT (FUSE_SUT0 & FUSE_CKSEL3 & FUSE_CKSEL2 & FUSE_CKSEL1)
High Fuse Byte
#define FUSE_BOOTRST ~_BV(0)
#define FUSE_BOOTSZ0 ~_BV(1)
#define FUSE_BOOTSZ1 ~_BV(2)
#define FUSE_EESAVE ~_BV(3)
#define FUSE_CKOPT ~_BV(4)
#define FUSE_SPIEN ~_BV(5)
#define FUSE_WDTON ~_BV(6)
#define FUSE_RSTDISBL ~_BV(7)
#define HFUSE_DEFAULT (FUSE_SPIEN & FUSE_BOOTSZ1 & FUSE_BOOTSZ0)
Lock Bits
#define __LOCK_BITS_EXIST
#define __BOOT_LOCK_BITS_0_EXIST
#define __BOOT_LOCK_BITS_1_EXIST
*/
#endif // _AST_FUSE_SET_ATMEGA8_H_
Die defines sind aus der iom8.h. Muss man sich eben für jeden Typ extra raussuchen.
sast
Lesezeichen