Hallo, ich versuche zum ersten Mal die Fuse Bits im Xmega A1 zu setzen (mit AVR Studio 5.1), habe nur nen AVR-One-Debugger und kein STKxxx und deshalb etwas Muffe, dass ich auf dem Crumb-Board den Prozessor "zer-fuse" Habe <avr/fuse.h>: Fuse Support durchgelesen, habe aber Zweifel, dass das genau so beim Xmega + Studio 5.1 übertragbar ist. Hätte jeman ein kleines Beispiel? Außerdem gibt es die Einstellung "preserve EEPROM" unter Tools - Memory settings. Diese Einstellung gibt doch dann einen Konflikt mit der FUSES-Definition? Der (Kommandozeilen-) Aufruf "avr-objdump -s -j .fuse <ELF file>" scheint nicht mehr (so) zu funktionieren. Einzige Meldung: "<ELF file> : file format elf32-avr" Wie kann man sich das fuse-segment anzeigen lassen? Grüße Alex
Da leider niemand geantwortet hat,
beatworte ich das für andere jetzt selbst...
Beispiel:
#define WATCHD_C_WINDOW_8MS 0x0F
#define WATCHD_TIMEOUT_8S 0xFA
#define BOD_ACT_CONTINOUS (unsigned char)~_BV(2) // BOD: act.:
// contin, pdn: disable
FUSES =
{
.byte[0] = 0, // JTAG-ID
.byte[1] = (WATCHD_C_WINDOW_8MS & WATCHD_TIMEOUT_8S),
.byte[2] = BOD_ACT_CONTINOUS,
.byte[3] = 0xFF, // reserved
.byte[4] = FUSE_JTAGEN, // ext. Reset, 1k Startup= 0,
// WD kein lock, JTG enable
.byte[5] = FUSE_EESAVE & FUSE_BODLVL2 // BOD ~2,7V für 33MHz
};
Das reicht schon.
Fuses.h muss nicht angegeben werden, da schon durch <avr/io.h>
includiert wird.
Auch FUSE_MEMORY_SIZE muss nicht angegeben werden!
Vorsicht: Im Family-Datenblatt ist ein Fehler (siehe Errata A1)!
"BODACT fuse location is not correct
The fuses for enabling BOD in active mode (BODACT) are located at
FUSEBYTE2, bit 2 and 3 and not in FUSEBYTE 5 as described in the XMEGA A
Manual.."
Die in iox.h definierten Konstante "FUSE_..." sind sicherer anzuwenden,
da vergessene Werte ungesetzt (1) bleiben und werden verundet: Z.B:
FUSE_EESAVE & FUSE_BODLVL2 & FUSE_BODLVL1.
PS:
Brownout Spannungen:
Die im Datenblatt angegebenen Spannungen sind nicht genau.
Die Namen der in iox.h definierten Konstanten enum BODLVL_enum
stimmen deutlich besser - die anderen Bits sind aber 0 - Vorsicht!
Meine Messergebnisse habe ich mit Xmega 128A1 bei Raumtemperatur
gemacht.
BOD Datenblatt BODLVL_enum U fallend U steigend
000 3.2 "- - -" k.A. k.A.
001 2.9 BODLVL_3V2_gc 3,25 3,29
010 2.7 BODLVL_2V9_gc 2,95 3,00
011 2.4 BODLVL_2V6_gc 2,67 2,74
100 2.2 BODLVL_2V4_gc 2,41 2,46
101 2.0 BODLVL_2V1_gc 2,15 2,19
110 1.8 BODLVL_1V9_gc 1,9 1,93
111 1.6 BODLVL_1V6_gc 1,62 1,64
Das heisst, dass der Wert "000" wahrscheinlich dazu führt, dass der
Prozessor nicht mehr aus dem Reset heraus kommt - Vorsicht!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.