View Single Post
Old 06-20-2010, 12:52 PM   #929 (permalink)
Jamdat
EcoModding Lurker
 
Join Date: Jun 2010
Location: Toronto
Posts: 9
Thanks: 0
Thanked 0 Times in 0 Posts
Question ATMega328 Fuse confusion

Can somebody help me make sense of this paragraph from the wiki?
Quote:
Changed programming method to isp (instead of bootloader) and using the following fuses after much experimentation: lock 0x2b , do not allow any spm commands from anywhere, should help prevent flash corruption. efuse 0x07 , change reset address to 0x00, min bootsize (just in case) hfuse 0xdd , 2.7v brownout detection, had lots of problems with 4.3v setting, i.e. unit resets when starting car. lfuse 0xef , maximum delay on power up.
I know about fuses on the atmega (although they are confusing) and I'm trying to follow along with the Engbedded AVR Fuse Calculator, Binary-Hex converter, AVRDUDE manual, and, most importantly, the ATMEGA328 datasheet. There are pages and pages describing which fuses do what and the myriad of options available for each but I'm getting very confused by the above paragraph.

If I convert the low fuse from hex to binary for example (0xEF -> 11101111) I look on page 29,30, and 300, and I see we have selected a low power crystal (8-16MHz) with fast rising power and 4.1ms delay. If this is true, why do we have a 20MHz crystal and why are we saying this is 'maximum delay on power up'?

Same with high fuse (0xDD -> 11011101). 512 word bootloader section, which is not the 'min bootsize (just in case)'.

Finally, extended fuse (0x07 -> 111). This has brownout disabled, while you say it is at 2.7V).

The lock bit (0x2B -> 101011) is the only one that makes sense as it prevents all SPM writing to the application and bootloader section but doesn't prevent further programming.

I said previously that fuse programming is a bit confusing, but I've spent two days looking over this and I simply don't see how these fuses correspond to the descriptions that are given. I have a blank chip sitting in front of me and I would like to program it for my MPGuino, but if that paragraph describes things accurately, then I'm understanding something horribly wrong and I would like to be corrected.

A small explanation from somebody would be much appreciated!
Thank you.
  Reply With Quote