From: Martin P. <pi...@us...> - 2012-04-25 09:19:00
|
Update of /cvsroot/embeddedloconet/apps/Fredi In directory vz-cvs-4.sog:/tmp/cvs-serv9305/apps/Fredi Modified Files: fuses.c Log Message: first test of FREDI with bootloader Index: fuses.c =================================================================== RCS file: /cvsroot/embeddedloconet/apps/Fredi/fuses.c,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** fuses.c 25 Jul 2011 18:31:16 -0000 1.3 --- fuses.c 25 Apr 2012 09:18:57 -0000 1.4 *************** *** 33,36 **** --- 33,39 ---- // Fuse High Byte // + // BOOTSZ1..0 = 10 (Boot Size: 256 words) + // BOOTRST = 0 (Reset Vector moved to the start of the Boot Flash Section) + // #define BOOTRST 0 // ----------+ #define BOOTSZ0 1 // ---------+| *************** *** 42,50 **** #define RSTDISBL 7 // --+||| |||| // |||| |||| ! // hfuse: 1101 0001 = 0xD1 unsigned char hfuse HFUSE = ( (1 << RSTDISBL ) | (1 << WDTON ) | (0 << SPIEN ) | (1 << CKOPT ) ! | (0 << EESAVE ) | (0 << BOOTSZ1 ) | (0 << BOOTSZ0 ) | (1 << BOOTRST ) ); // --- 45,53 ---- #define RSTDISBL 7 // --+||| |||| // |||| |||| ! // hfuse: 1101 0100 = 0xD4 unsigned char hfuse HFUSE = ( (1 << RSTDISBL ) | (1 << WDTON ) | (0 << SPIEN ) | (1 << CKOPT ) ! | (0 << EESAVE ) | (1 << BOOTSZ1 ) | (0 << BOOTSZ0 ) | (0 << BOOTRST ) ); // *************** *** 67,128 **** ////////////////////////////////////////////////////////////////////////////////// - #elif defined(__AVR_ATmega48__) | defined(__AVR_ATmega48A__) \ - | defined(__AVR_ATmega48P__) | defined(__AVR_ATmega48PA__) - - // - // Fuse Extended Byte - // - #define SELFPRGEN 0 // ----------+ - #define UNUSED1 1 // ---------+| - #define UNUSED2 2 // --------+|| - #define UNUSED3 3 // -------+||| - #define UNUSED4 4 // -----+ |||| - #define UNUSED5 5 // ----+| |||| - #define UNUSED6 6 // ---+|| |||| - #define UNUSED7 7 // --+||| |||| - // |||| |||| - // efuse: 1111 1111 = 0xFF - - unsigned char efuse EFUSE = - ( (1 << UNUSED7 ) | (1 << UNUSED6 ) | (1 << UNUSED5 ) | (1 << UNUSED4 ) - | (1 << UNUSED3 ) | (1 << UNUSED2 ) | (1 << UNUSED1 ) | (1 << SELFPRGEN) ); - - // - // Fuse High Byte - // - #define BODLEVEL0 0 // ----------+ - #define BODLEVEL1 1 // ---------+| - #define BODLEVEL2 2 // --------+|| - #define EESAVE 3 // -------+||| - #define WDTON 4 // -----+ |||| - #define SPIEN 5 // ----+| |||| - #define DWEN 6 // ---+|| |||| - #define RSTDISBL 7 // --+||| |||| - // |||| |||| - // hfuse: 1101 0101 = 0xD5 - - unsigned char hfuse HFUSE = - ( (1 << RSTDISBL ) | (1 << DWEN ) | (0 << SPIEN ) | (1 << WDTON ) - | (0 << EESAVE ) | (1 << BODLEVEL2) | (0 << BODLEVEL1) | (1 << BODLEVEL0) ); - - // - // Fuse Low Byte - // - #define CKSEL0 0 // ----------+ - #define CKSEL1 1 // ---------+| - #define CKSEL2 2 // --------+|| - #define CKSEL3 3 // -------+||| - #define SUT0 4 // -----+ |||| - #define SUT1 5 // ----+| |||| - #define CKOUT 6 // ---+|| |||| - #define CKDIV8 7 // --+||| |||| - // |||| |||| - // lfuse: 1111 1101 = 0xFD - - unsigned char lfuse LFUSE = - ( (1 << CKDIV8 ) | (1 << CKOUT ) | (1 << SUT1 ) | (1 << SUT0 ) - | (1 << CKSEL3 ) | (1 << CKSEL2 ) | (0 << CKSEL1 ) | (1 << CKSEL0 ) ); - - ////////////////////////////////////////////////////////////////////////////////// #elif defined(__AVR_ATmega88__) | defined(__AVR_ATmega88A__) \ | defined(__AVR_ATmega88P__) | defined(__AVR_ATmega88PA__) \ --- 70,73 ---- *************** *** 145,153 **** #define UNUSED7 7 // --+||| |||| // |||| |||| ! // efuse: XXXX X001 = 0xF9/0x01 unsigned char efuse EFUSE = ( (X << UNUSED7 ) | (X << UNUSED6 ) | (X << UNUSED5 ) | (X << UNUSED4 ) ! | (X << UNUSED3 ) | (0 << BOOTSZ1 ) | (0 << BOOTSZ0 ) | (1 << BOOTRST ) ); // --- 90,98 ---- #define UNUSED7 7 // --+||| |||| // |||| |||| ! // efuse: XXXX X010 = 0xFA/0x02 unsigned char efuse EFUSE = ( (X << UNUSED7 ) | (X << UNUSED6 ) | (X << UNUSED5 ) | (X << UNUSED4 ) ! | (X << UNUSED3 ) | (0 << BOOTSZ1 ) | (1 << BOOTSZ0 ) | (0 << BOOTRST ) ); // *************** *** 183,186 **** --- 128,132 ---- // lfuse: 1111 1101 = 0xFD + //TODO unsigned char lfuse LFUSE = ( (1 << CKDIV8 ) | (1 << CKOUT ) | (1 << SUT1 ) | (1 << SUT0 ) *************** *** 216,219 **** --- 162,173 ---- // Fuse High Byte // + // RSTDISBL = 1 (External Reset Enabled) + // DWEN = 1 (debugWIRE Disabled) + // SPIEN = 0 (Enable Serial Program and Data Downloading) + // WDTON = 1 (Watchdog Timer _is_not_ Always On) + // EESAVE = 0 (EEPROM memory is preserved through the Chip Erase) + // BOOTSZ1..0 = 10 (Boot Size: 512 words) + // BOOTRST = 0 (Reset Vector moved to the start of the Boot Flash Section) + // #define BOOTRST 0 // ----------+ #define BOOTSZ0 1 // ---------+| *************** *** 225,233 **** #define RSTDISBL 7 // --+||| |||| // |||| |||| ! // hfuse: 1101 0001 = 0xD1 unsigned char hfuse HFUSE = ( (1 << RSTDISBL ) | (1 << DWEN ) | (0 << SPIEN ) | (1 << WDTON ) ! | (0 << EESAVE ) | (0 << BOOTSZ1 ) | (0 << BOOTSZ0 ) | (1 << BOOTRST ) ); // --- 179,187 ---- #define RSTDISBL 7 // --+||| |||| // |||| |||| ! // hfuse: 1101 0100 = 0xD4 unsigned char hfuse HFUSE = ( (1 << RSTDISBL ) | (1 << DWEN ) | (0 << SPIEN ) | (1 << WDTON ) ! | (0 << EESAVE ) | (1 << BOOTSZ1 ) | (0 << BOOTSZ0 ) | (0 << BOOTRST ) ); // *************** *** 236,244 **** // CKDIV8 = 1 (Do not divide clock by 8) // CKOUT = 1 (No clock output to PORTB0) ! // Low Power Crystal Oscillator // CKSEL3..1 = 110 (3.0 - 8 MHz) (see datasheet 8271D-AVR-05/11 Table 9-3) ! // CKSEL0 = 1 (Crystal Osc., BOD enabled / Start-up Time: 16K CK / ! // SUT1..0 = 01 Add. Delay from Reset: 14CK ) // (see datasheet 8271D-AVR-05/11 Table 9-4) // #define CKSEL0 0 // ----------+ --- 190,204 ---- // CKDIV8 = 1 (Do not divide clock by 8) // CKOUT = 1 (No clock output to PORTB0) ! // ---- Low Power Crystal Oscillator -------------------------------------- // CKSEL3..1 = 110 (3.0 - 8 MHz) (see datasheet 8271D-AVR-05/11 Table 9-3) ! // CKSEL0 = 1 (Crystal Osc., BOD enabled / Start-up Time: 16K CK ! // SUT1..0 = 01 / Add. Delay from Reset: 14CK ) // (see datasheet 8271D-AVR-05/11 Table 9-4) + // ---- Full Swing Crystal Oscillator ------------------------------------- + // CKSEL3..1 = 011 (0.4 - 20 MHz) (see datasheet 8271D-AVR-05/11 Table 9-5) + // CKSEL0 = 1 (Crystal Oscillator, BOD enabled / Start-up Time: 16K CK + // SUT1..0 = 01 / Add. Delay from Reset: 14CK ) + // (see datasheet 8271D-AVR-05/11 Table 9-6) + // ------------------------------------------------------------------------ // #define CKSEL0 0 // ----------+ *************** *** 251,259 **** #define CKDIV8 7 // --+||| |||| // |||| |||| ! // lfuse: 1101 1101 = 0xDD unsigned char lfuse LFUSE = ( (1 << CKDIV8 ) | (1 << CKOUT ) | (0 << SUT1 ) | (1 << SUT0 ) ! | (1 << CKSEL3 ) | (1 << CKSEL2 ) | (0 << CKSEL1 ) | (1 << CKSEL0 ) ); ////////////////////////////////////////////////////////////////////////////////// --- 211,221 ---- #define CKDIV8 7 // --+||| |||| // |||| |||| ! // lfuse: 1101 1101 = 0xDD - Low Power Crystal Oscillator ! // lfuse: 1101 0111 = 0xD7 - Full Swing Crystal Oscillator + //TODO: should we use Low Power or Full Swing Crystal Oscillator? unsigned char lfuse LFUSE = ( (1 << CKDIV8 ) | (1 << CKOUT ) | (0 << SUT1 ) | (1 << SUT0 ) ! | (0 << CKSEL3 ) | (1 << CKSEL2 ) | (1 << CKSEL1 ) | (1 << CKSEL0 ) ); ////////////////////////////////////////////////////////////////////////////////// |