PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [ERLEDIGT] Fuses



Tux12Fun
14.06.2011, 18:16
Hallo,

ich bin gerade dabei ein wenig mit VUSB für AVR zu spielen.

Nun bin ich wieder mal bei den Fuses angelangt und brauche Hilfe.

Im Makefile sind folgende Fuse Einstellungen angegeben (siehe Unten):

Aber wie komm ich nun von den Fuses auf die meines ATMEGA32.

Vielleicht kann mir jemand den Zusammenhang der Fuses erklären, so dass ich
beim nächsten mal das selbst richtig einstellen kann und nicht fragen muss.

Am ATMEGA hängt ein 16 Mhz Quarz mit 2 27pf Kondensatoren.

Aber im Fuese Calc gibt es jetzt jede Menge Auswahlmöglichkeiten z. B. für den
Takt, wie finde ich da den richtigen? Gibt es da eine Regel die man befolgen kann ?
Das +0ms +4ms +64ms ist zum Beispiel ein Rätsel für mich, wie soll ich da wissen, was der richtige Wert ist?

In der ATMEAG Doku (Datenblatt) habe ich zu den Fuses auch nicht wirklich etwas gefunden das mir weiter helfen würde.

Aber vielleicht kann mir das von euch jemand verständlich erklären und bei bringen.
Das wäre wirklich nett.

Danke schon im Voraus für eure Bemühungen.



################################################## ############################
# Fuse values for particular devices
################################################## ############################
# If your device is not listed here, go to
# http://palmavr.sourceforge.net/cgi-bin/fc.cgi
# and choose options for external crystal clock and no clock divider
#
################################## ATMega8 ##################################
# ATMega8 FUSE_L (Fuse low byte):
# 0x9f = 1 0 0 1 1 1 1 1
# ^ ^ \ / \--+--/
# | | | +------- CKSEL 3..0 (external >8M crystal)
# | | +--------------- SUT 1..0 (crystal osc, BOD enabled)
# | +------------------ BODEN (BrownOut Detector enabled)
# +-------------------- BODLEVEL (2.7V)
# ATMega8 FUSE_H (Fuse high byte):
# 0xc9 = 1 1 0 0 1 0 0 1 <-- BOOTRST (boot reset vector at 0x0000)
# ^ ^ ^ ^ ^ ^ ^------ BOOTSZ0
# | | | | | +-------- BOOTSZ1
# | | | | + --------- EESAVE (don't preserve EEPROM over chip erase)
# | | | +-------------- CKOPT (full output swing)
# | | +---------------- SPIEN (allow serial programming)
# | +------------------ WDTON (WDT not always on)
# +-------------------- RSTDISBL (reset pin is enabled)
#
############################## ATMega48/88/168 ##############################
# ATMega*8 FUSE_L (Fuse low byte):
# 0xdf = 1 1 0 1 1 1 1 1
# ^ ^ \ / \--+--/
# | | | +------- CKSEL 3..0 (external >8M crystal)
# | | +--------------- SUT 1..0 (crystal osc, BOD enabled)
# | +------------------ CKOUT (if 0: Clock output enabled)
# +-------------------- CKDIV8 (if 0: divide by 8)
# ATMega*8 FUSE_H (Fuse high byte):
# 0xde = 1 1 0 1 1 1 1 0
# ^ ^ ^ ^ ^ \-+-/
# | | | | | +------ BODLEVEL 0..2 (110 = 1.8 V)
# | | | | + --------- EESAVE (preserve EEPROM over chip erase)
# | | | +-------------- WDTON (if 0: watchdog always on)
# | | +---------------- SPIEN (allow serial programming)
# | +------------------ DWEN (debug wire enable)
# +-------------------- RSTDISBL (reset pin is enabled)
#
############################## ATTiny25/45/85 ###############################
# ATMega*5 FUSE_L (Fuse low byte):
# 0xef = 1 1 1 0 1 1 1 1
# ^ ^ \+/ \--+--/
# | | | +------- CKSEL 3..0 (clock selection -> crystal @ 12 MHz)
# | | +--------------- SUT 1..0 (BOD enabled, fast rising power)
# | +------------------ CKOUT (clock output on CKOUT pin -> disabled)
# +-------------------- CKDIV8 (divide clock by 8 -> don't divide)
# ATMega*5 FUSE_H (Fuse high byte):
# 0xdd = 1 1 0 1 1 1 0 1
# ^ ^ ^ ^ ^ \-+-/
# | | | | | +------ BODLEVEL 2..0 (brownout trigger level -> 2.7V)
# | | | | +---------- EESAVE (preserve EEPROM on Chip Erase -> not preserved)
# | | | +-------------- WDTON (watchdog timer always on -> disable)
# | | +---------------- SPIEN (enable serial programming -> enabled)
# | +------------------ DWEN (debug wire enable)
# +-------------------- RSTDISBL (disable external reset -> enabled)
#
################################ ATTiny2313 #################################
# ATTiny2313 FUSE_L (Fuse low byte):
# 0xef = 1 1 1 0 1 1 1 1
# ^ ^ \+/ \--+--/
# | | | +------- CKSEL 3..0 (clock selection -> crystal @ 12 MHz)
# | | +--------------- SUT 1..0 (BOD enabled, fast rising power)
# | +------------------ CKOUT (clock output on CKOUT pin -> disabled)
# +-------------------- CKDIV8 (divide clock by 8 -> don't divide)
# ATTiny2313 FUSE_H (Fuse high byte):
# 0xdb = 1 1 0 1 1 0 1 1
# ^ ^ ^ ^ \-+-/ ^
# | | | | | +---- RSTDISBL (disable external reset -> enabled)
# | | | | +-------- BODLEVEL 2..0 (brownout trigger level -> 2.7V)
# | | | +-------------- WDTON (watchdog timer always on -> disable)
# | | +---------------- SPIEN (enable serial programming -> enabled)
# | +------------------ EESAVE (preserve EEPROM on Chip Erase -> not preserved)
# +-------------------- DWEN (debug wire enable)

BurningWave
14.06.2011, 22:08
Am komfortabelsten kannst du Fuses, mit den mit dem AVR Studio mitgelieferten Programmern, setzen. Dazu brauchst du weder Makefiles noch Kenntnisse, wie die einzelnen Fuses heißen.

Hier ist trotzdem eine Seite, wo du dir zeigen lassen kannst, was die einzelnen Bits machen:
http://www.engbedded.com/fusecalc/
Für einen externen Quarz lautet die richtige Einstellung: Ext. Crystal/Resonator High Freq. Die Start-up Time gibt an, wie lange der Chip nach Einschalten der Stromversorgung "warten" soll, bis er das Programm startet (Werte in Zyklen + ms). Ein Wert von ca. 64ms kann z.B. sinnvoll sein, wenn man warten möchte, bis sich die Spannung stabilisiert hat.

Tux12Fun
15.06.2011, 20:28
Hallo BurningWave

den FuseCalc kenn ich bereits trotzdem habe ich Probleme, z. B. die Fuses für dieses Makefile auf den ATMEGA zu konvertieren.

Bei der Startup time kann man also nichts falsch machen wenn man ein klein wenig länger wartet als nötig also 64ms z. B.

Ich habe mich jetzt mal nach den unten angegebenen Fuses gerichtet und hätte für den ATMEGA32 folgedes Ergebnis bekommen. Kann das von euch bitte jemand kontrollieren:

Ext. Crystal/Resonator High Freq Startuptime 16CK + 4ms
X Burnout
Burnout Detection Level 2,7V
- Bootreset Vector
Bootflash 2048
- Preserve Eprom
- Chkopt fuse
X SPI
- Jtag
- On Chip Debug

X=Ja
- = Nein

Wert Low (0XAF) High (D9)