**************************************************************************** **************************************************************************** ** ** ** Application notes for Atmel AVR Microcontrollers ** ** (Informal Document) ** ** ** ** To find the application notes specfic for your device search for the ** ** 'core' part name. As an example using the ATmega8L 32 pin TQFP you ** ** would search on 'mega8' ** ** ** **************************************************************************** **************************************************************************** ****************************************************************************** ****************************************************************************** ***------------------------------------------------------------------------*** ATmega8 ------------ ATmega8L ------------ ***----------------------- Programmer Setup Flags -------------------------*** NOTE: LB1 & LB2 are handled by Security Fuse 1 & 2 flags! Program Security fuse 1: Lock Bit 1 Program Security fuse 2: Lock Bit 2 NOTE: Boot Lock Bit's in the Lock Bit Byte are programmed ONLY if Security Fuse 3 flag = Y. Please see "Lock Bit Byte" information below for configuring device for "Boot Lock Byte" programming. Regarding Fuse High Byte and Fuse Low Byte: NOTE: Atmel DataSheet states Default Value from Factory is: Fuse High Byte=$D9; Fuse Low Byte=$E1 NOTE: The "Fuse High Byte" and "Fuse Low Byte" are NOT erased. These two bytes are ONLY modified during a programming operation IF the "Program configuration" flag is enabled. UniFam programmers refer to the Fuse High Byte and Fuse Low Byte data as "Configuration Bytes". To program this data using the Hiterm interface you must enable (set to Yes) the "Program Configuration" flag in Hiterm. If you are using TaskLink interface you must enable the "Special Data #1" flag. To set this flag in TaskLink you must navigate to the following Dialog box: Setup -> Programmer Properties... -> "Special" Dialog tab PROGRAMMING OF THE OSCILLATOR CALIBRATION BYTE INTO THE MEMORY MAP OF THE EITHER THE MAIN FLASH MEMORY ARRAY OR THE EEPROM ARRAY: To enable this feature during a programming operation when using the Hiterm interface you must enable (set to Yes) the "Program Configuration" flag. To enable this feature during a programming operation when using the TaskLink interface you must enable the "Special Data #1" flag. To set this "Special Data #1" flag in TaskLink you must navigate to the following Dialog box: Setup -> Programmer Properties... -> "Special" Dialog tab WARNING: The "Program Configuration" flag enables programming of of the Configuration Bytes (Fuse High Byte and Fuse Low Byte) and the programming of the Oscillator Calibration Byte. WARNING: Programming of the Oscillator Calibration Byte will NOT be enabled if the Oscillator Calibration Byte Programming Address is equal to the following hex data: 'FFFFFFFF' See "Internal RC Oscillator Calibration Byte" programming Address below for details. ***---------------------- Format of Fuse High Byte ------------------------*** NOTE: For Bits defined below Atmel DataSheet states Default Factory Value are: Fuse High Byte=$D9; Fuse Low Byte=$E1 *------------------------------------------* Fuse High Byte User RAM Address = 2200 hex *------------------------------------------* Fuse High Byte, Bit 7: RSTDISBL; Select if PC6 is I/O pin or RESET pin Fuse: PC6 is RESET pin = 1 : PC6 NOT RESET pin = 0 Fuse High Byte, Bit 6: WDTON; Watchdog Timer: On = 1 : Off = 0 Fuse High Byte, Bit 5: SPIEN; SPI Program/Data Downloading: Enable = 0 : Disable = 1 Fuse High Byte, Bit 4: CKOPT; Oscillator Options: 1 : 0 Fuse High Byte, Bit 3: EESAVE; Erase EEPROM during Chip Erase: Yes = 1 : No = 0 Fuse High Byte, Bit 2,1: BOOTS Z1,Z0; Boot Size Configuration: 1024 Words: Z1,Z0 = 00 : 512 Words: Z1,Z0 = 01 : 256 Words: Z1,Z0 = 10 : 128 Words: Z1,Z0 = 11 Fuse High Byte, Bit 0: BOOTRST; Reset Vector: Application Reset($0000) = 1 : Boot Loader Reset = 0 ***---------------------- Format of Fuse Low Byte -------------------------*** NOTE: For Bits defined below Atmel DataSheet states Default Factory Value are: Fuse High Byte=$D9; Fuse Low Byte=$E1 *------------------------------------------* Fuse Low Byte User RAM Address = 2201 hex *------------------------------------------* Fuse Low Byte, Bit 7 : BODLEVEL; Brown-out Detector trigger level: 1 : 0 Fuse Low Byte, Bit 6 : BODEN; Brown-out Detector: Disabled = 1 : Enable = 0 Fuse Low Byte, Bit 5,4 : SUT1,SUT0 Select start-up time Configuration: SUT1,SUT0 = 0,0 : SUT1,SUT0 = 0,1 : SUT1,SUT0 = 1,0; default : SUT1,SUT0 = 1,1 Fuse Low Byte, Bit 3->0 : Device Clocking Option: CKSEL3..0: 1111; External Crystal/Ceramic Resonator 1110; External Crystal/Ceramic Resonator 1101; External Crystal/Ceramic Resonator 1100; External Crystal/Ceramic Resonator 1011; External Crystal/Ceramic Resonator 1010; External Crystal/Ceramic Resonator 1001; External Low-frequency Crystal 1000; External RC Oscillator 0111; External RC Oscillator 0110; External RC Oscillator 0101; External RC Oscillator 0100; 8MHz Calibrated Internal RC Oscillator 0011; 4MHz Calibrated Internal RC Oscillator 0010; 2MHz Calibrated Internal RC Oscillator 0001; 1MHz Calibrated Internal RC Oscillator; default 0000; External Clock The device is shipped with: SUT = 10 CKSEL = 0001 The default clock source setting is therefore the Internal RC Oscillator with longest start-up time. This default setting ensures that all users can make their desired clock source setting using an In-System or Parallel Programming. ***------------------- Format of Lock Bit Byte BLB1 Mode ------------------*** *--------------------------------------------------* Lock Bit Byte User RAM Address = 2202 hex; Bits 1,0 *--------------------------------------------------* Lock Bit Byte: Bit 5,4 BLB 11 & 12 BLB1 Mode: 1 (BLB12,BLB11 = 1,1) : 2 (BLB12,BLB11 = 1,0) : 3 (BLB12,BLB11 = 0,0) : 4 (BLB12,BLB11 = 0,1) ***------------------- Format of Lock Bit Byte BLB0 Mode ------------------*** *---------------------------------------------------------* Lock Bit Byte BLB0 User RAM Address = 2203 hex; Bits 1,0 *---------------------------------------------------------* Lock Bit Byte: Bit 3,2 BLB 01 & 02 BLB0 Mode: 1 (BLB02,BLB01 = 1,1) : 2 (BLB02,BLB01 = 1,0) : 3 (BLB02,BLB01 = 0,0) : 4 (BLB02,BLB01 = 0,1) ***----- Format of RC Oscillator Calibration Byte Programming Address -----*** *---------------------------------------* User RAM Address = 2204 hex -> 2207 hex *---------------------------------------* The location in the Programmer's "User RAM" where the Target Address of the Internal RC Oscillator Calibration value is to be stored is: 2204 hex -> 2207 hex EXAMPLE: If the User places the address value "00 00 02 A5" in the User RAM locations "2204 hex -> 2207 hex " then the Internal RC Oscillator Calibration value will be programmed into the device's memory address: 000002A5 hex NOTE: The "Program Configuration" flag MUST be enabled if you are going to program the Oscillator Calibration Byte value into the memory map of the device. If the "Program Configuration" flag is NOT enabled (set to Yes) then the Oscillator Calibration Byte Programming operation is NOT performed. ************************************************************************* *** NOTE: No Calibration value will be stored in User RAM if *** *** User RAM address 2204 hex -> 2207 hex = FFFFFFFF hex *** ************************************************************************* * Below is a re-clarification of the above NOTE! * *-----------------------------------------------------------------------* ** To Disable Oscillator Calibration Byte Programming in either the ** ** data file or in Programmer's User RAM you need to do the following: ** ** *-----------------------------------------------------------------* ** ** ** ** If the address in the programmers' User RAM used to store the ** ** "Internal RC Oscillator Calibration Byte" programming Address has ** ** the following hex data: 'FFFFFFFF' then the programmer will SKIP ** ** writing the Calibration value into the memory map of the device, ** ** regardless of the setting of the "Program Configuration" flag. ** ** ** ** So for a mega8: ** ** User RAM Address 2204 hex -> 2207 hex = 'FFFFFFFF' Equals NO ** ** Oscillator Calibration Byte programming performed! ** ** ** *-----------------------------------------------------------------------* ****************************************************************************** ****************************************************************************** ***------------------------------------------------------------------------*** ATmega64 ------------ ATmega64L ------------ ***----------------------- Programmer Setup Flags -------------------------*** NOTE: LB1 & LB2 are handled by Security Fuse 1 & 2 flags! Program Security fuse 1: Lock Bit 1 Program Security fuse 2: Lock Bit 2 NOTE: Boot Lock Bit's in the Lock Bit Byte are programmed ONLY if Security Fuse 3 flag = Y. Please see "Lock Bit Byte" information below for configuring device for "Boot Lock Byte" programming. Regarding Fuse High Byte and Fuse Low Byte: NOTE: Atmel DataSheet states Default Value from Factory is: Extended Fuse Byte=$FD; Fuse High Byte=$99; Fuse Low Byte=$E1 NOTE: Programmer will read in the default Default Value from Factory as follows: Extended Fuse Byte=$03; Fuse High Byte=$99; Fuse Low Byte=$E1 NOTE: The "Extended Fuse Byte", "Fuse High Byte" and "Fuse Low Byte" are NOT erased. These three bytes are ONLY modified during a programming operation IF the "Program configuration" flag is enabled. UniFam programmers refer to the "Extended Fuse Byte", "Fuse High Byte" and "Fuse Low Byte" data as "Configuration Bytes". To program this data using the Hiterm interface you must enable (set to Yes) the "Program Configuration" flag in Hiterm. If you are using TaskLink interface you must enable the "Special Data #1" flag. To set this flag in TaskLink you must navigate to the following Dialog box: Setup -> Programmer Properties... -> "Special" Dialog tab PROGRAMMING OF THE OSCILLATOR CALIBRATION BYTE INTO THE MEMORY MAP OF THE EITHER THE MAIN FLASH MEMORY ARRAY OR THE EEPROM ARRAY: To enable this feature during a programming operation when using the Hiterm interface you must enable (set to Yes) the "Program Configuration" flag. To enable this feature during a programming operation when using the TaskLink interface you must enable the "Special Data #1" flag. To set this "Special Data #1" flag in TaskLink you must navigate to the following Dialog box: Setup -> Programmer Properties... -> "Special" Dialog tab WARNING: The "Program Configuration" flag enables programming of of the Configuration Bytes (Extended Fuse Byte, Fuse High Byte and Fuse Low Byte) and the programming of the Oscillator Calibration Byte. WARNING: Programming of the Oscillator Calibration Byte will NOT be enabled if the Oscillator Calibration Byte Programming Address is equal to the following hex data: 'FFFFFFFF' See "Internal RC Oscillator Calibration Byte" programming Address below for details. ***---------------------- Format of Fuse High Byte ------------------------*** NOTE: For Bits defined below Atmel DataSheet states Default Factory Value are: Extended Fuse Byte=$FD; Fuse High Byte=$99; Fuse Low Byte=$E1 *----------------------------* User RAM Address = 10800 hex *----------------------------* Fuse High Byte, Bit 7 :OCDEN; Enable OCD: disabled = 1 : Enabled = 0 Fuse High Byte, Bit 6 : JTAGEN; JTAG support: Enabled = 0 : Disabled = 1 Fuse High Byte, Bit 5 : SPIEN; SPI Program/Data Downloading: Enable = 0 : Disable = 1 Fuse High Byte, Bit 4 : CKOPT; Oscillator Options: 1 : 0 Fuse High Byte, Bit 3 : EESAVE; Erase EEPROM during Chip Erase: Yes = 1 : No = 0 Fuse High Byte, Bit 2,1: BOOTS Z1,Z0; Boot Size Configuration: 1024 Words: Z1,Z0 = 00 : 512 Words: Z1,Z0 = 01 : 256 Words: Z1,Z0 = 10 : 128 Words: Z1,Z0 = 11 Fuse High Byte, Bit 0 : BOOTRST; Reset Vector: Application Reset($0000) = 1 : Boot Loader Reset = 0 ***---------------------- Format of Fuse Low Byte -------------------------*** NOTE: For Bits defined below Atmel DataSheet states Default Factory Value are: Extended Fuse Byte=$FD; Fuse High Byte=$99; Fuse Low Byte=$E1 *----------------------------* User RAM Address = 10801 hex *----------------------------* Fuse Low Byte, Bit 7 : BODLEVEL; Brown-out Detector trigger level: 1 : 0 Fuse Low Byte, Bit 6 : BODEN; Brown-out Detector: Disabled = 1 : Enable = 0 Fuse Low Byte, Bit 5,4 : SUT1,SUT0 Select start-up time Configuration: SUT1,SUT0 = 0,0 : SUT1,SUT0 = 0,1 : SUT1,SUT0 = 1,0; default : SUT1,SUT0 = 1,1 Fuse Low Byte, Bit 3->0 : Device Clocking Option: CKSEL3..0: 1111; External Crystal/Ceramic Resonator 1110; External Crystal/Ceramic Resonator 1101; External Crystal/Ceramic Resonator 1100; External Crystal/Ceramic Resonator 1011; External Crystal/Ceramic Resonator 1010; External Crystal/Ceramic Resonator 1001; External Low-frequency Crystal 1000; External RC Oscillator 0111; External RC Oscillator 0110; External RC Oscillator 0101; External RC Oscillator 0100; 8MHz Calibrated Internal RC Oscillator 0011; 4MHz Calibrated Internal RC Oscillator 0010; 2MHz Calibrated Internal RC Oscillator 0001; 1MHz Calibrated Internal RC Oscillator; default 0000; External Clock The device is shipped with: SUT = 10 CKSEL = 0001 The default clock source setting is therefore the Internal RC Oscillator with longest start-up time. This default setting ensures that all users can make their desired clock source setting using an In-System or Parallel Programming. ***---------------------- Format of Extended Fuse Byte --------------------*** NOTE: For Bits defined below Atmel DataSheet states Default Factory Value are: Extended Fuse Byte=$FD; Fuse High Byte=$99; Fuse Low Byte=$E1 *----------------------------* User RAM Address = 10802 hex *----------------------------* Extended Fuse Byte, Bit 1: M103C Compatibility Fuse: ATmega103 Compatibility Mode = 0 : ATmega64 Mode = 1 Extended Fuse Byte, Bit 0 : WDTON; Watchdog Timer: On = 1 : Off = 0 ***------------------- Format of Lock Bit Byte BLB1 Mode ------------------*** *------------------------------------* User RAM Address = 10803 hex; Bits 1,0 *------------------------------------* Lock Bit Byte: Bit 5,4 BLB 11 & 12 BLB1 Mode: 1 (BLB12,BLB11 = 1,1) : 2 (BLB12,BLB11 = 1,0) : 3 (BLB12,BLB11 = 0,0) : 4 (BLB12,BLB11 = 0,1) ***------------------- Format of Lock Bit Byte BLB0 Mode ------------------*** *------------------------------------* User RAM Address = 10804 hex; Bits 1,0 *------------------------------------* Lock Bit Byte: Bit 3,2 BLB 01 & 02 BLB0 Mode: 1 (BLB02,BLB01 = 1,1) : 2 (BLB02,BLB01 = 1,0) : 3 (BLB02,BLB01 = 0,0) : 4 (BLB02,BLB01 = 0,1) ***----- Format of RC Oscillator Calibration Byte Programming Address -----*** *-----------------------------------------* User RAM Address = 10805 hex -> 10808 hex *-----------------------------------------* The location in the Programmer's "User RAM" where the Target Address of the Internal RC Oscillator Calibration value is to be stored is: 10805 hex -> 10808 hex EXAMPLE: If the User places the address value "00 00 02 A5" in the User RAM locations "10805 hex -> 10808 hex" then the Internal RC Oscillator Calibration value will be programmed into the device's memory address: 000002A5 hex NOTE: The "Program Configuration" flag MUST be enabled if you are going to program the Oscillator Calibration Byte value into the memory map of the device. If the "Program Configuration" flag is NOT enabled (set to Yes) then the Oscillator Calibration Byte Programming operation is NOT performed. ************************************************************************* *** NOTE: No Calibration value will be stored in User RAM if *** *** User RAM address 10805 hex -> 10808 hex = FFFFFFFF hex *** ************************************************************************* * Below is a re-clarification of the above NOTE! * *-----------------------------------------------------------------------* ** To Disable Oscillator Calibration Byte Programming in either the ** ** data file or in Programmer's User RAM you need to do the following: ** ** *-----------------------------------------------------------------* ** ** ** ** If the address in the programmers' User RAM used to store the ** ** "Internal RC Oscillator Calibration Byte" programming Address has ** ** the following hex data: 'FFFFFFFF' then the programmer will SKIP ** ** writing the Calibration value into the memory map of the device, ** ** regardless of the setting of the "Program Configuration" flag. ** ** ** ** So for a mega64: ** ** User RAM Address 10805 hex -> 10808 hex = 'FFFFFFFF' Equals NO ** ** Oscillator Calibration Byte programming performed! ** ** ** *-----------------------------------------------------------------------* ****************************************************************************** ****************************************************************************** ***------------------------------------------------------------------------*** ATmega8515 ------------ ATmega8515L ------------ ATmega8535 ------------ ATmega8535L ------------ ***----------------------- Programmer Setup Flags -------------------------*** NOTE: LB1 & LB2 are handled by Security Fuse 1 & 2 flags! Program Security fuse 1: Lock Bit 1 Program Security fuse 2: Lock Bit 2 NOTE: Boot Lock Bit's in the Lock Bit Byte are programmed ONLY if Security Fuse 3 flag = Y. Please see "Lock Bit Byte" information below for configuring device for "Boot Lock Byte" programming. Regarding Fuse High Byte and Fuse Low Byte: NOTE: Atmel DataSheet states Default Value from Factory is: Fuse High Byte=$D9; Fuse Low Byte=$E1 NOTE: The "Fuse High Byte" and "Fuse Low Byte" are NOT erased. These two bytes are ONLY modified during a programming operation IF the "Program configuration" flag is enabled. UniFam programmers refer to the Fuse High Byte and Fuse Low Byte data as "Configuration Bytes". To program this data using the Hiterm interface you must enable (set to Yes) the "Program Configuration" flag in Hiterm. If you are using TaskLink interface you must enable the "Special Data #1" flag. To set this flag in TaskLink you must navigate to the following Dialog box: Setup -> Programmer Properties... -> "Special" Dialog tab PROGRAMMING OF THE OSCILLATOR CALIBRATION BYTE INTO THE MEMORY MAP OF THE EITHER THE MAIN FLASH MEMORY ARRAY OR THE EEPROM ARRAY: To enable this feature during a programming operation when using the Hiterm interface you must enable (set to Yes) the "Program Configuration" flag. To enable this feature during a programming operation when using the TaskLink interface you must enable the "Special Data #1" flag. To set this "Special Data #1" flag in TaskLink you must navigate to the following Dialog box: Setup -> Programmer Properties... -> "Special" Dialog tab WARNING: The "Program Configuration" flag enables programming of of the Configuration Bytes (Fuse High Byte and Fuse Low Byte) and the programming of the Oscillator Calibration Byte. WARNING: Programming of the Oscillator Calibration Byte will NOT be enabled if the Oscillator Calibration Byte Programming Address is equal to the following hex data: 'FFFFFFFF' See "Internal RC Oscillator Calibration Byte" programming Address below for details. ***---------------------- Format of Fuse High Byte ------------------------*** NOTE: For Bits defined below Atmel DataSheet states Default Factory Value are: Fuse High Byte=$D9; Fuse Low Byte=$E1 *----------------------------* User RAM Address = 2200 hex *----------------------------* Fuse High Byte, Bit 7: (For: ATmega8515 & ATmega8515L) S8515C Compatibility Fuse: ATmega8515 Mode = 1 : AT90S4414/8515 Compatibility Mode = 0 (For: ATmega8535 & ATmega8535L) S8535C Compatibility Fuse: ATmega8535 Mode = 1 : AT90S4414/8515 Compatibility Mode = 0 Fuse High Byte, Bit 6 : WDTON; Watchdog Timer: On = 1 : Off = 0 Fuse High Byte, Bit 5 : SPIEN; SPI Program/Data Downloading: Enable = 0 : Disable = 1 Fuse High Byte, Bit 4 : CKOPT; Oscillator Options: 1 : 0 Fuse High Byte, Bit 3 : EESAVE; Erase EEPROM during Chip Erase: Yes = 1 : No = 0 Fuse High Byte, Bit 2,1: BOOTS Z1,Z0; Boot Size Configuration: 1024 Words: Z1,Z0 = 00 : 512 Words: Z1,Z0 = 01 : 256 Words: Z1,Z0 = 10 : 128 Words: Z1,Z0 = 11 Fuse High Byte, Bit 0 : BOOTRST; Reset Vector: Application Reset($0000) = 1 : Boot Loader Reset = 0 ***---------------------- Format of Fuse Low Byte -------------------------*** NOTE: For Bits defined below Atmel DataSheet states Default Factory Value are: Fuse High Byte=$D9; Fuse Low Byte=$E1 *----------------------------* User RAM Address = 2201 hex *----------------------------* Fuse Low Byte, Bit 7 : BODLEVEL; Brown-out Detector trigger level: 1 : 0 Fuse Low Byte, Bit 6 : BODEN; Brown-out Detector: Disabled = 1 : Enable = 0 Fuse Low Byte, Bit 5,4 : SUT1,SUT0 Select start-up time Configuration: SUT1,SUT0 = 0,0 : SUT1,SUT0 = 0,1 : SUT1,SUT0 = 1,0; default : SUT1,SUT0 = 1,1 Fuse Low Byte, Bit 3->0 : Device Clocking Option: CKSEL3..0: 1111; External Crystal/Ceramic Resonator 1110; External Crystal/Ceramic Resonator 1101; External Crystal/Ceramic Resonator 1100; External Crystal/Ceramic Resonator 1011; External Crystal/Ceramic Resonator 1010; External Crystal/Ceramic Resonator 1001; External Low-frequency Crystal 1000; External RC Oscillator 0111; External RC Oscillator 0110; External RC Oscillator 0101; External RC Oscillator 0100; 8MHz Calibrated Internal RC Oscillator 0011; 4MHz Calibrated Internal RC Oscillator 0010; 2MHz Calibrated Internal RC Oscillator 0001; 1MHz Calibrated Internal RC Oscillator; default 0000; External Clock The device is shipped with: SUT = 10 CKSEL = 0001 The default clock source setting is therefore the Internal RC Oscillator with longest start-up time. This default setting ensures that all users can make their desired clock source setting using an In-System or Parallel Programming. ***------------------- Format of Lock Bit Byte BLB1 Mode ------------------*** *------------------------------------* User RAM Address = 2202 hex; Bits 1,0 *------------------------------------* Lock Bit Byte: Bit 5,4 BLB 11 & 12 BLB1 Mode: 1 (BLB12,BLB11 = 1,1) : 2 (BLB12,BLB11 = 1,0) : 3 (BLB12,BLB11 = 0,0) : 4 (BLB12,BLB11 = 0,1) ***------------------- Format of Lock Bit Byte BLB0 Mode ------------------*** *------------------------------------* User RAM Address = 2203 hex; Bits 1,0 *------------------------------------* Lock Bit Byte: Bit 3,2 BLB 01 & 02 BLB0 Mode: 1 (BLB02,BLB01 = 1,1) : 2 (BLB02,BLB01 = 1,0) : 3 (BLB02,BLB01 = 0,0) : 4 (BLB02,BLB01 = 0,1) ***----- Format of RC Oscillator Calibration Byte Programming Address -----*** *---------------------------------------* User RAM Address = 2204 hex -> 2207 hex *---------------------------------------* The location in the Programmer's "User RAM" where the Target Address of the Internal RC Oscillator Calibration value is to be stored is: 2204 hex -> 2207 hex EXAMPLE: If the User places the address value "00 00 02 A5" in the User RAM locations "2204 hex -> 2207 hex" then the Internal RC Oscillator Calibration value will be programmed into the device's memory address: 000002A5 hex NOTE: The "Program Configuration" flag MUST be enabled if you are going to program the Oscillator Calibration Byte value into the memory map of the device. If the "Program Configuration" flag is NOT enabled (set to Yes) then the Oscillator Calibration Byte Programming operation is NOT performed. ************************************************************************* *** NOTE: No Calibration value will be stored in User RAM if *** *** User RAM address 2204 hex -> 2207 hex = FFFFFFFF hex *** ************************************************************************* * Below is a re-clarification of the above NOTE! * *-----------------------------------------------------------------------* ** To Disable Oscillator Calibration Byte Programming in either the ** ** data file or in Programmer's User RAM you need to do the following: ** ** *-----------------------------------------------------------------* ** ** ** ** If the address in the programmers' User RAM used to store the ** ** "Internal RC Oscillator Calibration Byte" programming Address has ** ** the following hex data: 'FFFFFFFF' then the programmer will SKIP ** ** writing the Calibration value into the memory map of the device, ** ** regardless of the setting of the "Program Configuration" flag. ** ** ** ** So for a mega8515 or mega8535: ** ** User RAM Address 2204 hex -> 2207 hex = 'FFFFFFFF' Equals NO ** ** Oscillator Calibration Byte programming performed! ** ** ** *-----------------------------------------------------------------------* ****************************************************************************** ****************************************************************************** ***------------------------------------------------------------------------*** ATtiny26 ------------ ATtiny26L ------------ ***----------------------- Programmer Setup Flags -------------------------*** NOTE: LB1 & LB2 are handled by Security Fuse 1 & 2 flags! Program Security fuse 1: Lock Bit 1 Program Security fuse 2: Lock Bit 2 Regarding Fuse High Byte and Fuse Low Byte: NOTE: Atmel DataSheet states Default Value from Factory is: Fuse High Byte=$F7; Fuse Low Byte=$E1 NOTE: The "Fuse High Byte" and "Fuse Low Byte" are NOT erased. These two bytes are ONLY modified during a programming operation IF the "Program configuration" flag is enabled. UniFam programmers refer to the Fuse High Byte and Fuse Low Byte data as "Configuration Bytes". To program this data using the Hiterm interface you must enable (set to Yes) the "Program Configuration" flag in Hiterm. If you are using TaskLink interface you must enable the "Special Data #1" flag. To set this flag in TaskLink you must navigate to the following Dialog box: Setup -> Programmer Properties... -> "Special" Dialog tab PROGRAMMING OF THE OSCILLATOR CALIBRATION BYTE INTO THE MEMORY MAP OF THE EITHER THE MAIN FLASH MEMORY ARRAY OR THE EEPROM ARRAY: To enable this feature during a programming operation when using the Hiterm interface you must enable (set to Yes) the "Program Configuration" flag. To enable this feature during a programming operation when using the TaskLink interface you must enable the "Special Data #1" flag. To set this "Special Data #1" flag in TaskLink you must navigate to the following Dialog box: Setup -> Programmer Properties... -> "Special" Dialog tab WARNING: The "Program Configuration" flag enables programming of of the Configuration Bytes (Fuse High Byte and Fuse Low Byte) and the programming of the Oscillator Calibration Byte. WARNING: Programming of the Oscillator Calibration Byte will NOT be enabled if the Oscillator Calibration Byte Programming Address is equal to the following hex data: 'FFFFFFFF' See "Internal RC Oscillator Calibration Byte" programming Address below for details. ***---------------------- Format of Fuse High Byte ------------------------*** NOTE: For Bits defined below Atmel DataSheet states Default Factory Value are: Fuse High Byte=$F7; Fuse Low Byte=$E1 *----------------------------* User RAM Address = 880 hex *----------------------------* Fuse High Byte, Bit 7->5: Set to '1'(unprogrammed) Fuse High Byte, Bit 4 : RSTDISBL; PB7 is RESET pin = 1 : PB7 is I/O pin = 0 Fuse High Byte, Bit 3 : SPIEN; SPI Program/Data Downloading: Enable = 0 : Disable = 1 Fuse High Byte, Bit 2 : EESAVE; Erase EEPROM during Chip Erase: Yes = 1 : No = 0 Fuse High Byte, Bit 1 : BODLEVEL; Brown-out Detector trigger level: 1 : 0 Fuse High Byte, Bit 0 : BODEN; Brown-out Detector: Disabled = 1 : Enable = 0 ***---------------------- Format of Fuse Low Byte -------------------------*** NOTE: For Bits defined below Atmel DataSheet states Default Factory Value are: Fuse High Byte=$F7; Fuse Low Byte=$E1 *----------------------------* User RAM Address = 881 hex *----------------------------* Fuse Low Byte, Bit 7 : PLLCK; Use PLL for internal clock: 1 : 0 Fuse Low Byte, Bit 6 : CKOPT; Oscillator Options: 1 : 0 Fuse Low Byte, Bit 5,4 : SUT1,SUT0 Select start-up time Configuration: SUT1,SUT0 = 0,0 : SUT1,SUT0 = 0,1 : SUT1,SUT0 = 1,0; default : SUT1,SUT0 = 1,1 Fuse Low Byte, Bit 3->0 : Device Clocking Option: CKSEL3..0: 1111; External Crystal/Ceramic Resonator 1110; External Crystal/Ceramic Resonator 1101; External Crystal/Ceramic Resonator 1100; External Crystal/Ceramic Resonator 1011; External Crystal/Ceramic Resonator 1010; External Crystal/Ceramic Resonator 1001; External Low-frequency Oscillator 1000; External RC Oscillator 0111; External RC Oscillator 0110; External RC Oscillator 0101; External RC Oscillator 0100; 8MHz Calibrated Internal RC Oscillator 0011; 4MHz Calibrated Internal RC Oscillator 0010; 2MHz Calibrated Internal RC Oscillator 0001; 1MHz Calibrated Internal RC Oscillator; default 0000; External Clock The device is shipped with: SUT = 10 CKSEL = 0001 The default clock source setting is therefore the Internal RC Oscillator with longest start-up time. This default setting ensures that all users can make their desired clock source setting using an In-System or Parallel Programming. ***----- Format of RC Oscillator Calibration Byte Programming Address -----*** *---------------------------------------* User RAM Address = 882 hex -> 885 hex *---------------------------------------* The location in the Programmer's "User RAM" where the Target Address of the Internal RC Oscillator Calibration value is to be stored is: 882 hex -> 885 hex EXAMPLE: If the User places the address value "00 00 02 A5" in the User RAM locations "882 hex -> 885 hex" then the Internal RC Oscillator Calibration value will be programmed into the device's memory address: 000002A5 hex NOTE: The "Program Configuration" flag MUST be enabled if you are going to program the Oscillator Calibration Byte value into the memory map of the device. If the "Program Configuration" flag is NOT enabled (set to Yes) then the Oscillator Calibration Byte Programming operation is NOT performed. ************************************************************************* *** NOTE: No Calibration value will be stored in User RAM if *** *** User RAM address 882 hex -> 885 hex = FFFFFFFF hex *** ************************************************************************* * Below is a re-clarification of the above NOTE! * *-----------------------------------------------------------------------* ** To Disable Oscillator Calibration Byte Programming in either the ** ** data file or in Programmer's User RAM you need to do the following: ** ** *-----------------------------------------------------------------* ** ** ** ** If the address in the programmers' User RAM used to store the ** ** "Internal RC Oscillator Calibration Byte" programming Address has ** ** the following hex data: 'FFFFFFFF' then the programmer will SKIP ** ** writing the Calibration value into the memory map of the device, ** ** regardless of the setting of the "Program Configuration" flag. ** ** ** ** So for a tiny26: ** ** User RAM Address 882 hex -> 885 hex = 'FFFFFFFF' Equals NO ** ** Oscillator Calibration Byte programming performed! ** ** ** *-----------------------------------------------------------------------* ****************************************************************************** ****************************************************************************** ***------------------------------------------------------------------------*** ATtiny2313 ------------ ATtiny2313V ------------ ***----------------------- Programmer Setup Flags -------------------------*** NOTE: LB1 & LB2 are handled by Security Fuse 1 & 2 flags! Program Security fuse 1: Lock Bit 1 Program Security fuse 2: Lock Bit 2 Regarding Extended Fuse Byte, Fuse High Byte and Fuse Low Byte: NOTE: Atmel DataSheet states Default Value from Factory is: Extended Fuse Byte=$FF; Fuse High Byte=$DF; Fuse Low Byte=$64 NOTE: Programmer will read in the default Default Value from Factory as follows: Extended Fuse Byte=$01; Fuse High Byte=$DF; Fuse Low Byte=$64 NOTE: The "Extended Fuse Byte", "Fuse High Byte" and "Fuse Low Byte" are NOT erased. These three bytes are ONLY modified during a programming operation IF the "Program configuration" flag is enabled. UniFam programmers refer to the "Extended Fuse Byte", "Fuse High Byte" and "Fuse Low Byte" data as "Configuration Bytes". To program this data using the Hiterm interface you must enable (set to Yes) the "Program Configuration" flag in Hiterm. If you are using TaskLink interface you must enable the "Special Data #1" flag. To set this flag in TaskLink you must navigate to the following Dialog box: Setup -> Programmer Properties... -> "Special" Dialog tab PROGRAMMING OF THE OSCILLATOR CALIBRATION BYTE INTO THE MEMORY MAP OF THE EITHER THE MAIN FLASH MEMORY ARRAY OR THE EEPROM ARRAY: To enable this feature during a programming operation when using the Hiterm interface you must enable (set to Yes) the "Program Configuration" flag. To enable this feature during a programming operation when using the TaskLink interface you must enable the "Special Data #1" flag. To set this "Special Data #1" flag in TaskLink you must navigate to the following Dialog box: Setup -> Programmer Properties... -> "Special" Dialog tab WARNING: The "Program Configuration" flag enables programming of of the Configuration Bytes (Extended Fuse Byte, Fuse High Byte and Fuse Low Byte) and the programming of the Oscillator Calibration Byte. WARNING: Programming of the Oscillator Calibration Byte will NOT be enabled if the Oscillator Calibration Byte Programming Address is equal to the following hex data: 'FFFFFFFF' See "Internal RC Oscillator Calibration Byte" programming Address below for details. ***---------------------- Format of Fuse High Byte ------------------------*** NOTE: Atmel DataSheet states Default Fuse Byte Value from Factory are: Extended Fuse Byte=$01; Fuse High Byte=$DF; Fuse Low Byte=$64 *----------------------------------------* Fuse High Byte User RAM Address = 880 hex *----------------------------------------* Fuse High Byte, Bit 7: DWEN; debugWIRE Enable : disabled = 1; default : Enabled = 0 Fuse High Byte, Bit 6: EESAVE; Erase EEPROM during Chip Erase: Yes = 1; default : No = 0 Fuse High Byte, Bit 5: SPIEN; SPI Program/Data Downloading: Enable = 0; default : Disable = 1 Fuse High Byte, Bit 4: WDTON; Watchdog Timer always on: 1; default : 0 Fuse High Byte, Bits 3->1 : Brown-out Detector trigger level: BODLEVEL2,BODLEVEL1,BODLEVEL0 = 1,1,1; Default is BOD Disabled BODLEVEL2,BODLEVEL1,BODLEVEL0 = 1,1,0; 1.8V Typ. Vbot BODLEVEL2,BODLEVEL1,BODLEVEL0 = 1,0,1; 2.7V Typ. Vbot BODLEVEL2,BODLEVEL1,BODLEVEL0 = 1,0,0; 4.3V Typ. Vbot BODLEVEL2,BODLEVEL1,BODLEVEL0 = 0,1,1; Reserved BODLEVEL2,BODLEVEL1,BODLEVEL0 = 0,1,0; Reserved BODLEVEL2,BODLEVEL1,BODLEVEL0 = 0,0,1; Reserved BODLEVEL2,BODLEVEL1,BODLEVEL0 = 0,0,0; Reserved Fuse High Byte, Bit 0: RSTDISBL; External Reset Disable: = 1; default : = 0 ***---------------------- Format of Fuse Low Byte -------------------------*** NOTE: Atmel DataSheet states Default Fuse Byte Value from Factory are: Extended Fuse Byte=$01; Fuse High Byte=$DF; Fuse Low Byte=$64 *---------------------------------------* Fuse Low Byte User RAM Address = 881 hex *---------------------------------------* Fuse Low Byte, Bit 7 : CKDIV8; Divide clock by 8: 0; default : 1 Fuse Low Byte, Bit 6 : CKOUT; Clock Output: 1; default : 0 Fuse Low Byte, Bit 5,4 : SUT1,SUT0 Select start-up time Configuration: SUT1,SUT0 = 0,0 : SUT1,SUT0 = 0,1 : SUT1,SUT0 = 1,0; default : SUT1,SUT0 = 1,1 Fuse Low Byte, Bit 3->0 : Device Clocking Option: CKSEL3..0: 1111; External Crystal/Ceramic Resonator 1110; External Crystal/Ceramic Resonator 1101; External Crystal/Ceramic Resonator 1100; External Crystal/Ceramic Resonator 1011; External Crystal/Ceramic Resonator 1010; External Crystal/Ceramic Resonator 1001; External Crystal/Ceramic Resonator 1000; External Crystal/Ceramic Resonator 0111; Reserved 0110; Watchdog Oscillator 128kHz 0101; Reserved 0100; Calibrated internal RC Oscillator 8MHz; default 0011; Reserved 0010; Calibrated Internal RC Oscillator 4MHz 0001; Reserved 0000; External Clock The device is shipped with: SUT = 10 CKSEL = 0100 The default clock source setting is therefore the Internal 8MHz RC Oscillator with longest start-up time. This default setting ensures that all users can make their desired clock source setting using an In-System or Parallel Programming. ***---------------------- Format of Extended Fuse Byte --------------------*** NOTE: Atmel DataSheet states Default Fuse Byte Value from Factory are: Extended Fuse Byte=$01; Fuse High Byte=$DF; Fuse Low Byte=$64 *-------------------------------------------* Extended Fuse Byt User RAM Address = 882 hex *-------------------------------------------* SELFPRGEN Extended High Byte, Bit 0: SELFPRGEN; Self Programming Enable: 1; default : 0 ***----- Format of RC Oscillator Calibration Byte Programming Address -----*** *---------------------------------------* User RAM Address = 883 hex -> 886 hex *---------------------------------------* The location in the Programmer's "User RAM" where the Target Address of the Internal RC Oscillator Calibration value is to be stored is: 883 hex -> 886 hex EXAMPLE: If the User places the address value "00 00 02 A5" in the User RAM locations "883 hex -> 886 hex" then the Internal RC Oscillator Calibration value will be programmed into the device's memory address: 000002A5 hex NOTE: The "Program Configuration" flag MUST be enabled if you are going to program the Oscillator Calibration Byte value into the memory map of the device. If the "Program Configuration" flag is NOT enabled (set to Yes) then the Oscillator Calibration Byte Programming operation is NOT performed. ************************************************************************* *** NOTE: No Calibration value will be stored in User RAM if *** *** User RAM address 883 hex -> 886 hex = FFFFFFFF hex *** ************************************************************************* * Below is a re-clarification of the above NOTE! * *-----------------------------------------------------------------------* ** To Disable Oscillator Calibration Byte Programming in either the ** ** data file or in Programmer's User RAM you need to do the following: ** ** *-----------------------------------------------------------------* ** ** ** ** If the address in the programmers' User RAM used to store the ** ** "Internal RC Oscillator Calibration Byte" programming Address has ** ** the following hex data: 'FFFFFFFF' then the programmer will SKIP ** ** writing the Calibration value into the memory map of the device, ** ** regardless of the setting of the "Program Configuration" flag. ** ** ** ** So for a tiny2313: ** ** User RAM Address 883 hex -> 886 hex = 'FFFFFFFF' Equals NO ** ** Oscillator Calibration Byte programming performed! ** ** ** *-----------------------------------------------------------------------* ****************************************************************************** ****************************************************************************** ***------------------------------------------------------------------------*** ATtiny11 ------------ ATtiny11L ------------ Data in Programmer's User RAM is partitioned as follow: 0000 hex - 03FF hex Flash memory 0400 hex Fuse byte 0401 hex - 0404 hex Oscillator Calibration Byte Programming Address ***------------------- Programmer Setup Flags ----------------------------*** NOTE: LB1 & LB2 are handled by Security Fuse 1 & 2 flags! Program Security fuse 1: Lock Bit 1 Program Security fuse 2: Lock Bit 2 Regarding Fuse Byte : NOTE:1) Atmel DataSheet states Default Value from Factory is: Fuse Byte=$FC 2)The "Fuse Byte" are NOT erasable. 3)This byte is ONLY modified during a programming operation, IF the "Program configuration" flag is enabled. UniFam programmers refer to the Fuse Byte data as "Configuration Bytes". To program this data using the Hiterm interface you must enable (set to Yes) the "Program Configuration" flag in Hiterm. If you are using TaskLink interface you must enable the "Special Data #1" flag. To set this flag in TaskLink you must navigate to the following Dialog box: Setup -> Programmer Properties... -> "Special" Dialog tab PROGRAMMING OF THE OSCILLATOR CALIBRATION BYTE INTO THE MEMORY MAP OF EITHER THE MAIN FLASH MEMORY ARRAY OR THE EEPROM ARRAY: To enable this feature during a programming operation when using the Hiterm interface you must enable (set to Yes) the "Program Configuration" flag. To enable this feature during a programming operation when using the TaskLink interface you must enable the "Special Data #1" flag. To set this "Special Data #1" flag in TaskLink you must navigate to the following Dialog box: Setup -> Programmer Properties... -> "Special" Dialog tab WARNING: The "Program Configuration" flag enables programming of of the Configuration Bytes (Fuse Byte ) and the programming of the Oscillator Calibration Byte. WARNING: Programming of the Oscillator Calibration Byte will NOT be enabled if the Oscillator Calibration Byte Programming Address is equal to the following hex data: 'FFFFFFFF' See "Internal RC Oscillator Calibration Byte" programming Address below for details. ***---------------------- Format of Fuse Byte -----------------------------*** NOTE: For Bits defined below Atmel DataSheet states Default Factory Value is : Fuse Byte=$FC *----------------------------* User RAM Address = 400 hex *----------------------------* Fuse Byte, Bit 4: FSTRT; Start up time : Programmed = 1; default : UnProgrammed= 0 Fuse Byte, Bit 3: RSTDISBL; External Reset NOT Disabled: 1; default External Reset Disabled: 0 Fuse Byte, Bit 2,1,0: CKSEL 2..0: The fuse distribution in the byte at 0400 hex is as follow: bit 7 bit 6 bit5 bit4 bit 3 bit 2 bit1 bit0 --------------------------------------------------------------------- x x x FSTRT RSTDSBL CKSEL2 CLKSEL1 CLKSEL0 Bits masked as 'x' are unused and should be left un programmed ('1'). All fuses can be reprogrammed. These fuses stay unchanged by the bulk erase. "Default" is defined as what the manufacturer has stated as: "The device is shipped with this option selected." ***----- Format of RC Oscillator Calibration Byte Programming Address -----*** *---------------------------------------* User RAM Address = 401 hex -> 404 hex *---------------------------------------* The location in the Programmer's "User RAM" where the Target Address of the Internal RC Oscillator Calibration value is to be stored is: 401 hex -> 404 hex The following is an excerpt regarding the Calibration Byte from the Atmel data sheet: "The ATtiny11 has a one-byte calibration value for the internal RC Oscillator. This byte resides in the high byte of address $000 in the signature address space. To make use of this byte, it should be read from this location and written into the nor-mal Flash program memory." Data I/O's support of the "one byte calibration value" for the ATtiny11 is as follows: The "one byte calibration value" is read during programming operation, and then programmed into the normal Flash program memory if the "Program Configuration" flag has been enabled. During programming operation the algorithm looks to location 0401 hex to 0404 hex in the Programmer's User RAM to determine where the end-user wants to place the one byte calibration value. Note, this byte can only be located in the normal Flash program memory. The maximum value of this address is 03FF hex. EXAMPLE: If the User places the address value "00 00 02 A5" in the User RAM locations "401 hex -> 404 hex " then the Internal RC Oscillator Calibration value will be programmed into the device's memory address: 000002A5 hex NOTE: The "Program Configuration" flag MUST be enabled if you are going to program the Oscillator Calibration Byte value into the memory map of the device. If the "Program Configuration" flag is NOT enabled (set to Yes) then the Oscillator Calibration Byte Programming operation is NOT performed. ************************************************************************* *** NOTE: No Calibration value will be stored in User RAM if *** *** User RAM address 401 hex -> 404 hex = FFFFFFFF hex *** ************************************************************************* * Below is a re-clarification of the above NOTE! * *-----------------------------------------------------------------------* ** To Disable Oscillator Calibration Byte Programming in either the ** ** data file or in Programmer's User RAM you need to do the following: ** ** *-----------------------------------------------------------------* ** ** ** ** If the address in the programmers' User RAM used to store the ** ** "Internal RC Oscillator Calibration Byte" programming Address has ** ** the following hex data: 'FFFFFFFF' then the programmer will SKIP ** ** writing the Calibration value into the memory map of the device, ** ** regardless of the setting of the "Program Configuration" flag. ** ** ** *-----------------------------------------------------------------------* NOTE: Always enable at least one pass verify when programming. NOTE: When using small data files, consider to fill the Programmer's User RAM with FF hex (the blank state of the device) prior the data file downloading. That will cause that the locations not covered in the data file will be programmed to FF hex (left blank). In most cases it does not matter. ****************************************************************************** ****************************************************************************** ***------------------------------------------------------------------------*** ATtiny12 ------------ ATtiny12L ------------ ATtiny12V ------------ Data in Programmer's User RAM is partitioned as follow: 0000 hex - 03FF hex Flash memory 0400 hex - 043F hex EEPROM array 0440 hex Fuse byte 0441 hex - 0444 hex Oscillator Calibration Byte Programming Address ***------------------- Programmer Setup Flags ----------------------------*** NOTE: LB1 & LB2 are handled by Security Fuse 1 & 2 flags! Program Security fuse 1: Lock Bit 1 Program Security fuse 2: Lock Bit 2 Regarding Fuse Byte : NOTE:1) Atmel DataSheet states Default Value from Factory is: Fuse Byte=$52 2)The "Fuse Byte" are NOT erasable. 3)This byte is ONLY modified during a programming operation, IF the "Program configuration" flag is enabled. UniFam programmers refer to the Fuse Byte data as "Configuration Bytes". To program this data using the Hiterm interface you must enable (set to Yes) the "Program Configuration" flag in Hiterm. If you are using TaskLink interface you must enable the "Special Data #1" flag. To set this flag in TaskLink you must navigate to the following Dialog box: Setup -> Programmer Properties... -> "Special" Dialog tab PROGRAMMING OF THE OSCILLATOR CALIBRATION BYTE INTO THE MEMORY MAP OF EITHER THE MAIN FLASH MEMORY ARRAY OR THE EEPROM ARRAY: To enable this feature during a programming operation when using the Hiterm interface you must enable (set to Yes) the "Program Configuration" flag. To enable this feature during a programming operation when using the TaskLink interface you must enable the "Special Data #1" flag. To set this "Special Data #1" flag in TaskLink you must navigate to the following Dialog box: Setup -> Programmer Properties... -> "Special" Dialog tab WARNING: The "Program Configuration" flag enables programming of of the Configuration Bytes (Fuse Byte ) and the programming of the Oscillator Calibration Byte. WARNING: Programming of the Oscillator Calibration Byte will NOT be enabled if the Oscillator Calibration Byte Programming Address is equal to the following hex data: 'FFFFFFFF' See "Internal RC Oscillator Calibration Byte" programming Address below for details. ***---------------------- Format of Fuse Byte -----------------------------*** NOTE: For Bits defined below Atmel DataSheet states Default Factory Value is : Fuse Byte=$5C *----------------------------* User RAM Address = 440 hex *----------------------------* Fuse Byte, Bit 7: BODLEVEL; Brown-out Detector trigger level: 0; default : 1 Fuse Byte, Bit 6: BODEN; Brown out detector enabled: Disabled: 1; default Enabled : 0 Fuse Byte, Bit 5: SPIEN; SPI Program/Data Downloading: Enable = 0; default : Disable = 1 Fuse Byte, Bit 4: RSTDISBL; External Reset NOT Disabled: 1; default External Reset Disabled: 0 Fuse Byte, Bit 3,2,1,0: CKSEL 3..0: The fuse distribution in the byte at 0440 hex is as follow: bit 7 bit 6 bit5 bit4 bit 3 bit 2 bit1 bit0 --------------------------------------------------------------------- BODLEVEL BODEN SPIEN RSTDSBL CKSEL3 CKSEL2 CLKSEL1 CLKSEL0 "Default" is defined as what the manufacturer has stated as: "The device is shipped with this option selected." ***----- Format of RC Oscillator Calibration Byte Programming Address -----*** *---------------------------------------* User RAM Address = 441 hex -> 444 hex *---------------------------------------* The location in the Programmer's "User RAM" where the Target Address of the Internal RC Oscillator Calibration value is to be stored is: 441 hex -> 444 hex The following is an excerpt regarding the Calibration Byte from the Atmel data sheet: "The ATtiny12 has a one-byte calibration value for the internal RC Oscillator. This byte resides in the high byte of address $000 in the signature address space. To make use of this byte, it should be read from this location and written into the nor-mal Flash program memory." Data I/O's support of the "one byte calibration value" for the ATtiny12 is as follows: The "one byte calibration value" is read during programming operation, and then programmed into the normal Flash program memory if the "Program Configuration" flag has been enabled. During programming operation the algorithm looks to location 0441 hex to 0444 hex in the Programmer's User RAM to determine where the end-user wants to place the one byte calibration value. Note, this byte can only be located in the normal Flash program memory. The maximum value of this address is 03FF hex. EXAMPLE: If the User places the address value "00 00 02 A5" in the User RAM locations "441 hex -> 444 hex " then the Internal RC Oscillator Calibration value will be programmed into the device's memory address: 000002A5 hex NOTE: The "Program Configuration" flag MUST be enabled if you are going to program the Oscillator Calibration Byte value into the memory map of the device. If the "Program Configuration" flag is NOT enabled (set to Yes) then the Oscillator Calibration Byte Programming operation is NOT performed. ************************************************************************* *** NOTE: No Calibration value will be stored in User RAM if *** *** User RAM address 441 hex -> 444 hex = FFFFFFFF hex *** ************************************************************************* * Below is a re-clarification of the above NOTE! * *-----------------------------------------------------------------------* ** To Disable Oscillator Calibration Byte Programming in either the ** ** data file or in Programmer's User RAM you need to do the following: ** ** *-----------------------------------------------------------------* ** ** ** ** If the address in the programmers' User RAM used to store the ** ** "Internal RC Oscillator Calibration Byte" programming Address has ** ** the following hex data: 'FFFFFFFF' then the programmer will SKIP ** ** writing the Calibration value into the memory map of the device, ** ** regardless of the setting of the "Program Configuration" flag. ** ** ** *-----------------------------------------------------------------------* NOTE: Always enable at least one pass verify when programming. NOTE: When using small data files, consider to fill the Programmer's User RAM with FF hex (the blank state of the device) prior the data file downloading. That will cause that the locations not covered in the data file will be programmed to FF hex (left blank). In most cases it does not matter. ****************************************************************************** ****************************************************************************** ***------------------------------------------------------------------------*** ATtiny15 ------------ ATtiny15L ------------ Data in Programmer's User RAM is partitioned as follow: 0000 hex - 03FF hex Flash memory 0400 hex - 043F hex EEPROM array 0440 hex Fuse byte 0441 hex - 0444 hex Oscillator Calibration Byte Programming Address ***------------------- Programmer Setup Flags ----------------------------*** NOTE: LB1 & LB2 are handled by Security Fuse 1 & 2 flags! Program Security fuse 1: Lock Bit 1 Program Security fuse 2: Lock Bit 2 Regarding Fuse Byte : NOTE:1) Atmel DataSheet states Default Value from Factory is: Fuse Low Byte=$5C 2)The "Fuse Byte" are NOT erasable. 3)This byte is ONLY modified during a programming operation, IF the "Program configuration" flag is enabled. UniFam programmers refer to the Fuse Byte data as "Configuration Bytes". To program this data using the Hiterm interface you must enable (set to Yes) the "Program Configuration" flag in Hiterm. If you are using TaskLink interface you must enable the "Special Data #1" flag. To set this flag in TaskLink you must navigate to the following Dialog box: Setup -> Programmer Properties... -> "Special" Dialog tab PROGRAMMING OF THE OSCILLATOR CALIBRATION BYTE INTO THE MEMORY MAP OF EITHER THE MAIN FLASH MEMORY ARRAY OR THE EEPROM ARRAY: To enable this feature during a programming operation when using the Hiterm interface you must enable (set to Yes) the "Program Configuration" flag. To enable this feature during a programming operation when using the TaskLink interface you must enable the "Special Data #1" flag. To set this "Special Data #1" flag in TaskLink you must navigate to the following Dialog box: Setup -> Programmer Properties... -> "Special" Dialog tab WARNING: The "Program Configuration" flag enables programming of of the Configuration Bytes (Fuse Byte ) and the programming of the Oscillator Calibration Byte. WARNING: Programming of the Oscillator Calibration Byte will NOT be enabled if the Oscillator Calibration Byte Programming Address is equal to the following hex data: 'FFFFFFFF' See "Internal RC Oscillator Calibration Byte" programming Address below for details. ***---------------------- Format of Fuse Byte -----------------------------*** NOTE: For Bits defined below Atmel DataSheet states Default Factory Value is : Fuse Byte=$5C *----------------------------* User RAM Address = 440 hex *----------------------------* Fuse Byte, Bit 7: BODLEVEL; Brown-out Detector trigger level: 0; default : 1 Fuse Byte, Bit 6: BODEN; Brown out detector enabled: Disabled: 1; default Enabled : 0 Fuse Byte, Bit 5: SPIEN; SPI Program/Data Downloading: Enable = 0; default : Disable = 1 Fuse Byte, Bit 4: RSTDISBL; External Reset NOT Disabled: 1; default External Reset Disabled: 0 Fuse Byte, Bit 1,0: Device Clocking Option: CKSEL 1..0: 10; 9.6MHz Calibrated Internal RC Oscillator; default 01; 4.8MHz Calibrated Internal RC Oscillator 00; External Clock bit 7 bit 6 bit5 bit4 bit 3 bit 2 bit1 bit0 ------------------------------------------------------------------- BODLEVEL BODEN SPIEN RSTDSBL x x CLKSEL1 CLKSEL0 Bits masked as 'x' are unused and should be left un programmed ('1'). All fuses can be reprogrammed. These fuses stay unchanged by the bulk erase. "Default" is defined as what the manufacturer has stated as: "The device is shipped with this option selected." ***----- Format of RC Oscillator Calibration Byte Programming Address -----*** *---------------------------------------* User RAM Address = 441 hex -> 444 hex *---------------------------------------* The location in the Programmer's "User RAM" where the Target Address of the Internal RC Oscillator Calibration value is to be stored is: 441 hex -> 444 hex The following is an excerpt regarding the Calibration Byte from the Atmel data sheet: "The ATtiny15L has a one-byte calibration value for the internal RC Oscillator. This byte resides in the high byte of address $000 in the signature address space. To make use of this byte, it should be read from this location and written into the nor-mal Flash program memory." Data I/O's support of the "one byte calibration value" for the ATtiny15 is as follows: The "one byte calibration value" is read during programming operation, and then programmed into the normal Flash program memory if the "Program Configuration" flag has been enabled. During programming operation the algorithm looks to location 0441 hex to 0444 hex in the Programmer's User RAM to determine where the end-user wants to place the one byte calibration value. Note, this byte can only be located in the normal Flash program memory. The maximum value of this address is 03FF hex. EXAMPLE: If the User places the address value "00 00 02 A5" in the User RAM locations "441 hex -> 444 hex " then the Internal RC Oscillator Calibration value will be programmed into the device's memory address: 000002A5 hex NOTE: The "Program Configuration" flag MUST be enabled if you are going to program the Oscillator Calibration Byte value into the memory map of the device. If the "Program Configuration" flag is NOT enabled (set to Yes) then the Oscillator Calibration Byte Programming operation is NOT performed. ************************************************************************* *** NOTE: No Calibration value will be stored in User RAM if *** *** User RAM address 441 hex -> 444 hex = FFFFFFFF hex *** ************************************************************************* * Below is a re-clarification of the above NOTE! * *-----------------------------------------------------------------------* ** To Disable Oscillator Calibration Byte Programming in either the ** ** data file or in Programmer's User RAM you need to do the following: ** ** *-----------------------------------------------------------------* ** ** ** ** If the address in the programmers' User RAM used to store the ** ** "Internal RC Oscillator Calibration Byte" programming Address has ** ** the following hex data: 'FFFFFFFF' then the programmer will SKIP ** ** writing the Calibration value into the memory map of the device, ** ** regardless of the setting of the "Program Configuration" flag. ** ** ** *-----------------------------------------------------------------------* NOTE: Always enable at least one pass verify when programming. NOTE: When using small data files, consider to fill the Programmer's User RAM with FF hex (the blank state of the device) prior the data file downloading. That will cause that the locations not covered in the data file will be programmed to FF hex (left blank). In most cases it does not matter. ****************************************************************************** ****************************************************************************** ***------------------------------------------------------------------------*** ATtiny13 ------------ ATtiny13V ------------ ***----------------------- Programmer Setup Flags -------------------------*** NOTE: LB1 & LB2 are handled by Security Fuse 1 & 2 flags! Program Security fuse 1: Lock Bit 1 Program Security fuse 2: Lock Bit 2 Regarding Fuse High Byte and Fuse Low Byte: NOTE: Atmel DataSheet states Default Value from Factory is: Fuse High Byte=$FF; Fuse Low Byte=$6A NOTE: The "Fuse High Byte" and "Fuse Low Byte" are NOT erased. These two bytes are ONLY modified during a programming operation IF the "Program configuration" flag is enabled. UniFam programmers refer to the Fuse High Byte and Fuse Low Byte data as "Configuration Bytes". To program this data using the Hiterm interface you must enable (set to Yes) the "Program Configuration" flag in Hiterm. If you are using TaskLink interface you must enable the "Special Data #1" flag. To set this flag in TaskLink you must navigate to the following Dialog box: Setup -> Programmer Properties... -> "Special" Dialog tab PROGRAMMING OF THE OSCILLATOR CALIBRATION BYTE INTO THE MEMORY MAP OF THE EITHER THE MAIN FLASH MEMORY ARRAY OR THE EEPROM ARRAY: To enable this feature during a programming operation when using the Hiterm interface you must enable (set to Yes) the "Program Configuration" flag. To enable this feature during a programming operation when using the TaskLink interface you must enable the "Special Data #1" flag. To set this "Special Data #1" flag in TaskLink you must navigate to the following Dialog box: Setup -> Programmer Properties... -> "Special" Dialog tab WARNING: The "Program Configuration" flag enables programming of of the Configuration Bytes (Fuse High Byte and Fuse Low Byte) and the programming of the Oscillator Calibration Byte. WARNING: Programming of the Oscillator Calibration Byte will NOT be enabled if the Oscillator Calibration Byte Programming Address is equal to the following hex data: 'FFFFFFFF' See "Internal RC Oscillator Calibration Byte" programming Address below for details. ***---------------------- Format of Fuse High Byte ------------------------*** NOTE: For Bits defined below Atmel DataSheet states Default Factory Value are: Fuse High Byte=$FF; Fuse Low Byte=$6A *----------------------------* User RAM Address = 440 hex *----------------------------* Fuse High Byte, Bit 7->5: Set to '1'(unprogrammed) Fuse High Byte, Bit 4: SELFPRGEN; Self Programming Enable: 1; default : 0 Fuse High Byte, Bit 3: DWEN; DebugWire Enable: 1; default : 0 Fuse High Byte, Bit 2: BODLEVEL1; Brown-out Detector trigger level: 1; default : 0 Fuse High Byte, Bit 1: BODLEVEL0; Brown-out Detector trigger level: 1; default : 0 Fuse High Byte, Bit 0: RSTDISBL; External Reset NOT Disabled: 1; default External Reset Disabled: 0 ***---------------------- Format of Fuse Low Byte -------------------------*** NOTE: For Bits defined below Atmel DataSheet states Default Factory Value are: Fuse High Byte=$FF; Fuse Low Byte=$6A *----------------------------* User RAM Address = 441 hex *----------------------------* Fuse Low Byte, Bit7: SPIEN; SPI Program/Data Downloading: Enable = 0; default : Disable = 1 Fuse Low Byte, Bit 6: EESAVE; Erase EEPROM during Chip Erase: Yes = 1; default : No = 0 Fuse Low Byte, Bit 5: WDTON; Watchdog Timer: On = 1; default : Off = 0 Fuse Low Byte, Bit 4: CKDIV8; Device clock by 8: 1 : 0; default Fuse Low Byte, Bit 3,2: SUT1,SUT0 Select start-up time Configuration: SUT1,SUT0 = 0,0 : SUT1,SUT0 = 0,1 : SUT1,SUT0 = 1,0; default : SUT1,SUT0 = 1,1 Fuse Low Byte, Bit 1,0: Device Clocking Option: CKSEL 1..0: 10; 9.6MHz Calibrated Internal RC Oscillator; default 01; 4.8MHz Calibrated Internal RC Oscillator 00; External Clock "Default" is defined as what the manufacturer has stated as: "The device is shipped with this option selected." The default clock source setting is therefore the Internal RC Oscillator with longest start-up time. This default setting ensures that all users can make their desired clock source setting using an In-System Programming. SUT = 10 CKSEL = 10 ***----- Format of RC Oscillator Calibration Byte Programming Address -----*** *---------------------------------------* User RAM Address = 442 hex -> 445 hex *---------------------------------------* The location in the Programmer's "User RAM" where the Target Address of the Internal RC Oscillator Calibration value is to be stored is: 442 hex -> 445 hex EXAMPLE: If the User places the address value "00 00 02 A5" in the User RAM locations "442 hex -> 445 hex " then the Internal RC Oscillator Calibration value will be programmed into the device's memory address: 000002A5 hex NOTE: The "Program Configuration" flag MUST be enabled if you are going to program the Oscillator Calibration Byte value into the memory map of the device. If the "Program Configuration" flag is NOT enabled (set to Yes) then the Oscillator Calibration Byte Programming operation is NOT performed. ************************************************************************* *** NOTE: No Calibration value will be stored in User RAM if *** *** User RAM address 442 hex -> 445 hex = FFFFFFFF hex *** ************************************************************************* * Below is a re-clarification of the above NOTE! * *-----------------------------------------------------------------------* ** To Disable Oscillator Calibration Byte Programming in either the ** ** data file or in Programmer's User RAM you need to do the following: ** ** *-----------------------------------------------------------------* ** ** ** ** If the address in the programmers' User RAM used to store the ** ** "Internal RC Oscillator Calibration Byte" programming Address has ** ** the following hex data: 'FFFFFFFF' then the programmer will SKIP ** ** writing the Calibration value into the memory map of the device, ** ** regardless of the setting of the "Program Configuration" flag. ** ** ** ** So for a tiny13: ** ** User RAM Address 442 hex -> 445 hex = 'FFFFFFFF' Equals NO ** ** Oscillator Calibration Byte programming performed! ** ** ** *-----------------------------------------------------------------------* ****************************************************************************** ****************************************************************************** ***------------------------------------------------------------------------*** ATmega16 ------------ ATmega16L ------------ ***----------------------- Programmer Setup Flags -------------------------*** NOTE: LB1 & LB2 are handled by Security Fuse 1 & 2 flags! Program Security fuse 1: Lock Bit 1 Program Security fuse 2: Lock Bit 2 NOTE: Boot Lock Bit's in the Lock Bit Byte are programmed ONLY if Security Fuse 3 flag = Y. Please see "Lock Bit Byte" information below for configuring device for "Boot Lock Byte" programming. Regarding Fuse High Byte and Fuse Low Byte: NOTE: Atmel DataSheet states Default Value from Factory is: Fuse High Byte=$99; Fuse Low Byte=$E1 NOTE: Programmer will read in the default Default Value from Factory as follows: Fuse High Byte=$99; Fuse Low Byte=$E1 NOTE: The "Fuse High Byte" and "Fuse Low Byte" are NOT erased. These two bytes are ONLY modified during a programming operation IF the "Program configuration" flag is enabled. UniFam programmers refer to the Fuse High Byte and Fuse Low Byte data as "Configuration Bytes". To program this data using the Hiterm interface you must enable (set to Yes) the "Program Configuration" flag in Hiterm. If you are using TaskLink interface you must enable the "Special Data #1" flag. To set this flag in TaskLink you must navigate to the following Dialog box: Setup -> Programmer Properties... -> "Special" Dialog tab PROGRAMMING OF THE OSCILLATOR CALIBRATION BYTE INTO THE MEMORY MAP OF THE EITHER THE MAIN FLASH MEMORY ARRAY OR THE EEPROM ARRAY: To enable this feature during a programming operation when using the Hiterm interface you must enable (set to Yes) the "Program Configuration" flag. To enable this feature during a programming operation when using the TaskLink interface you must enable the "Special Data #1" flag. To set this "Special Data #1" flag in TaskLink you must navigate to the following Dialog box: Setup -> Programmer Properties... -> "Special" Dialog tab WARNING: The "Program Configuration" flag enables programming of of the Configuration Bytes (Fuse High Byte and Fuse Low Byte) and the programming of the Oscillator Calibration Byte. WARNING: Programming of the Oscillator Calibration Byte will NOT be enabled if the Oscillator Calibration Byte Programming Address is equal to the following hex data: 'FFFFFFFF' See "Internal RC Oscillator Calibration Byte" programming Address below for details. ***---------------------- Format of Fuse High Byte ------------------------*** NOTE: For Bits defined below Atmel DataSheet states Default Factory Value are: Fuse High Byte=$99; Fuse Low Byte=$E1 *------------------------------------* User RAM Address = 4200 hex *------------------------------------* Fuse High Byte, Bit 7 : OCDEN; Enable OCD: disabled = 1; default : Enabled = 0 Fuse High Byte, Bit 6 : JTAGEN; JTAG support: Enabled = 0; default : Disabled = 1 Fuse High Byte, Bit 5 : SPIEN; SPI Program/Data Downloading: Enable = 0; default : Disable = 1 Fuse High Byte, Bit 4 : CKOPT; Oscillator Options: 1; default : 0 Fuse High Byte, Bit 3 : EESAVE; Erase EEPROM during Chip Erase: Yes = 1; default : No = 0 Fuse High Byte, Bit 2,1: BOOTS Z1,Z0; Boot Size Configuration: 1024 Words: Z1,Z0 = 00; default : 512 Words: Z1,Z0 = 01 : 256 Words: Z1,Z0 = 10 : 128 Words: Z1,Z0 = 11 Fuse High Byte, Bit 0 : BOOTRST; Reset Vector: Application Reset($0000) = 1; default : Boot Loader Reset = 0 ***---------------------- Format of Fuse Low Byte -------------------------*** NOTE: For Bits defined below Atmel DataSheet states Default Factory Value are: Fuse High Byte=$99; Fuse Low Byte=$E1 *------------------------------------* User RAM Address = 4201 hex *------------------------------------* Fuse Low Byte, Bit 7 : BODLEVEL; Brown-out Detector trigger level: 1; default : 0 Fuse Low Byte, Bit 6 : BODEN; Brown-out Detector: Disabled = 1; default : Enable = 0 Fuse Low Byte, Bit 5,4 : SUT1,SUT0 Select start-up time Configuration: SUT1,SUT0 = 0,0 : SUT1,SUT0 = 0,1 : SUT1,SUT0 = 1,0; default : SUT1,SUT0 = 1,1 Fuse Low Byte, Bit 3->0 : Device Clocking Option: CKSEL3..0: 1111; External Crystal/Ceramic Resonator 1110; External Crystal/Ceramic Resonator 1101; External Crystal/Ceramic Resonator 1100; External Crystal/Ceramic Resonator 1011; External Crystal/Ceramic Resonator 1010; External Crystal/Ceramic Resonator 1001; External Low-frequency Crystal 1000; External RC Oscillator 0111; External RC Oscillator 0110; External RC Oscillator 0101; External RC Oscillator 0100; 8MHz Calibrated Internal RC Oscillator 0011; 4MHz Calibrated Internal RC Oscillator 0010; 2MHz Calibrated Internal RC Oscillator 0001; 1MHz Calibrated Internal RC Oscillator; default 0000; External Clock The device is shipped with: SUT = 10 CKSEL = 0001 The default clock source setting is therefore the Internal RC Oscillator with longest start-up time. This default setting ensures that all users can make their desired clock source setting using an In-System or Parallel Programming. ***------------------- Format of Lock Bit Byte BLB1 Mode ------------------*** *------------------------------------* User RAM Address = 4202 hex; Bits 1,0 *------------------------------------* Lock Bit Byte: Bit 5,4 BLB 11 & 12 BLB1 Mode: 1 (BLB12,BLB11 = 1,1) : 2 (BLB12,BLB11 = 1,0) : 3 (BLB12,BLB11 = 0,0) : 4 (BLB12,BLB11 = 0,1) ***------------------- Format of Lock Bit Byte BLB0 Mode ------------------*** *------------------------------------* User RAM Address = 4203 hex; Bits 1,0 *------------------------------------* Lock Bit Byte: Bit 3,2 BLB 01 & 02 BLB0 Mode: 1 (BLB02,BLB01 = 1,1) : 2 (BLB02,BLB01 = 1,0) : 3 (BLB02,BLB01 = 0,0) : 4 (BLB02,BLB01 = 0,1) ***----- Format of RC Oscillator Calibration Byte Programming Address -----*** *---------------------------------------* User RAM Address = 4204 hex -> 4207 hex *---------------------------------------* The location in the Programmer's "User RAM" where the Target Address of the Internal RC Oscillator Calibration value is to be stored is: 4204 hex -> 4207 hex EXAMPLE: If the User places the address value "00 00 02 A5" in the User RAM locations "4204 hex -> 4207 hex " then the Internal RC Oscillator Calibration value will be programmed into the device's memory address: 000002A5 hex NOTE: The "Program Configuration" flag MUST be enabled if you are going to program the Oscillator Calibration Byte value into the memory map of the device. If the "Program Configuration" flag is NOT enabled (set to Yes) then the Oscillator Calibration Byte Programming operation is NOT performed. ************************************************************************* *** NOTE: No Calibration value will be stored in User RAM if *** *** User RAM address 4204 hex -> 4207 hex = FFFFFFFF hex *** ************************************************************************* * Below is a re-clarification of the above NOTE! * *-----------------------------------------------------------------------* ** To Disable Oscillator Calibration Byte Programming in either the ** ** data file or in Programmer's User RAM you need to do the following: ** ** *-----------------------------------------------------------------* ** ** ** ** If the address in the programmers' User RAM used to store the ** ** "Internal RC Oscillator Calibration Byte" programming Address has ** ** the following hex data: 'FFFFFFFF' then the programmer will SKIP ** ** writing the Calibration value into the memory map of the device, ** ** regardless of the setting of the "Program Configuration" flag. ** ** ** ** So for a mega16: ** ** User RAM Address 4204 hex -> 4207 hex = 'FFFFFFFF' Equals NO ** ** Oscillator Calibration Byte programming performed! ** ** ** *-----------------------------------------------------------------------* ****************************************************************************** ****************************************************************************** ***------------------------------------------------------------------------*** ATmega162 ------------ ATmega162V ------------ ***----------------------- Programmer Setup Flags -------------------------*** NOTE: LB1 & LB2 are handled by Security Fuse 1 & 2 flags! Program Security fuse 1: Lock Bit 1 Program Security fuse 2: Lock Bit 2 NOTE: Boot Lock Bit's in the Lock Bit Byte are programmed ONLY if Security Fuse 3 flag = Y. Please see "Lock Bit Byte" information below for configuring device for "Boot Lock Byte" programming. Regarding Fuse High Byte and Fuse Low Byte: NOTE: Atmel DataSheet states Default Value from Factory is: Extended Fuse Byte=$FF; Fuse High Byte=$99; Fuse Low Byte=$62 NOTE: Programmer will read in the default Default Value from Factory as follows: Extended Fuse Byte=$1E; Fuse High Byte=$99; Fuse Low Byte=$62 NOTE: The "Extended Fuse Byte", "Fuse High Byte" and "Fuse Low Byte" are NOT erased. These three bytes are ONLY modified during a programming operation IF the "Program configuration" flag is enabled. UniFam programmers refer to the "Extended Fuse Byte", "Fuse High Byte" and "Fuse Low Byte" data as "Configuration Bytes". To program this data using the Hiterm interface you must enable (set to Yes) the "Program Configuration" flag in Hiterm. If you are using TaskLink interface you must enable the "Special Data #1" flag. To set this flag in TaskLink you must navigate to the following Dialog box: Setup -> Programmer Properties... -> "Special" Dialog tab PROGRAMMING OF THE OSCILLATOR CALIBRATION BYTE INTO THE MEMORY MAP OF THE EITHER THE MAIN FLASH MEMORY ARRAY OR THE EEPROM ARRAY: To enable this feature during a programming operation when using the Hiterm interface you must enable (set to Yes) the "Program Configuration" flag. To enable this feature during a programming operation when using the TaskLink interface you must enable the "Special Data #1" flag. To set this "Special Data #1" flag in TaskLink you must navigate to the following Dialog box: Setup -> Programmer Properties... -> "Special" Dialog tab WARNING: The "Program Configuration" flag enables programming of of the Configuration Bytes (Extended Fuse Byte, Fuse High Byte and Fuse Low Byte) and the programming of the Oscillator Calibration Byte. WARNING: Programming of the Oscillator Calibration Byte will NOT be enabled if the Oscillator Calibration Byte Programming Address is equal to the following hex data: 'FFFFFFFF' See "Internal RC Oscillator Calibration Byte" programming Address below for details. ***---------------------- Format of Fuse High Byte ------------------------*** NOTE: For Bits defined below Atmel DataSheet states Default Factory Value are: Extended Fuse Byte=$1E; Fuse High Byte=$99; Fuse Low Byte=$62 *------------------------------------* User RAM Address = 4200 hex *------------------------------------* Fuse High Byte, Bit 7 : OCDEN; Enable OCD: disabled = 1 : Enabled = 0 Fuse High Byte, Bit 6 : JTAGEN; JTAG support: Enabled = 0 : Disabled = 1 Fuse High Byte, Bit 5 : SPIEN; SPI Program/Data Downloading: Enable = 0 : Disable = 1 Fuse High Byte, Bit 4 : WDTON; Watchdog Timer always on: 1 : 0 Fuse High Byte, Bit 3 : EESAVE; Erase EEPROM during Chip Erase: Yes = 1 : No = 0 Fuse High Byte, Bit 2,1: BOOTS Z1,Z0; Boot Size Configuration: 1024 Words: Z1,Z0 = 00 : 512 Words: Z1,Z0 = 01 : 256 Words: Z1,Z0 = 10 : 128 Words: Z1,Z0 = 11 Fuse High Byte, Bit 0 : BOOTRST; Reset Vector: Application Reset($0000) = 1 : Boot Loader Reset = 0 ***---------------------- Format of Fuse Low Byte -------------------------*** NOTE: For Bits defined below Atmel DataSheet states Default Factory Value are: Extended Fuse Byte=$1E; Fuse High Byte=$99; Fuse Low Byte=$62 *------------------------------------* User RAM Address = 4201 hex *------------------------------------* Fuse Low Byte, Bit 7 : CKDIV8; Divide clock by 8: 0 : 1 Fuse Low Byte, Bit 6 : CKOUT; Clock Output: 1 : 0 Fuse Low Byte, Bit 5,4 : SUT1,SUT0 Select start-up time Configuration: SUT1,SUT0 = 0,0 : SUT1,SUT0 = 0,1 : SUT1,SUT0 = 1,0; default : SUT1,SUT0 = 1,1 Fuse Low Byte, Bit 3->0 : Device Clocking Option: CKSEL3..0: 1111; External Crystal/Ceramic Resonator 1110; External Crystal/Ceramic Resonator 1101; External Crystal/Ceramic Resonator 1100; External Crystal/Ceramic Resonator 1011; External Crystal/Ceramic Resonator 1010; External Crystal/Ceramic Resonator 1001; External Crystal/Ceramic Resonator 1000; External Crystal/Ceramic Resonator 0111; External Low-frequency Crystal 0110; External Low-frequency Crystal 0101; External Low-frequency Crystal 0100; External Low-frequency Crystal 0011; Reserved 0010; 8MHz Calibrated Internal RC Oscillator; default 0001; Reserved 0000; External Clock The device is shipped with: SUT = 10 CKSEL = 0010 The default clock source setting is therefore the Internal RC Oscillator with longest start-up time. This default setting ensures that all users can make their desired clock source setting using an In-System or Parallel Programming. ***---------------------- Format of Extended Fuse Byte --------------------*** NOTE: For Bits defined below Atmel DataSheet states Default Factory Value are: Extended Fuse Byte=$1E; Fuse High Byte=$99; Fuse Low Byte=$62 *------------------------------------* User RAM Address = 4202 hex *------------------------------------* Extended High Byte, Bit 4 : M161C; ATmega161 compatibility Mode: 1 : 0 Extended High Byte, Bits 3->1 : Brown-out Detector trigger level: BODLEVEL2,BODLEVEL1,BODLEVEL0 = 1,1,1; Default is Disabled BODLEVEL2,BODLEVEL1,BODLEVEL0 = 1,1,0; 1.7V Min. 1.8V Typ. 2.0V Max. BODLEVEL2,BODLEVEL1,BODLEVEL0 = 1,0,1; 2.5V Min. 2.7V Typ. 2.9V Max. BODLEVEL2,BODLEVEL1,BODLEVEL0 = 1,0,0; 4.1V Min. 4.3V Typ. 4.5V Max. BODLEVEL2,BODLEVEL1,BODLEVEL0 = 0,1,1; 2.1V Min. 2.3V Typ. 2.5V Max. BODLEVEL2,BODLEVEL1,BODLEVEL0 = 0,1,0; Reserved BODLEVEL2,BODLEVEL1,BODLEVEL0 = 0,0,1; Reserved BODLEVEL2,BODLEVEL1,BODLEVEL0 = 0,0,0; Reserved ***------------------- Format of Lock Bit Byte BLB1 Mode ------------------*** *------------------------------------* User RAM Address = 4203 hex; Bits 1,0 *------------------------------------* Lock Bit Byte: Bit 5,4 BLB 11 & 12 BLB1 Mode: 1 (BLB12,BLB11 = 1,1) : 2 (BLB12,BLB11 = 1,0) : 3 (BLB12,BLB11 = 0,0) : 4 (BLB12,BLB11 = 0,1) ***------------------- Format of Lock Bit Byte BLB0 Mode ------------------*** *------------------------------------* User RAM Address = 4204 hex; Bits 1,0 *------------------------------------* Lock Bit Byte: Bit 3,2 BLB 01 & 02 BLB0 Mode: 1 (BLB02,BLB01 = 1,1) : 2 (BLB02,BLB01 = 1,0) : 3 (BLB02,BLB01 = 0,0) : 4 (BLB02,BLB01 = 0,1) ***----- Format of RC Oscillator Calibration Byte Programming Address -----*** *---------------------------------------* User RAM Address = 4205 hex -> 4208 hex *---------------------------------------* The location in the Programmer's "User RAM" where the Target Address of the Internal RC Oscillator Calibration value is to be stored is: 4205 hex -> 4208 hex EXAMPLE: If the User places the address value "00 00 02 A5" in the User RAM locations "4205 hex -> 4208 hex " then the Internal RC Oscillator Calibration value will be programmed into the device's memory address: 000002A5 hex NOTE: The "Program Configuration" flag MUST be enabled if you are going to program the Oscillator Calibration Byte value into the memory map of the device. If the "Program Configuration" flag is NOT enabled (set to Yes) then the Oscillator Calibration Byte Programming operation is NOT performed. ************************************************************************* *** NOTE: No Calibration value will be stored in User RAM if *** *** User RAM address 4205 hex -> 4208 hex = FFFFFFFF hex *** ************************************************************************* * Below is a re-clarification of the above NOTE! * *-----------------------------------------------------------------------* ** To Disable Oscillator Calibration Byte Programming in either the ** ** data file or in Programmer's User RAM you need to do the following: ** ** *-----------------------------------------------------------------* ** ** ** ** If the address in the programmers' User RAM used to store the ** ** "Internal RC Oscillator Calibration Byte" programming Address has ** ** the following hex data: 'FFFFFFFF' then the programmer will SKIP ** ** writing the Calibration value into the memory map of the device, ** ** regardless of the setting of the "Program Configuration" flag. ** ** ** ** So for a mega162: ** ** User RAM Address 4205 hex -> 4208 hex = 'FFFFFFFF' Equals NO ** ** Oscillator Calibration Byte programming performed! ** ** ** *-----------------------------------------------------------------------* ****************************************************************************** ****************************************************************************** ***------------------------------------------------------------------------*** ATmega88 ------------ ATmega88V ------------ ***----------------------- Programmer Setup Flags -------------------------*** NOTE: LB1 & LB2 are handled by Security Fuse 1 & 2 flags! Program Security fuse 1: Lock Bit 1 Program Security fuse 2: Lock Bit 2 NOTE: Boot Lock Bit's in the Lock Bit Byte are programmed ONLY if Security Fuse 3 flag = Y. Please see "Lock Bit Byte" information below for configuring device for "Boot Lock Byte" programming. Regarding Fuse High Byte and Fuse Low Byte: NOTE: Atmel DataSheet states Default Value from Factory is: Extended Fuse Byte=$F9; Fuse High Byte=$DF; Fuse Low Byte=$62 NOTE: Programmer will read in the default Default Value from Factory as follows: Extended Fuse Byte=$01; Fuse High Byte=$DF; Fuse Low Byte=$62 NOTE: The "Extended Fuse Byte", "Fuse High Byte" and "Fuse Low Byte" are NOT erased. These three bytes are ONLY modified during a programming operation IF the "Program configuration" flag is enabled. UniFam programmers refer to the "Extended Fuse Byte", "Fuse High Byte" and "Fuse Low Byte" data as "Configuration Bytes". To program this data using the Hiterm interface you must enable (set to Yes) the "Program Configuration" flag in Hiterm. If you are using TaskLink interface you must enable the "Special Data #1" flag. To set this flag in TaskLink you must navigate to the following Dialog box: Setup -> Programmer Properties... -> "Special" Dialog tab PROGRAMMING OF THE OSCILLATOR CALIBRATION BYTE INTO THE MEMORY MAP OF THE EITHER THE MAIN FLASH MEMORY ARRAY OR THE EEPROM ARRAY: To enable this feature during a programming operation when using the Hiterm interface you must enable (set to Yes) the "Program Configuration" flag. To enable this feature during a programming operation when using the TaskLink interface you must enable the "Special Data #1" flag. To set this "Special Data #1" flag in TaskLink you must navigate to the following Dialog box: Setup -> Programmer Properties... -> "Special" Dialog tab WARNING: The "Program Configuration" flag enables programming of of the Configuration Bytes (Extended Fuse Byte, Fuse High Byte and Fuse Low Byte) and the programming of the Oscillator Calibration Byte. WARNING: Programming of the Oscillator Calibration Byte will NOT be enabled if the Oscillator Calibration Byte Programming Address is equal to the following hex data: 'FFFFFFFF' See "Internal RC Oscillator Calibration Byte" programming Address below for details. ***---------------------- Format of Fuse High Byte ------------------------*** NOTE: For Bits defined below Atmel DataSheet states Default Factory Value are: Extended Fuse Byte=$01; Fuse High Byte=$DF; Fuse Low Byte=$62 *------------------------------------* User RAM Address = 2200 hex *------------------------------------* Fuse High Byte, Bit 7: RSTDISBL; External Reset Disable: = 1; default : = 0 Fuse High Byte, Bit 6: DWEN; DebugWire Enable: 1; default : 0 Fuse High Byte, Bit 5: SPIEN; SPI Program/Data Downloading: Enable = 0; Default : Disable = 1 Fuse High Byte, Bit 4: WDTON; Watchdog Timer always on: 1; Default : 0 Fuse High Byte, Bit 3: EESAVE; Erase EEPROM during Chip Erase: Yes = 1; Default : No = 0 Fuse High Byte, Bits 2->0: Brown-out Detector trigger level: BODLEVEL2,BODLEVEL1,BODLEVEL0 = 1,1,1; Default is Disabled BODLEVEL2,BODLEVEL1,BODLEVEL0 = 1,1,0; 1.7V Min. 1.8V Typ. 2.0V Max. BODLEVEL2,BODLEVEL1,BODLEVEL0 = 1,0,1; 2.5V Min. 2.7V Typ. 2.9V Max. BODLEVEL2,BODLEVEL1,BODLEVEL0 = 1,0,0; 4.1V Min. 4.3V Typ. 4.5V Max. BODLEVEL2,BODLEVEL1,BODLEVEL0 = 0,1,1; Reserved BODLEVEL2,BODLEVEL1,BODLEVEL0 = 0,1,0; Reserved BODLEVEL2,BODLEVEL1,BODLEVEL0 = 0,0,1; Reserved BODLEVEL2,BODLEVEL1,BODLEVEL0 = 0,0,0; Reserved ***---------------------- Format of Fuse Low Byte -------------------------*** NOTE: For Bits defined below Atmel DataSheet states Default Factory Value are: Extended Fuse Byte=$01; Fuse High Byte=$DF; Fuse Low Byte=$62 *------------------------------------* User RAM Address = 2201 hex *------------------------------------* Fuse Low Byte, Bit 7 : CKDIV8; Divide clock by 8: 0; default : 1 Fuse Low Byte, Bit 6 : CKOUT; Clock Output: 1; default : 0 Fuse Low Byte, Bit 5,4 : SUT1,SUT0 Select start-up time Configuration: SUT1,SUT0 = 0,0 : SUT1,SUT0 = 0,1 : SUT1,SUT0 = 1,0; default : SUT1,SUT0 = 1,1 Fuse Low Byte, Bit 3->0 : Device Clocking Option: CKSEL3..0: 1111; Low Power Crystal Oscillator 1110; Low Power Crystal Oscillator 1101; Low Power Crystal Oscillator 1100; Low Power Crystal Oscillator 1011; Low Power Crystal Oscillator 1010; Low Power Crystal Oscillator 1001; Low Power Crystal Oscillator 1000; Low Power Crystal Oscillator 0111; Full Swing Crystal Oscillator 0110; Full Swing Crystal Oscillator 0101; Low-frequency Crystal Oscillator 0100; Low-frequency Crystal Oscillator 0011; Internal 128 kHz RC Oscillator 0010; 8MHz Calibrated Internal RC Oscillator; default 0001; Reserved 0000; External Clock The device is shipped with: SUT = 10 CKSEL = 0010 The default clock source setting is therefore the Internal RC Oscillator with longest start-up time. This default setting ensures that all users can make their desired clock source setting using an In-System or Parallel Programming. ***---------------------- Format of Extended Fuse Byte --------------------*** NOTE: For Bits defined below Atmel DataSheet states Default Factory Value are: Extended Fuse Byte=$01; Fuse High Byte=$DF; Fuse Low Byte=$62 *------------------------------------* User RAM Address = 2202 hex *------------------------------------* Fuse Extended Byte, Bit 2,1: BOOTSZ1,BOOTSZ0; Boot Size Configuration: 1024 Words: Z1,Z0 = 00; default : 512 Words: Z1,Z0 = 01 : 256 Words: Z1,Z0 = 10 : 128 Words: Z1,Z0 = 11 Fuse Extended Byte, Bit 0: BOOTRST; Reset Vector: Application Reset($0000) = 1; default : Boot Loader Reset = 0 ***------------------- Format of Lock Bit Byte BLB1 Mode ------------------*** *------------------------------------* User RAM Address = 2203 hex; Bits 1,0 *------------------------------------* Lock Bit Byte: Bit 5,4 BLB 11 & 12 BLB1 Mode: 1 (BLB12,BLB11 = 1,1) : 2 (BLB12,BLB11 = 1,0) : 3 (BLB12,BLB11 = 0,0) : 4 (BLB12,BLB11 = 0,1) ***------------------- Format of Lock Bit Byte BLB0 Mode ------------------*** *------------------------------------* User RAM Address = 2204 hex; Bits 1,0 *------------------------------------* Lock Bit Byte: Bit 3,2 BLB 01 & 02 BLB0 Mode: 1 (BLB02,BLB01 = 1,1) : 2 (BLB02,BLB01 = 1,0) : 3 (BLB02,BLB01 = 0,0) : 4 (BLB02,BLB01 = 0,1) ***----- Format of RC Oscillator Calibration Byte Programming Address -----*** *---------------------------------------* User RAM Address = 2205 hex -> 2208 hex *---------------------------------------* The location in the Programmer's "User RAM" where the Target Address of the Internal RC Oscillator Calibration value is to be stored is: 2205 hex -> 2208 hex EXAMPLE: If the User places the address value "00 00 02 A5" in the User RAM locations "2205 hex -> 2208 hex " then the Internal RC Oscillator Calibration value will be programmed into the device's memory address: 000002A5 hex NOTE: The "Program Configuration" flag MUST be enabled if you are going to program the Oscillator Calibration Byte value into the memory map of the device. If the "Program Configuration" flag is NOT enabled (set to Yes) then the Oscillator Calibration Byte Programming operation is NOT performed. ************************************************************************* *** NOTE: No Calibration value will be stored in User RAM if *** *** User RAM address 2205 hex -> 2208 hex = FFFFFFFF hex *** ************************************************************************* * Below is a re-clarification of the above NOTE! * *-----------------------------------------------------------------------* ** To Disable Oscillator Calibration Byte Programming in either the ** ** data file or in Programmer's User RAM you need to do the following: ** ** *-----------------------------------------------------------------* ** ** ** ** If the address in the programmers' User RAM used to store the ** ** "Internal RC Oscillator Calibration Byte" programming Address has ** ** the following hex data: 'FFFFFFFF' then the programmer will SKIP ** ** writing the Calibration value into the memory map of the device, ** ** regardless of the setting of the "Program Configuration" flag. ** ** ** ** So for a mega88: ** ** User RAM Address 2205 hex -> 2208 hex = 'FFFFFFFF' Equals NO ** ** Oscillator Calibration Byte programming performed! ** ** ** *-----------------------------------------------------------------------* ****************************************************************************** ****************************************************************************** ***------------------------------------------------------------------------*** ATmega128 ------------ ATmega128L ------------ ***----------------------- Programmer Setup Flags -------------------------*** NOTE: LB1 & LB2 are handled by Security Fuse 1 & 2 flags! Program Security fuse 1: Lock Bit 1 Program Security fuse 2: Lock Bit 2 NOTE: Boot Lock Bit's in the Lock Bit Byte are programmed ONLY if Security Fuse 3 flag = Y. Please see "Lock Bit Byte" information below for configuring device for "Boot Lock Byte" programming. Regarding Fuse High Byte and Fuse Low Byte: NOTE: Atmel DataSheet states Default Value from Factory is: Extended Fuse Byte=$FD; Fuse High Byte=$99; Fuse Low Byte=$E1 NOTE: Programmer will read in the default Default Value from Factory as follows: Extended Fuse Byte=$01; Fuse High Byte=$99; Fuse Low Byte=$E1 NOTE: The "Extended Fuse Byte", "Fuse High Byte" and "Fuse Low Byte" are NOT erased. These three bytes are ONLY modified during a programming operation IF the "Program configuration" flag is enabled. UniFam programmers refer to the "Extended Fuse Byte", "Fuse High Byte" and "Fuse Low Byte" data as "Configuration Bytes". To program this data using the Hiterm interface you must enable (set to Yes) the "Program Configuration" flag in Hiterm. If you are using TaskLink interface you must enable the "Special Data #1" flag. To set this flag in TaskLink you must navigate to the following Dialog box: Setup -> Programmer Properties... -> "Special" Dialog tab PROGRAMMING OF THE OSCILLATOR CALIBRATION BYTE INTO THE MEMORY MAP OF THE EITHER THE MAIN FLASH MEMORY ARRAY OR THE EEPROM ARRAY: To enable this feature during a programming operation when using the Hiterm interface you must enable (set to Yes) the "Program Configuration" flag. To enable this feature during a programming operation when using the TaskLink interface you must enable the "Special Data #1" flag. To set this "Special Data #1" flag in TaskLink you must navigate to the following Dialog box: Setup -> Programmer Properties... -> "Special" Dialog tab WARNING: The "Program Configuration" flag enables programming of of the Configuration Bytes (Extended Fuse Byte, Fuse High Byte and Fuse Low Byte) and the programming of the Oscillator Calibration Byte. WARNING: Programming of the Oscillator Calibration Byte will NOT be enabled if the Oscillator Calibration Byte Programming Address is equal to the following hex data: 'FFFFFFFF' See "Internal RC Oscillator Calibration Byte" programming Address below for details. ***---------------------- Format of Fuse High Byte ------------------------*** NOTE: For Bits defined below Atmel DataSheet states Default Factory Value are: Extended Fuse Byte=$01; Fuse High Byte=$99; Fuse Low Byte=$E1 *------------------------------------* User RAM Address = 21000 hex *------------------------------------* Fuse High Byte, Bit 7:OCDEN; Enable OCD: disabled = 1; Default : Enabled = 0 Fuse High Byte, Bit 6: JTAGEN; JTAG support: Enabled = 0; Default : Disabled = 1 Fuse High Byte, Bit 5: SPIEN; SPI Program/Data Downloading: Enable = 0; Default : Disable = 1 Fuse High Byte, Bit 4: CKOPT; Oscillator Options: 1; Default : 0 Fuse High Byte, Bit 3: EESAVE; Erase EEPROM during Chip Erase: Yes = 1; Default : No = 0 Fuse High Byte, Bit 2,1: BOOTS Z1,Z0; Boot Size Configuration: 4096 Words: Z1,Z0 = 00; Default : 2048 Words: Z1,Z0 = 01 : 1024 Words: Z1,Z0 = 10 : 512 Words: Z1,Z0 = 11 Fuse High Byte, Bit 0: BOOTRST; Reset Vector: Application Reset($0000) = 1; Default : Boot Loader Reset = 0 ***---------------------- Format of Fuse Low Byte -------------------------*** NOTE: For Bits defined below Atmel DataSheet states Default Factory Value are: Extended Fuse Byte=$01; Fuse High Byte=$99; Fuse Low Byte=$E1 *------------------------------------* User RAM Address = 21001 hex *------------------------------------* Fuse Low Byte, Bit 7: BODLEVEL; Brown-out Detector trigger level: 1; Default : 0 Fuse Low Byte, Bit 6: BODEN; Brown-out Detector: Disabled = 1; Default : Enable = 0 Fuse Low Byte, Bit 5,4: SUT1,SUT0 Select start-up time Configuration: SUT1,SUT0 = 0,0 : SUT1,SUT0 = 0,1 : SUT1,SUT0 = 1,0; Default : SUT1,SUT0 = 1,1 Fuse Low Byte, Bit 3->0 : Device Clocking Option: CKSEL3..0: 1111; External Crystal/Ceramic Resonator 1110; External Crystal/Ceramic Resonator 1101; External Crystal/Ceramic Resonator 1100; External Crystal/Ceramic Resonator 1011; External Crystal/Ceramic Resonator 1010; External Crystal/Ceramic Resonator 1001; External Low-frequency Crystal 1000; External RC Oscillator 0111; External RC Oscillator 0110; External RC Oscillator 0101; External RC Oscillator 0100; 8MHz Calibrated Internal RC Oscillator 0011; 4MHz Calibrated Internal RC Oscillator 0010; 2MHz Calibrated Internal RC Oscillator 0001; 1MHz Calibrated Internal RC Oscillator; Default 0000; External Clock The device is shipped with: SUT = 10 CKSEL = 0001 The default clock source setting is therefore the Internal RC Oscillator with longest start-up time. This default setting ensures that all users can make their desired clock source setting using an In-System or Parallel Programming. ***---------------------- Format of Extended Fuse Byte --------------------*** NOTE: For Bits defined below Atmel DataSheet states Default Factory Value is: Extended Fuse Byte=$01; Fuse High Byte=$99; Fuse Low Byte=$E1 *------------------------------------* User RAM Address = 21002 hex *------------------------------------* Extended Fuse Byte, Bit 1: M103C Compatibility Fuse: ATmega103 Compatibility Mode = 0; Default : ATmega128 Mode = 1 Extended Fuse Byte, Bit 0 : WDTON; Watchdog Timer: On = 1; Default : Off = 0 ***------------------- Format of Lock Bit Byte BLB1 Mode ------------------*** *------------------------------------* User RAM Address = 21003 hex; Bits 1,0 *------------------------------------* Lock Bit Byte: Bit 5,4 BLB 11 & 12 BLB1 Mode: 1 (BLB12,BLB11 = 1,1) : 2 (BLB12,BLB11 = 1,0) : 3 (BLB12,BLB11 = 0,0) : 4 (BLB12,BLB11 = 0,1) ***------------------- Format of Lock Bit Byte BLB0 Mode ------------------*** *------------------------------------* User RAM Address = 21004 hex; Bits 1,0 *------------------------------------* Lock Bit Byte: Bit 3,2 BLB 01 & 02 BLB0 Mode: 1 (BLB02,BLB01 = 1,1) : 2 (BLB02,BLB01 = 1,0) : 3 (BLB02,BLB01 = 0,0) : 4 (BLB02,BLB01 = 0,1) ***----- Format of RC Oscillator Calibration Byte Programming Address -----*** *-----------------------------------------* User RAM Address = 21005 hex -> 21008 hex *-----------------------------------------* The location in the Programmer's "User RAM" where the Target Address of the Internal RC Oscillator Calibration value is to be stored is: 21005 hex -> 21008 hex EXAMPLE: If the User places the address value "00 00 02 A5" in the User RAM locations "21005 hex -> 21008 hex" then the Internal RC Oscillator Calibration value will be programmed into the device's memory address: 000002A5 hex NOTE: The "Program Configuration" flag MUST be enabled if you are going to program the Oscillator Calibration Byte value into the memory map of the device. If the "Program Configuration" flag is NOT enabled (set to Yes) then the Oscillator Calibration Byte Programming operation is NOT performed. ************************************************************************* *** NOTE: No Calibration value will be stored in User RAM if *** *** User RAM address 21005 hex -> 21008 hex = FFFFFFFF hex *** ************************************************************************* * Below is a re-clarification of the above NOTE! * *-----------------------------------------------------------------------* ** To Disable Oscillator Calibration Byte Programming in either the ** ** data file or in Programmer's User RAM you need to do the following: ** ** *-----------------------------------------------------------------* ** ** ** ** If the address in the programmers' User RAM used to store the ** ** "Internal RC Oscillator Calibration Byte" programming Address has ** ** the following hex data: 'FFFFFFFF' then the programmer will SKIP ** ** writing the Calibration value into the memory map of the device, ** ** regardless of the setting of the "Program Configuration" flag. ** ** ** ** So for a mega128: ** ** User RAM Address 21005 hex -> 21008 hex = 'FFFFFFFF' Equals NO ** ** Oscillator Calibration Byte programming performed! ** ** ** *-----------------------------------------------------------------------* ****************************************************************************** ****************************************************************************** ***------------------------------------------------------------------------*** AT90USB647 ------------ NOTE: Device is shipped from factory in a "PROTECTED" State and MUST be Erased to allow any device operations. ***----------------------- Programmer Setup Flags -------------------------*** NOTE: LB1 & LB2 are handled by Security Fuse 1 & 2 flags! Program Security fuse 1: Lock Bit 1 Program Security fuse 2: Lock Bit 2 NOTE: Boot Lock Bit's in the Lock Bit Byte are programmed ONLY if Security Fuse 3 flag = Y. Please see "Lock Bit Byte" information below for configuring device for "Boot Lock Byte" programming. Regarding Fuse High Byte and Fuse Low Byte: NOTE: Atmel DataSheet states Default Value from Factory is: Extended Fuse Byte=0xF3 Fuse High Byte=0x9B Fuse Low Byte=0x5E NOTE: Programmer will read in the default Default Value from Factory as follows: Extended Fuse Byte=0xF3 Fuse High Byte=0x9B Fuse Low Byte=0x5E NOTE: The "Extended Fuse Byte", "Fuse High Byte" and "Fuse Low Byte" are NOT erased. These three bytes are ONLY modified during a programming operation IF the "Program configuration" flag is enabled. UniFam programmers refer to the "Extended Fuse Byte", "Fuse High Byte" and "Fuse Low Byte" data as "Configuration Bytes". To program this data using the Hiterm interface you must enable (set to Yes) the "Program Configuration" flag in Hiterm. If you are using TaskLink interface you must enable the "Special Data #1" flag. To set this flag in TaskLink you must navigate to the following Dialog box: Setup -> Programmer Properties... -> "Special" Dialog tab ***---------------------- Format of Fuse High Byte ------------------------*** NOTE: For Bits defined below Atmel DataSheet states Default Factory Value are: Extended Fuse Byte=0xF3; Fuse High Byte=0x9B; Fuse Low Byte=0x5E *----------------------------* User RAM Address = 0x10800 hex *----------------------------* Fuse High Byte, Bit 7 :OCDEN; Enable OCD: disabled = 1 : Enabled = 0 Fuse High Byte, Bit 6 : JTAGEN; JTAG support: Enabled = 0 : Disabled = 1 Fuse High Byte, Bit 5 : SPIEN; SPI Program/Data Downloading: Enable = 0 : Disable = 1 Fuse High Byte, Bit 4 : WDTON; Watchdog Timer always on: Disable = 1 : Enable = 0 Fuse High Byte, Bit 3 : EESAVE; Erase EEPROM during Chip Erase: Yes = 1 : No = 0 Fuse High Byte, Bit 2,1: BOOTS Z1,Z0; Boot Size Configuration: 4096 Words: Z1,Z0 = 00 : 2048 Words: Z1,Z0 = 01 : 1024 Words: Z1,Z0 = 10 : 512 Words: Z1,Z0 = 11 Fuse High Byte, Bit 0 : BOOTRST; Reset Vector: Application Reset($0000) = 1 : Boot Loader Reset = 0 ***---------------------- Format of Fuse Low Byte -------------------------*** NOTE: For Bits defined below Atmel DataSheet states Default Factory Value are: Extended Fuse Byte=0xF3; Fuse High Byte=0x9B; Fuse Low Byte=0x5E *----------------------------* User RAM Address = 0x10801 hex *----------------------------* Fuse Low Byte, Bit 7 : CKDIV8; Divide clock by: Enabled = 0 : Disabled = 1 Fuse Low Byte, Bit 6 : CKOUT; system clock on the CLKO pin: Disabled = 1 : Enable = 0 Fuse Low Byte, Bit 5,4 : SUT1,SUT0 Select start-up time Configuration: SUT1,SUT0 = 0,0 : SUT1,SUT0 = 0,1; default : SUT1,SUT0 = 1,0 : SUT1,SUT0 = 1,1 Fuse Low Byte, Bit 3->0 : Device Clocking Option: CKSEL3..0: 1111; Low Power Crystal Oscillator 1110; Low Power Crystal Oscillator; default 1101; Low Power Crystal Oscillator 1100; Low Power Crystal Oscillator 1011; Low Power Crystal Oscillator 1010; Low Power Crystal Oscillator 1001; Low Power Crystal Oscillator 1000; Low Power Crystal Oscillator 0111; Reserved 0110; Reserved 0101; Low Frequency Crystal Oscillator 0100; Low Frequency Crystal Oscillator 0011; Reserved 0010; Calibrated Internal RC Oscillator 0001; Reserved 0000; External Clock The device is shipped with: SUT = 01 CKSEL = 1110 The device is shipped with Low Power Crystal Oscillator (8.0MHz-max) enabled and with the fuse CKDIV8 programmed, resulting in 1.0MHz system clock (with a 8 MHz Crystal). The default fuse configuration is CKSEL = "1110", SUT = "01", CKDIV8 = "0". This default setting ensures that all users can make their desired clock source setting using any available programming interface. ***---------------------- Format of Extended Fuse Byte --------------------*** NOTE: For Bits defined below Atmel DataSheet states Default Factory Value are: Extended Fuse Byte=0xF3; Fuse High Byte=0x9B; Fuse Low Byte=0x5E *----------------------------* User RAM Address = 0x10802 hex *----------------------------* Extended Fuse Byte, Bit 3 : HWBE; Hardware Boot Enable: Off = 0 : On = 1 Extended Fuse Byte, Bit 2,1,0 : BODLEVEL2,BODLEVEL1,BODLEVEL0 = 1,1,1 : BODLEVEL2,BODLEVEL1,BODLEVEL0 = 1,1,0 : BODLEVEL2,BODLEVEL1,BODLEVEL0 = 1,0,1 : BODLEVEL2,BODLEVEL1,BODLEVEL0 = 1,0,0 : BODLEVEL2,BODLEVEL1,BODLEVEL0 = 0,1,1; default : BODLEVEL2,BODLEVEL1,BODLEVEL0 = 0,1,0 : BODLEVEL2,BODLEVEL1,BODLEVEL0 = 0,0,1 : BODLEVEL2,BODLEVEL1,BODLEVEL0 = 0,0,0 ***------------------- Format of Lock Bit Byte BLB1 Mode ------------------*** *------------------------------------* User RAM Address = 10803 hex; Bits 1,0 *------------------------------------* Lock Bit Byte: Bit 5,4 BLB 11 & 12 BLB1 Mode: 1 (BLB12,BLB11 = 1,1) : 2 (BLB12,BLB11 = 1,0) : 3 (BLB12,BLB11 = 0,0) : 4 (BLB12,BLB11 = 0,1) ***------------------- Format of Lock Bit Byte BLB0 Mode ------------------*** *------------------------------------* User RAM Address = 10804 hex; Bits 1,0 *------------------------------------* Lock Bit Byte: Bit 3,2 BLB 01 & 02 BLB0 Mode: 1 (BLB02,BLB01 = 1,1) : 2 (BLB02,BLB01 = 1,0) : 3 (BLB02,BLB01 = 0,0) : 4 (BLB02,BLB01 = 0,1) ****************************************************************************** ****************************************************************************** ****************************************************************************** ******************************************************************************