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.