**************************************************************************** **************************************************************************** ** ** ** Application notes for Atmel Microcontrollers ** ** (Informal Document) ** ** ** ** To find the application notes specfic for your device search for the ** ** 'core' part name. As an example using the AT89C51RD2 44 pin PLCC you ** ** would search on '89C51RD2' ** ** ** **************************************************************************** **************************************************************************** **************************************************************************** 89C51AC2 / 89C51CC01: -------------------- Unisystem RAM mapping: ---------------------- 0x0000- 0x07FFF User Memory (FM0) 0xF000- 0x0F7FF Data Memory (EEPROM)2KB 0xF800- 0x0FFFF Boot Memory 2KB (FM1) 0x10000-0x10004 XA flash mem 0x10005- HSB (1byte) Please refer figure 1 for pictorial representation XAF Details: ----------- Details of XA flash locations and their significance: This memory can be programmed by setting Program Configuration data Option to 'Y' If the chip is erased, this XAF array is filled with the default values Id locations i.e 0030h, 0031h, 0060h, 0061h are filled with a constant data viz. 58h, D7h, F7h, FFh every time the Program XAF operation is selected. Ram Location XAF Address Default data ----------- ----------- ------------ 0x10000 0x0000 0xFF Boot Status Byte 0x10001 0x0001 0xF8 Software Boot Vector 0x10002 0x0004 0xD8 Copy of HSB **Note1 0x10003 0x0006 0xFF Extra Byte 0x10004 none not used **Note1: This location is filled with HSB copy irrespective of what is present in the corresponding Ram location(0x10002). However, while reading, it displays the data that is present in Copy of HSB location. This data is valid only after a read operation. In verification, the contents of the device are compared with the HSB directly. HSB Contents (1byte) - Ram mapping 0x10005 ------------------- This memory can be programmed by setting Program Protect Register Option to 'Y' Here, only bit 6, 7 of the HSB are programmed as per the data in the Ram location 10005. Bit 6, 7 of HSB signify BLJB and X2 respectively. Bits 0, 1, 2 represent Lock bits and are programmed by selecting the options - Program Security bit options to 'Y' The bits 3,4,5 are reserved and are programmed as per their previously stored value. Figure 1: --------- Device mapping: ---------------------- 0Mbit |User memory FM0 | | 0-07FFF hex | | | | | | | |----------------------| 32K |----------------------| | EEPROM | | F000->F7FF hex | | 2K | |----------------------| | FM1- Boot Memory | | F800->FFFF hex | | | | | | | |----------------------| | XA FLASH MEM | (only 4 bytes done) Ram Location XAF Location Default Value 0x10000 0x0000 0xFF Boot Status Byte 0x10001 0x0001 0xF8 Software Boot Vector 0x10002 0x0004 0xD8 Copy of HSB **Note1 0x10003 0x0006 0xFF Extra Byte 0x10004 none 0xFF spare location not used presently |----------------------| | HSB MEM - 1 Byte | 0x10005 7 6 5 4 3 2 1 0 |--------|--------|--------|--------|--------|--------|--------|--------| | | | | | | | | | | X2Bit | BLJB |Reserved|Reserved|Reserved| LB2 | LB1 | LB0 | | | | | | | | | | |--------|--------|--------|--------|--------|--------|--------|--------| ***************************************************************************** 89C51CC03: -------------------- Unisystem RAM mapping: ---------------------- 0x0000 -0x0FFFF User Memory (FM0) 0x10000-0x107FF Data Memory (EEPROM)2KB 0x10800-0x10FFF Boot Memory 2KB (FM1) 0x11000-0x10009 XA flash mem 0x1100A- HSB (1byte) Please refer figure 1 for pictorial representation XAF Details: ----------- Details of XA flash locations and their significance: This memory can be programmed by setting Program Configuration data Option to 'Y' If the chip is erased, this XAF array is filled with the default values Id locations i.e 0030h, 0031h, 0060h, 0061h are filled with a constant data viz. 58h, D7h, FFh, FFh every time the Program XAF operation is selected. Ram Location XAF Address Default data ----------- ----------- ------------ 0x11000 0x0000 0xFF Boot Status Byte 0x11001 0x0001 0xF8 Software Boot Vector 0x11002 0x0005 0xD8 Software security byte 0x11003 0x0006 0xFF Extra Byte 0x11004 0x001C 0xFF CANBT1 0x11005 0x001D 0xFF CANBT2 0x11006 0x001E 0xFF CANBT3 0x11007 0x001F 0xFF NNB 0x11008 0x0020 0xFF CRIS 0x11009 none not used HSB Contents (1byte) - Ram mapping 0x1100A ------------------- This memory can be programmed by setting Program Protect Register Option to 'Y' Here, only bit 6, 7 of the HSB are programmed as per the data in the Ram location 10005. Bit 6, 7 of HSB signify BLJB and X2 respectively. Bits 0, 1, 2 represent Lock bits and are programmed by selecting the options - Program Security bit options to 'Y' The bits 3,4,5 are reserved and are programmed as per their previously stored value. Figure 1: --------- Device mapping: ---------------------- 0 |User memory FM0 | | 0-0FFFF hex | | | | | | | |----------------------| 64K |----------------------| | EEPROM | | 10000->107FF hex | | 2K | |----------------------| | FM1- Boot Memory | | 10800->10FFF hex | | | | | | | |----------------------| | XA FLASH MEM | (only 4 bytes done) Ram Location XAF Location Default Value 0x11000 0x0000 0xFF Boot Status Byte 0x11001 0x0001 0xF8 Software Boot Vector 0x11002 0x0005 0xD8 Software security byte 0x11003 0x0006 0xFF Extra Byte 0x11004 0x001C 0xFF CANBT1 0x11005 0x001D 0xFF CANBT2 0x11006 0x001E 0xFF CANBT3 0x11007 0x001F 0xFF NNB 0x11008 0x0020 0xFF CRIS 0x11009 none not used |----------------------| | HSB MEM - 1 Byte | 0x1100A 7 6 5 4 3 2 1 0 |--------|--------|--------|--------|--------|--------|--------|--------| | | | | | | | | | | X2Bit | BLJB |Reserved|Reserved|Reserved| LB2 | LB1 | LB0 | | | | | | | | | | |--------|--------|--------|--------|--------|--------|--------|--------| ***************************************************************************** AT89C51RD2 ---------- Unisystem RAM mapping: ---------------------- 0x00000-0x0FFFF User Flash Memory 0x10000-0x10003 XA flash mem 0x10004- HSB (1byte) Please refer figure 1 for pictorial representation XAF Details: ----------- Details of XA flash locations and their significance: This memory can be programmed by setting the appropriate data in the required RAM locations as shown below. If the chip is erased, this XAF array is filled with the respective default values. Id locations i.e 0030h, 0031h, 0060h, 0061h are filled with a constant data viz. 58h, D7h, ECh, EFh every time the Program XAF operation is selected. The other XAF locations are Reserved and not accessible to the user. Ram Location XAF Address Default/Erased data ----------- ----------- ------------------ 0x10000 0x0000 0xFF Boot Status Byte (BSB) 0x10001 0x0001 0xFC Software Boot Vector (SBV) 0x10002 0x0004 0xFF Copy of HSB**Note1 0x10003 0x0005 0xFF Software Security Byte (SSB) 0x0030 0x58 Manufacturer Id 0x0031 0xD7 Family Code 0x0060 0xEC ID3 0x0061 0xEF ID4 * The Id. locations are not displayed to the user. **Note1: This location is filled with HSB copy irrespective of what is present in the corresponding Ram location(0x10002). However, while reading, it displays the data that is present in Copy of HSB location. This data is valid only after a read operation.In verification, the contents of the device are compared with the HSB directly. HSB Contents (1byte) - Ram mapping 0x10004 ------------------- HSB byte is programmed with the data in the Ram location 0x10004. Here, only bit 3, 6,7 of the HSB are programmed as per the data in the Ram location 0x10004. Bit 3, 6,7 of HSB signify XRAM,BLJB and X2 respectively. Bits 0, 1, 2 represent Lock bits and are programmed by selecting the options - Program Security bit options to 'Y' The bits 4,5 is reserved and are programmed as per their previously stored value. Bits 0, 1, 2 represent Lock bits and are programmed by selecting the options - Program Security bit options to 'Y' The bits 4 is reserved and are programmed as per their previously stored value. The device has three lock bits (bit0 - bit2 of HSB byte).These bits are programmed to '0' (to secure state) if PROGRAM SECURITY FUSE fields in the Program Memory Device Options screen are set to 'Y'. Unsecured device has security bits set to '1'. To set Lock Bits flag in TaskLink you must navigate to the following Dialog box: Setup -> Programmer Properties... -> "Security" Dialog tab. Program Security fuse 1 : Lock Bit 1 Program Security fuse 2 : Lock Bit 2 Program Security fuse 3 : Lock Bit 3 Program Lock Bits ------------------------ LB1 LB2 LB3 --- --- --- 1 U U U No program lock features 2 P U U Further programming of device memory is disabled 3 P P U Further programming and verify is disabled 4 P P P Further programming, verify and external execution is disabled (U) unprogrammed (P) programmed Figure 1: --------- Device mapping: ---------------------- 0 |User memory FM0 | | 0-0FFFF hex | | | | | | | |----------------------| 64K(10000H) | XA FLASH MEM | (only 4 bytes done) |----------------------| | HSB MEM - 1 Byte | 0x10004 Significance of the bits in HSB: -------------------------------- 7 6 5 4 3 2 1 0 |--------|--------|--------|--------|--------|--------|--------|--------| | | | | | | | | | | X2 | BLJB |Reserved|Reserved|XRAM | LB2 | LB1 | LB0 | | | | | | | | | | |--------|--------|--------|--------|--------|--------|--------|--------| The user has to take care to fill in the appropriate data in the required locations in XAF For more details please refer the device data sheet. ***************************************************************************** AT89C51ED2 -------- Unisystem RAM mapping: ---------------------- 0x00000- 0x0FFFF User Flash Memory 0x10000- 0x107FF Data Memory (EEPROM)2KB 0x10800- 0x10803 XA flash mem 0x10804- HSB (1byte) Please refer figure 1 for pictorial representation XAF Details: ----------- Details of XA flash locations and their significance: This memory can be programmed by setting the appropriate data in the required locations. If the chip is erased, this XAF array is filled with the default values Id locations i.e 0030h, 0031h, 0060h, 0061h are filled with a constant data viz. 58h, D7h, FCh, FFh every time the Program XAF operation is selected. The other XAF locations are Reserved and not accessible to the user. Ram Location XAF Address Default/Erased data ----------- ----------- ------------ 0x10800 0x0000 0xFF Boot Status Byte (BSB) 0x10801 0x0001 0xFF Software Boot Vector (SBV) 0x10802 0x0004 0xFF Copy of HSB**Note1 0x10803 0x0005 0xFF Software Security Byte (SSB) 0x0030 0x58 Manufacturer Id 0x0031 0xD7 Family Code 0x0060 0xEC ID3 0x0061 0xEF ID4 * The Id. locations are not displayed to the user. **Note1: This location is filled with HSB copy irrespective of what is present in the corresponding Ram location(0x10002). However, while reading, it displays the data that is present in Copy of HSB location. This data is valid only after a read operation.In verification, the contents of the device are compared with the HSB directly. HSB Contents (1byte) - Ram mapping 0x10804 ------------------- This memory can be programmed by setting Program Protect Register Option to 'Y' HSB byte is programmed with the data in the Ram location 0x10804. Here, only bit 3, 6,7 of the HSB are programmed as per the data in the Ram location 0x10804. Bit 3, 6,7 of HSB signify XRAM,BLJB and X2 respectively. Bits 0, 1, 2 represent Lock bits and are programmed by selecting the options - Program Security bit options to 'Y' The bits 4,5 is reserved and are programmed as per their previously stored value. Bits 0, 1, 2 represent Lock bits and are programmed by selecting the options - Program Security bit options to 'Y' The bits 4 is reserved and are programmed as per their previously stored value. The device has three lock bits (bit0 - bit2 of HSB byte).These bits are programmed to '0' (to secure state) if PROGRAM SECURITY FUSE fields in the Program Memory Device Options screen are set to 'Y'. Unsecured device has security bits set to '1'. To set Lock Bits flag in TaskLink you must navigate to the following Dialog box: Setup -> Programmer Properties... -> "Security" Dialog tab. Program Security fuse 1 : Lock Bit 1 Program Security fuse 2 : Lock Bit 2 Program Security fuse 3 : Lock Bit 3 Program Lock Bits ------------------------ LB1 LB2 LB3 --- --- --- 1 U U U No program lock features 2 P U U Further programming of device memory is disabled 3 P P U Further programming and verify is disabled 4 P P P Further programming, verify and external execution is disabled (U) unprogrammed (P) programmed Figure 1: --------- Device mapping: ---------------------- 0 |User memory FM0 | | 0-0FFFF hex | | | | | | | |----------------------| 64K | EEPROM | | 10000->107FF hex | | 2K | |----------------------|10800 | XA FLASH MEM | (only 4 bytes done) |----------------------| | HSB MEM - 1 Byte | 0x10804 Significance of the bits in HSB: -------------------------------- 7 6 5 4 3 2 1 0 |--------|--------|--------|--------|--------|--------|--------|--------| | | | | | | | | | | X2 | BLJB |Reserved|Reserved|XRAM | LB2 | LB1 | LB0 | | | | | | | | | | |--------|--------|--------|--------|--------|--------|--------|--------| The user has to take care to fill in the appropriate data in the required locations in XAF For more details please refer the device data sheet. *********************************************************************************** AT89C51ID2 -------- Unisystem RAM mapping: ---------------------- 0x0000 - 0x0FFFF User Flash Memory 0x10000- 0x107FF Data Memory (EEPROM)2KB 0x10800- 0x10803 XA flash mem 0x10804- HSB (1byte) Please refer figure 1 for pictorial representation XAF Details: ----------- Details of XA flash locations and their significance: This memory can be programmed by setting the appropriate data in the required locations. If the chip is erased, this XAF array is filled with the default values Id locations i.e 0030h, 0031h, 0060h, 0061h are filled with a constant data viz. 58h, D7h, FCh, FFh every time the Program XAF operation is selected. The other XAF locations are Reserved and not accessible to the user. Ram Location XAF Address Default/Erased data ----------- ----------- ------------ 0x10800 0x0000 0xFF Boot Status Byte (BSB) 0x10801 0x0001 0xFF Software Boot Vector (SBV) 0x10802 0x0004 0xFF Copy of HSB**Note1 0x10803 0x0005 0xFF Software Security Byte (SSB) 0x0030 0x58 Manufacturer Id 0x0031 0xD7 Family Code 0x0060 0xEC ID3 0x0061 0xEF ID4 * The Id. locations are not displayed to the user. **Note1: This location is filled with HSB copy irrespective of what is present in the corresponding Ram location(0x10002). However, while reading, it displays the data that is present in Copy of HSB location. This data is valid only after a read operation.In verification, the contents of the device are compared with the HSB directly. HSB Contents (1byte) - Ram mapping 0x10804 ------------------- This memory can be programmed by setting Program Protect Register Option to 'Y' HSB byte is programmed with the data in the Ram location 0x10804. Here, only bit 3,5,6,7 of the HSB are programmed as per the data in the Ram location 0x10804. Bit 3,5,6,7 of HSB signify XRAM,OSC,BLJB and X2 respectively. Bits 0, 1, 2 represent Lock bits and are programmed by selecting the options - Program Security bit options to 'Y' The bits 4 is reserved and are programmed as per their previously stored value. Bits 0, 1, 2 represent Lock bits and are programmed by selecting the options - Program Security bit options to 'Y' The bits 4 is reserved and are programmed as per their previously stored value. The device has three lock bits (bit0 - bit2 of HSB byte).These bits are programmed to '0' (to secure state) if PROGRAM SECURITY FUSE fields in the Program Memory Device Options screen are set to 'Y'. Unsecured device has security bits set to '1'. To set Lock Bits flag in TaskLink you must navigate to the following Dialog box: Setup -> Programmer Properties... -> "Security" Dialog tab. Program Security fuse 1 : Lock Bit 1 Program Security fuse 2 : Lock Bit 2 Program Security fuse 3 : Lock Bit 3 Program Lock Bits ------------------------ LB1 LB2 LB3 --- --- --- 1 U U U No program lock features 2 P U U Further programming of device memory is disabled 3 P P U Further programming and verify is disabled 4 P P P Further programming, verify and external execution is disabled (U) unprogrammed (P) programmed Figure 1: --------- Device mapping: ---------------------- 0 |User memory FM0 | | 0-0FFFF hex | | | | | | | |----------------------| 64K | EEPROM | | 10000->107FF hex | | 2K | |----------------------|10800 | XA FLASH MEM | (only 4 bytes done) |----------------------| | HSB MEM - 1 Byte | 0x10804 Significance of the bits in HSB: -------------------------------- 7 6 5 4 3 2 1 0 |--------|--------|--------|--------|--------|--------|--------|--------| | | | | | | | | | | X2 | BLJB |Osc |Reserved|XRAM | LB2 | LB1 | LB0 | | | | | | | | | | |--------|--------|--------|--------|--------|--------|--------|--------| The user has to take care to fill in the appropriate data in the required locations in XAF For more details please refer the device data sheet. ***************************************************************************** 89C5131 -------- Unisystem RAM mapping: ---------------------- 0x0000- 0x07FFF User Memory 0xF000- 0x0F3FF Data Memory (EEPROM)1KB 0xF400- 0x0FFFF Boot Memory 3KB 0x10000-0x10005 XA flash mem 0x10006- HSB (1byte)Hardware byte for chip configuration and security Please refer figure 1 for pictoral representation XAF Details: ----------- Details of XA flash locations and their significance: This memory can be programmed by setting Program Configuration data Option to 'Y' If the chip is erased, this XAF array is filled with the default values Id locations i.e 0030h, 0031h, 0060h, 0061h are filled with a constant data viz. 58h, D7h, F7h, DFh every time the Program XAF operation is selected. Ram Location XAF Address Default data ----------- ----------- ------------ 0x10000 0x0000 0xFF Boot Status Byte (BSB) 0x10001 0x0001 0x3F Software Boot Vector (SBV) 0x10002 0x0002 0xFE P1_CF 0x10003 0x0003 0xFF P3_CF 0x10004 0x0004 0xFF P4_CF 0x10005 0x0005 0xFF Software Security Byte (SSB) HSB Contents (1byte) - Ram mapping 0x10006 Default value 0xFF ------------------- This memory can be programmed by setting Program Protect Register Option to 'Y' Here, only bits 4-7 of the HSB are programmed as per the data in the Ram location 10006. Bit 6, 7 of HSB signify BLJB and X2 respectively. Bits 5-4 are OSCON1 and OSCON0 respectively Oscillator Control Bits These two bits are used to control the oscillator in order to reduce consummation. OSCON1 OSCON0 description is as follows: 1 1 the oscillator is configured to run from 0 to 32 MHz 1 0 the oscillator is configured to run from 0 to 16 MHz 0 1 the oscillator is configured to run from 0 to 8 MHz 0 0 this configuration shouldn’t be set Bits 0, 1, 2 represent Lock bits and are programmed by selecting the options - Program Security bit options to 'Y' The bit 3, is reserved and the value read from this is indeterminate Figure 1: --------- Device mapping: ---------------------- 0 |User memory FM0 | | 0-07FFF hex | | | | | | | |----------------------| 32K |----------------------| | EEPROM - Data Memory | | F000->F3FF hex | | 1K | |----------------------| | FM1- Boot Memory | | F400->FFFF hex | | 3K | |----------------------| | XA FLASH MEM | (only 6 bytes done) Ram Location XAF Location Default Value 0x10000 0x0000 0xFF Boot Status Byte (BSB) 0x10001 0x0001 0x3F Software Boot Vector (SBV) 0x10002 0x0002 0xFE P1_CF 0x10003 0x0003 0xFF P3_CF 0x10004 0x0004 0xFF P4_CF 0x10005 0x0005 0xFF Software Security Byte (SSB) |----------------------| | HSB MEM - 1 Byte | 0x10006 Significance of the bits in HSB: -------------------------------- 7 6 5 4 3 2 1 0 |--------|--------|--------|--------|--------|--------|--------|--------| | | | | | | | | | | X2Bit | BLJB | OSCON1 | OSCON0 |Reserved| LB2 | LB1 | LB0 | | | | | | | | | | |--------|--------|--------|--------|--------|--------|--------|--------| ***************************************************************************** 89S53 ----- Blank devices are unsecured. Unsecured device has security bits set to '1'. Blank devices have the Serial Program feature enabled The device has three lock bits (bit1 - bit3). These bits are programmed to '0' (to secure state) if PROGRAM SECURITY FUSE fields in the Program Memory Device Options screen are set to 'Y'. The secured device cannot be read/verified by the programmer, but the device can be erased. The Serial Program Enable feature is in effect if PROGRAM XNOR DATA field in the Program Memory Device Options screen are set to 'N' (default). The Serial Program Disable feature is in effect if PROGRAM XNOR DATA field in the Program Memory Device Options screen are set to 'Y'. ***************************************************************************** 89S8252 ------- Blank devices are unsecured. Unsecured device has security bits set to '1'. Blank devices have the Serial Program feature enabled The device has three lock bits (bit1 - bit3). These bits are programmed to '0' (to secure state) if PROGRAM SECURITY FUSE fields in the Program Memory Device Options screen are set to 'Y'. The secured device cannot be read/verified by the programmer, but the device can be erased. The Serial Program Enable feature is in effect if PROGRAM XNOR DATA field in the Program Memory Device Options screen are set to 'N' (default). The Serial Program Disable feature is in effect if PROGRAM XNOR DATA field in the Program Memory Device Options screen are set to 'Y'. ***************************************************************************** 89S8253 ------- Blank devices are unsecured and have the Serial Program feature enabled. The device has three lock bits (bit1 - bit3). These bits are programmed to '0' (to secure state) if PROGRAM SECURITY FUSE fields in the Program Memory Device Options screen are set to 'Y'. Unsecured device has security bits set to '1'. To set Lock Bits flag in TaskLink you must navigate to the following Dialog box: Setup -> Programmer Properties... -> "Security" Dialog tab. Program Security fuse 1 : Lock Bit 1 Program Security fuse 2 : Lock Bit 2 Program Security fuse 3 : Lock Bit 3 Program Lock Bits ------------------------ LB1 LB2 LB3 --- --- --- 1 U U U No program lock features 2 P U U Further programming of device memory is disabled 3 P P U Further programming and verify is disabled 4 P P P Further programming, verify and external execution is disabled (U) unprogrammed (P) programmed Unisystem RAM mapping: ---------------------- 0x0000- 0x02FFF Code Memory (12K Bytes) 0x3000- 0x037FF Data Memory (2K Bytes) 0x3800- 0x0383F User Memory (0x040 Bytes) 0x3840 User Fuses (Default Value = 0xFA) To program User Fuses option using the Hiterm or TaskLink interface you must enable (set to Yes) the "Program Protect Register" flag in Hiterm. To set this flag in TaskLink you must navigate to the following Dialog box: Setup -> Programmer Properties... -> "Special" Dialog tab. The significance of the fuses corresponding to memory location 0x03840 is as follows: Fuse1: SerialPrgEn D0 = 0 SerialPrgDis D0 = 1 Fuse2 : x2 ClockEn D1 = 0 x2 ClockDis D1 = 1 Fuse3 : UsrRowPrgEn D2 = 0 UsrRowPrgDis D2 = 1 Fuse4 : Ext.Clk/CrystalEn D3 = 0 Ext.Clk/CrystalDis D3 = 1 7 6 5 4 3 2 1 0 |--------|--------|--------|--------|--------|--------|--------|--------| | | | | | | | | | | | | | | FUSE4 | FUSE3 | FUSE2 | FUSE1 | | | | | | | | | | |--------|--------|--------|--------|--------|--------|--------|--------| (Bit 4 to Bit 7 are not used) ***************************************************************************** AT90S1200 --------- Blank state of flash byte: FF hex Blank state of EEPROM byte: FF hex Default value of RCEN bit is '1' Default value of SPIEN bit is '0' Blank devices are unsecured. Unsecured device has security bits set to '1'. Data in Programmer's User RAM is partitioned as follow: 0000 hex - 03FF hex flash the main array 0400 hex - 043F hex EEPROM array 0440 hex byte with RCEN and SPIEN fuses The fuse distribution in the byte at 0440 hex is as follow: bit 7 bit 6 bit5 bit4 bit 3 bit 2 bit1 bit0 ---------------------------------------------------------------- x x SPIEN x x x x RCEN '0' '1' (default) (default) The fuses RCEN and SPIEN can be reprogrammed. To reprogram RCEN and SPIEN fuses go to the Programmer's User RAM location 440 hex and enter the value of fuses. Bit # 0 corresponds to RCEN fuse and bit #5 corresponds to SPIEN fuse. Also set PROGRAM XNOR DATA field in the Program Memory Device Options screen are set to 'Y'. Without setting PROGRAM XNOR DATA field to 'Y' the fuses will not be programmed(or reprogrammed). The fuses RCEN and SPIEN stay unchanged by the bulk erase. The legal value of the byte at 440 hex in the Programmer's User RAM are : 00 hex ------ RCEN and SPIEN are programmed to '0' 01 hex ------ RCEN is '1' and SPIEN is programmed to '0' (default) 20 hex ------ SPIEN is '1' and RCEN is programmed to '0' 21 hex ------ SPIEN is '1' and RCEN is '1' To find the default value of the blank chip, load the device and check location 0440 in the Programmer's User RAM. If the value is different than 01 hex, the device will not pass the blank check. The data file usually does not have information about the RCEN and SPIEN fuses. Consult your software designer what values should be programmed into RCEN and SPIEN. Mostly it is the default value. The device has two lock bits (LB1 and LB2). On the PROGRAM MEMORY DEVICES the field 'Program security fuse 1' field corresponds to the lock bit LB1 and 'Program security fuse 2' field corresponds to the lock bit LB2. Lock bits are programmed if fields are set to 'Y'. Check if secured device works in the circuit. Reading of the secured device can generate a message "Security fuse programmed or bad device". The security bits can be erased by using the bulk erase feature. During the bulk erase also the flash memory and the EEPROM are erased. Some engineering samples have the device code FF hex, FF hex, FF hex instead of 1E hex, 90 hex and 01 hex. In this case an ID error occurs. You can disable the device code checking by setting the field COMPARE ELEC ID to 'N'. 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. ***************************************************************************** AT90S1200A ---------- Blank state of flash byte: FF hex Blank state of EEPROM byte: FF hex Default value of RCEN bit is '0' Default value of SPIEN bit is '0' Blank devices are unsecured. Unsecured device has security bits set to '1'. Data in Programmer's User RAM is partitioned as follow: 0000 hex - 03FF hex flash the main array 0400 hex - 043F hex EEPROM array 0440 hex byte with RCEN and SPIEN fuses The fuse distribution in the byte at 0440 hex is as follow: bit 7 bit 6 bit5 bit4 bit 3 bit 2 bit1 bit0 ---------------------------------------------------------------- x x SPIEN x x x x RCEN '0' '0' (default) (default) The fuses RCEN and SPIEN can be reprogrammed. To reprogram RCEN and SPIEN fuses go to the Programmer's User RAM location 440 hex and enter the value of fuses. Bit # 0 corresponds to RCEN fuse and bit #5 corresponds to SPIEN fuse. Also set PROGRAM XNOR DATA field in the Program Memory Device Options screen are set to 'Y'. Without setting PROGRAM XNOR DATA field to 'Y' the fuses will not be programmed(or reprogrammed). The fuses RCEN and SPIEN stay unchanged by the bulk erase. The legal value of the byte at 440 hex in the Programmer's User RAM are : 00 hex ------ RCEN and SPIEN are programmed to '0' (default) 01 hex ------ RCEN is '1' and SPIEN is programmed to '0' 20 hex ------ SPIEN is '1' and RCEN is programmed to '0' 21 hex ------ SPIEN is '1' and RCEN is '1' To find the default value of the blank chip, load the device and check location 0440 in the Programmer's User RAM. If the value is different than 01 hex, the device will not pass the blank check. The data file usually does not have information about the RCEN and SPIEN fuses. Consult your software designer what values should be programmed into RCEN and SPIEN. Mostly it is the default value. The device has two lock bits (LB1 and LB2). On the PROGRAM MEMORY DEVICES the field 'Program security fuse 1' field corresponds to the lock bit LB1 and 'Program security fuse 2' field corresponds to the lock bit LB2. Lock bits are programmed if fields are set to 'Y'. Check if secured device works in the circuit. Reading of the secured device can generate a message "Security fuse programmed or bad device". The security bits can be erased by using the bulk erase feature. During the bulk erase also the flash memory and the EEPROM are erased. Some engineering samples have the device code FF hex, FF hex, FF hex instead of 1E hex, 90 hex and 01 hex. In this case an ID error occurs. You can disable the device code checking by setting the field COMPARE ELEC ID to 'N'. 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. ***************************************************************************** AT90S8515 --------- Blank state of flash byte: FF hex Blank state of EEPROM byte: FF hex Default value of FSTRT bit is '1' Default value of SPIEN bit is '0' Some versions of the device can have different default values. Blank devices are unsecured. Unsecured device has security bits set to '1'. Data in Programmer's User RAM is partitioned as follow: 0000 hex - 1FFF hex flash the main array 2000 hex - 21FF hex EEPROM array 2200 hex byte with FSTRT and SPIEN fuses The fuse distribution in the byte at 2200 hex is as follow: bit 7 bit 6 bit5 bit4 bit 3 bit 2 bit1 bit0 ---------------------------------------------------------------- x x SPIEN x x x x FSTRT '0' '1' (default) (default) The fuses FSTRT and SPIEN can be reprogrammed. To reprogram FSTRT and SPIEN fuses go to the Programmer's User RAM location 2200 hex and enter the value of fuses. Bit # 0 corresponds to RCEN fuse and bit #5 corresponds to SPIEN fuse. Also set PROGRAM XNOR DATA field in the Program Memory Device Options screen are set to 'Y'. Without setting PROGRAM XNOR DATA field to 'Y' the fuses will not be programmed(or reprogrammed). The fuses RCEN and SPIEN stay unchanged by the bulk erase. The legal value of the byte at 2200 hex in the Programmer's User RAM are : 00 hex ------ FSTRT and SPIEN are programmed to '0' 01 hex ------ FSTRT is '1' and SPIEN is programmed to '0' (default) 20 hex ------ SPIEN is '1' and FSTRT is programmed to '0' 21 hex ------ SPIEN is '1' and FSTRT is '1' To find the default value of the blank chip, load the device and check location 2200 in the Programmer's User RAM. If the value is different than 01 hex, the device will not pass the blank check. The data file usually does not have information about the FSTRT and SPIEN fuses. Consult your software designer what values should be programmed into FSTRT and SPIEN. Mostly it is the default value. The device has two lock bits (LB1 and LB2). On the PROGRAM MEMORY DEVICES the field 'Program security fuse 1' field corresponds to the lock bit LB1 and 'Program security fuse 2' field corresponds to the lock bit LB2. Lock bits are programmed if fields are set to 'Y'. Check if secured device works in the circuit. Reading of the secured device can generate a message "Security fuse programmed or bad device". The security bits can be erased by using the bulk erase feature. During the bulk erase also the flash memory and the EEPROM are erased. Some engineering samples have the device code FF hex, FF hex, FF hex instead of 1E hex, 93 hex and 01 hex. In this case an ID error occurs. You can disable the device code checking by setting the field COMPARE ELEC ID to 'N'. 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. ***************************************************************************** AT90S4414 --------- Blank state of flash byte: FF hex Blank state of EEPROM byte: FF hex Default value of FSTRT bit is '1' Default value of SPIEN bit is '0' Some versions of the device can have different default values. Blank devices are unsecured. Unsecured device has security bits set to '1'. Data in Programmer's User RAM is partitioned as follow: 0000 hex - 0FFF hex flash the main array 1000 hex - 10FF hex EEPROM array 1100 hex byte with FSTRT and SPIEN fuses The fuse distribution in the byte at 2200 hex is as follow: bit 7 bit 6 bit5 bit4 bit 3 bit 2 bit1 bit0 ---------------------------------------------------------------- x x SPIEN x x x x FSTRT '0' '1' (default) (default) The fuses FSTRT and SPIEN can be reprogrammed. To reprogram FSTRT and SPIEN fuses go to the Programmer's User RAM location 1100 hex and enter the value of fuses. Bit # 0 corresponds to RCEN fuse and bit #5 corresponds to SPIEN fuse. Also set PROGRAM XNOR DATA field in the Program Memory Device Options screen are set to 'Y'. Without setting PROGRAM XNOR DATA field to 'Y' the fuses will not be programmed(or reprogrammed). The fuses RCEN and SPIEN stay unchanged by the bulk erase. The legal value of the byte at 1100 hex in the Programmer's User RAM are : 00 hex ------ FSTRT and SPIEN are programmed to '0' 01 hex ------ FSTRT is '1' and SPIEN is programmed to '0' (default) 20 hex ------ SPIEN is '1' and FSTRT is programmed to '0' 21 hex ------ SPIEN is '1' and FSTRT is '1' To find the default value of the blank chip, load the device and check location 1100 in the Programmer's User RAM. If the value is different than 01 hex, the device will not pass the blank check. The data file usually does not have information about the FSTRT and SPIEN fuses. Consult your software designer what values should be programmed into FSTRT and SPIEN. Mostly it is the default value. The device has two lock bits (LB1 and LB2). On the PROGRAM MEMORY DEVICES the field 'Program security fuse 1' field corresponds to the lock bit LB1 and 'Program security fuse 2' field corresponds to the lock bit LB2. Lock bits are programmed if fields are set to 'Y'. Check if secured device works in the circuit. Reading of the secured device can generate a message "Security fuse programmed or bad device". The security bits can be erased by using the bulk erase feature. During the bulk erase also the flash memory and the EEPROM are erased. Some engineering samples have the device code FF hex, FF hex, FF hex instead of 1E hex, 92 hex and 01 hex. In this case an ID error occurs. You can disable the device code checking by setting the field COMPARE ELEC ID to 'N'. 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. ***************************************************************************** AT90S2333 --------- Blank state of flash byte: FF hex Blank state of EEPROM byte: FF hex Factory default value of fuses is usually DA hex. Some versions of the device can have different default values. Unsecured device has security bits set to '1'. Data in Programmer's User RAM is partitioned as follow: 0000 hex - 07FF hex flash the main array 0800 hex - 083F hex EEPROM array 0840 hex byte with fuses The fuse distribution in the byte at 1100 hex is as follow: bit 7 bit 6 bit5 bit4 bit 3 bit 2 bit1 bit0 ------------------------------------------------------------------ x x SPIEN BODLEVEL BODEN CLKSEL2 CLKSEL1 CLKSEL0 Bits masked as 'x' are unused and should be left unprogrammed ('1). Legal values of the byte with fuses are from C00 hex to FF hex. All fuses can be reprogrammed. To reprogram fuses, go to the Programmer's User RAM location 0840 hex and enter the value for the fuses there. The data files usually does not have information about the fuses. Consult your software designer what values should be programmed into fuses. The device has two lock bits (LB1 and LB2). On the PROGRAM MEMORY DEVICES the field "Program security fuse 1" field corresponds to the lock bit LB1 and "Program security fuse 2" field corresponds to the lock bit LB2. Lock bits are programmed if fields are set to 'Y'. Legal combinations of Lock Bits (security fuses) are: LB1 = security fuse #1 LB2 = security fuse #2 ----------------------- ------------------------ MODE 1 1 (unprogrammed, N) 1 (unprogrammed, N) MODE 2 0 (programmed, Y) 1 (unprogrammed, N) MODE 3 0 (programmed, Y) 0 (programmed, Y) When the device is programmed to MODE 2 locks combination, the device can not be reprogrammed without erasing it. It can be read and verified. When the device is programmed to MODE 3 locks combination, the device can not be reprogrammed without erasing it. It can not be read and verified. When a device with MODE 3 protection is read the data is scrambled. The even bytes in the Flash Memory section contain values of the fuses and the even bytes contain locks values. Check if secured device works in the circuit. Reading of the secured device can generate a message "Security fuse programmed or bad device". The flash memory and the EEPROM can be erased by using the bulk erase feature. During the bulk erase the security bit are set to '1' and the device is unsecured. The fuse bits are also set to '1'. The checksum is calculated by using this formula: CHECKSUM = SUM[0x000 : 0x07FF] + SUM[0x0800 : 0x083F] + FUSE BYTE FUSE BYTE is value of byte at address 0840 hex in the User's RAM (all bits). NOTES: Always enable at least one pass verify when programming. Some engineering samples have the device code FF hex, FF hex, FF hex instead of 1E hex, 91 hex and 05 hex. In this case an ID error occurs. You can disable the device code checking by setting the field COMPARE ELEC ID to 'N'. 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. ***************************************************************************** AT90S4433 --------- Blank state of flash byte: FF hex Blank state of EEPROM byte: FF hex Factory default value of fuses is usually DA hex. Some versions of the device can have different default values. Unsecured device has security bits set to '1'. Data in Programmer's User RAM is partitioned as follow: 0000 hex - 0FFF hex flash the main array 1000 hex - 10FF hex EEPROM array 1100 hex byte with fuses The fuse distribution in the byte at 1100 hex is as follow: bit 7 bit 6 bit5 bit4 bit 3 bit 2 bit1 bit0 ------------------------------------------------------------------ x x SPIEN BODLEVEL BODEN CLKSEL2 CLKSEL1 CLKSEL0 Bits masked as 'x' are unused and should be left unprogrammed ('1). Legal values of the byte with fuses are from C00 hex to FF hex. All fuses can be reprogrammed. To reprogram fuses, go to the Programmer's User RAM location 1100 hex and enter the value for the fuses there. The data files usually does not have information about the fuses. Consult your software designer what values should be programmed into fuses. The device has two lock bits (LB1 and LB2). On the PROGRAM MEMORY DEVICES the field "Program security fuse 1" field corresponds to the lock bit LB1 and "Program security fuse 2" field corresponds to the lock bit LB2. Lock bits are programmed if fields are set to 'Y'. Legal combinations of Lock Bits (security fuses) are: LB1 = security fuse #1 LB2 = security fuse #2 ----------------------- ------------------------ MODE 1 1 (unprogrammed, N) 1 (unprogrammed, N) MODE 2 0 (programmed, Y) 1 (unprogrammed, N) MODE 3 0 (programmed, Y) 0 (programmed, Y) When the device is programmed to MODE 2 locks combination, the device can not be reprogrammed without erasing it. It can be read and verified. When the device is programmed to MODE 3 locks combination, the device can not be reprogrammed without erasing it. It can not be read and verified. When a device with MODE 3 protection is read the data is scrambled. The even bytes in the Flash Memory section contain values of the fuses and the even bytes contain locks values. Check if secured device works in the circuit. Reading of the secured device can generate a message "Security fuse programmed or bad device". The flash memory and the EEPROM can be erased by using the bulk erase feature. During the bulk erase the security bit are set to '1' and the device is unsecured. The fuse bits are also set to '1'. The checksum is calculated by using this formula: CHECKSUM = SUM[0x000 : 0x0FFF] + SUM[0x1000 : 0x10FF] + FUSE BYTE FUSE BYTE is value of byte at address 1100 hex in the User's RAM (all bits). NOTES: Always enable at least one pass verify when programming. Some engineering samples have the device code FF hex, FF hex, FF hex instead of 1E hex, 92 hex and 03 hex. In this case an ID error occurs. You can disable the device code checking by setting the field COMPARE ELEC ID to 'N'. 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. ***************************************************************************** AT90S2313 ------------------------------- Blank state of flash byte: FF hex Blank state of EEPROM byte: FF hex Default value of FSTRT bit is '1' Default value of SPIEN bit is '0' Some versions of the device can have different default values. Blank devices are unsecured. Unsecured device has security bits set to '1'. Data in Programmer's User RAM is partitioned as follow: 0000 hex - 07FF hex flash the main array 0800 hex - 087F hex EEPROM array 0880 hex byte with FSTRT and SPIEN fuses The fuse distribution in the byte at 0880 hex is as follow: bit 7 bit 6 bit5 bit4 bit 3 bit 2 bit1 bit0 ---------------------------------------------------------------- x x SPIEN x x x x FSTRT '0' '1' (default) (default) The fuses FSTRT and SPIEN can be reprogrammed. To reprogram FSTRT and SPIEN fuses go to the Programmer's User RAM location 880 hex and enter the value of fuses. Bit # 0 corresponds to FSTRT fuse and bit #5 corresponds to SPIEN fuse. Also set PROGRAM XNOR DATA field in the Program Memory Device Options screen are set to 'Y'. Without setting PROGRAM XNOR DATA field to 'Y' the fuses will not be programmed(or reprogrammed). The fuses RCEN and SPIEN stay unchanged by the bulk erase. The legal value of the byte at 880 hex in the Programmer's User RAM are : 00 hex ------ FSTRT and SPIEN are programmed to '0' 01 hex ------ FSTRT is '1' and SPIEN is programmed to '0' (default) 20 hex ------ SPIEN is '1' and FSTRT is programmed to '0' 21 hex ------ SPIEN is '1' and FSTRT is '1' To find the default value of the blank chip, load the device and check location 0880 in the Programmer's User RAM. If the value is different than 01 hex, the device will not pass the blank check. The data file usually does not have information about the RCEN and SPIEN fuses. Consult your software designer what values should be programmed into FSTRT and SPIEN. Mostly it is the default value. The device has two lock bits (LB1 and LB2). On the PROGRAM MEMORY DEVICES the field 'Program security fuse 1' field corresponds to the lock bit LB1 and 'Program security fuse 2' field corresponds to the lock bit LB2. Lock bits are programmed if fields are set to 'Y'. Check if secured device works in the circuit. Reading of the secured device can generate a message "Security fuse programmed or bad device". The security bits can be erased by using the bulk erase feature. During the bulk erase also the flash memory and the EEPROM are erased. Some engineering samples have the device code FF hex, FF hex, FF hex instead of 1E hex, 91 hex and 01 hex. In this case an ID error occurs. You can disable the device code checking by setting the field COMPARE ELEC ID to 'N'. NOTE: Always enable at least one pass verify when programming. NOTE: On early engineering samples the signature bytes are erased when the chip is erased for the first time. Also problem with the lock bit erase. 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. ***************************************************************************** AT90S2323/AT90LS2323 -------------------- AT90S2343/AT90LS2343 -------------------- Blank state of flash byte: FF hex Blank state of EEPROM byte: FF hex Default value of RCEN bit is '1' Default value of SPIEN bit is '0' Some versions of the device can have different default values. The byte at 0880 hex is not added to the final Sumcheck. Blank devices are unsecured. Unsecured device has security bits set to '1'. Data in Programmer's User RAM is partitioned as follow: 0000 hex - 07FF hex flash the main array 0800 hex - 087F hex EEPROM array 0880 hex byte with RCEN and SPIEN fuses The fuse distribution in the byte at 0880 hex is as follow: bit 7 bit 6 bit5 bit4 bit 3 bit 2 bit1 bit0 ---------------------------------------------------------------- x x SPIEN x x x x RCEN '0' '1' (default) (default) When SPIEN is '0' (factory default), the Serial Downloadind is enabled. When RCEN is '0', the internal RC oscilator is selected as the MCU clock source. Bulk Erase operation on the device erases main arrays and sets SPIEN and RCEN to the factory default. The fuses RCEN and SPIEN can be reprogrammed. To reprogram RCEN and SPIEN fuses go to the Programmer's User RAM location 880 hex and enter the value of fuses. Bit # 0 corresponds to RCEN fuse and bit #5 corresponds to SPIEN fuse. Also set PROGRAM XNOR DATA field in the Program Memory Device Options screen are set to 'Y'. Without setting PROGRAM XNOR DATA field to 'Y' the fuses will not be programmed(or reprogrammed). The legal value of the byte at 880 hex in the Programmer's User RAM are : 00 hex ------ RCEN and SPIEN are programmed to '0' 01 hex ------ RCEN is '1' and SPIEN is programmed to '0' (default) 20 hex ------ SPIEN is '1' and RCEN is programmed to '0' 21 hex ------ SPIEN is '1' and RCEN is '1' To find the default value of the blank chip, load the device and check location 0880 in the Programmer's User RAM. If the value is different than 01 hex, the device will not pass the blank check. The data file usually does not have information about the RCEN and SPIEN fuses. Consult your software designer what values should be programmed into RCEN and SPIEN. Mostly it is the default value. The device has two lock bits (LB1 and LB2). On the PROGRAM MEMORY DEVICES the field 'Program security fuse 1' field corresponds to the lock bit LB1 and 'Program security fuse 2' field corresponds to the lock bit LB2. Lock bits are programmed if fields are set to 'Y'. Check if secured device works in the circuit. Reading of the secured device can generate a message "Security fuse programmed or bad device". The security bits can be erased by using the bulk erase feature. During the bulk erase also the flash memory and the EEPROM are erased. Some engineering samples have the device code FF hex, FF hex, FF hex instead of 1E hex, 91 hex and 02 hex. In this case an ID error occurs. You can disable the device code checking by setting the field COMPARE ELEC ID to 'N'. 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. ***************************************************************************** AT90S8535 --------- Blank state of flash byte: FF hex Blank state of EEPROM byte: FF hex Default value of FSTRT bit is '1' Default value of SPIEN bit is '0' Some versions of the device can have different default values. Blank devices are unsecured. Unsecured device has security bits set to '1'. Data in Programmer's User RAM is partitioned as follow: 0000 hex - 1FFF hex flash the main array 2000 hex - 21FF hex EEPROM array 2200 hex byte with FSTRT and SPIEN fuses The fuse distribution in the byte at 2200 hex is as follow: bit 7 bit 6 bit5 bit4 bit 3 bit 2 bit1 bit0 ---------------------------------------------------------------- x x SPIEN x x x x FSTRT '0' '1' (default) (default) The fuses FSTRT and SPIEN can be reprogrammed. To reprogram FSTRT and SPIEN fuses go to the Programmer's User RAM location 2200 hex and enter the value of fuses. Bit # 0 corresponds to RCEN fuse and bit #5 corresponds to SPIEN fuse. Also set PROGRAM XNOR DATA field in the Program Memory Device Options screen are set to 'Y'. Without setting PROGRAM XNOR DATA field to 'Y' the fuses will not be programmed(or reprogrammed). The fuses RCEN and SPIEN stay unchanged by the bulk erase. The legal value of the byte at 2200 hex in the Programmer's User RAM are : 00 hex ------ FSTRT and SPIEN are programmed to '0' 01 hex ------ FSTRT is '1' and SPIEN is programmed to '0' (default) 20 hex ------ SPIEN is '1' and FSTRT is programmed to '0' 21 hex ------ SPIEN is '1' and FSTRT is '1' To find the default value of the blank chip, load the device and check location 2200 in the Programmer's User RAM. If the value is different than 01 hex, the device will not pass the blank check. The data file usually does not have information about the FSTRT and SPIEN fuses. Consult your software designer what values should be programmed into FSTRT and SPIEN. Mostly it is the default value. The device has two lock bits (LB1 and LB2). On the PROGRAM MEMORY DEVICES the field 'Program security fuse 1' field corresponds to the lock bit LB1 and 'Program security fuse 2' field corresponds to the lock bit LB2. Lock bits are programmed if fields are set to 'Y'. Check if secured device works in the circuit. Reading of the secured device can generate a message "Security fuse programmed or bad device". The security bits can be erased by using the bulk erase feature. During the bulk erase also the flash memory and the EEPROM are erased. Some engineering samples have the device code FF hex, FF hex, FF hex instead of 1E hex, 93 hex and 01 hex. In this case an ID error occurs. You can disable the device code checking by setting the field COMPARE ELEC ID to 'N'. 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/12V/12L ----------------- NOTE : The following configuration/support information in this document applies to Software Versions up through V7.9. For the latest programming support information please refer to the following application note:atm_avr.txt Blank state of flash byte: FF hex Blank state of EEPROM byte: FF hex Data in Programmer's User RAM is partitioned as follow: 0000 hex - 03FF hex Flash memory 0400 hex - 043F hex EEPROM array 0440 hex Fuses byte 0441 hex Lock bits fuses 0442 hex User's high byte address for Calibration byte location 0443 hex User's low byte address for Calibration byte location 0444 hex Calibration byte read from the device (not from flash). 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 All fuses can be reprogrammed. These fuses stay unchanged by the bulk erase. The fuse distribution in the byte at 4202 hex is as follow: bit 7 bit 6 bit5 bit4 bit 3 bit 2 bit1 bit0 ------------------------------------------------------------------- x x x x x LB2 LB1 x Bits masked as 'x' are unused and should be left un programmed ('1). These fuses are bulk erasable. 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 normal Flash Program memory. At startup, the user software must read this Flash location and write the value to the OSCCAL register." 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 Security Fuse 1" flag has been enabled. During programming operation the algorithm looks to location 0442 hex and 0443 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. The location 0444 hex in the Programmer's User RAM contains the Calibration byte read from the device's fuse area (not from flash memory). This byte is only for the user information and it is not included in the checksum calculation. For an information, the user can compare the value at this address to the Calibration byte programmed into the flash memory. In the programmer's PROGRAM MEMORY DEVICE screen the user can enable the Calibration Byte programming and lock bits LB1/LB2 programming. The user can also select adding the user's Calibration Byte address (locations 0442/0443 hex in the Programmer's User RAM) to the final checksum. The selection fields in the PROGRAM MEMORY DEVICE screen are: 1. Program Security Fuse 1 = Y/N Setting the Y/N field to 'Y' will program the Calibration byte read from the device to the flash memory address found in the Programmer's User RAM at locations 0442 hex and 0443 hex. Example: In order to program the Calibration byte to the flash memory location 0134 hex,the Programmer's User RAM location 0442 hex should have value 01 hex and the location 0443 hex should contain 34 hex. Do not forget to set 'Program Security Fuse 1' flag to 'Y'. 2. Program Security Fuse 2 = Y/N Setting the Y/N field to 'Y' will program lock bits LB1 and LB2 into the device with values found in the Programmer's User RAM at the location 0441 hex. When the selection is set to 'N', bits LB1 and LB2 will not be programmed and the device will not be protected. When the device is secured with fuses LB1 and LB2 programmed to '0', the flash memory and EEPROM reads as 00 hex. Fuse bytes are not scrambled.Check if secured device works in the circuit. 3. Program XNOR Data = Y/N Setting the Y/N field to 'Y' will include the user's Calibration Byte address (locations 0442/0443 hex in the Programmer's User RAM) to the final checksum The checksum is calculated by using this formula: 1.The user's Calibration Byte address is included in the checksum. CHECKSUM = SUM[0x0000 : 0x043F] + Fuses + + Lock bits fuses byte + SUM[0x0442 : 0x0443] 2.The user's Calibration Byte address is not included in the checksum. CHECKSUM = SUM[0x0000 : 0x043F] + Fuses byte + Lock bits fuses byte NOTE: The Calibration Byte can be different for every device and for this reason the flash memory location where the Calibration byte is programmed is excluded from the device checksum calculation. The user's data file checksum and the programmed device checksum should be the same. In order to achieve this, the user should set in the data file the location where he Calibration byte is to be programmed to 00 hex. Setting that location to 00h will exclude that location from the checksum calculation 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/15L ------------ NOTE : The following configuration/support information in this document applies to Software Versions up through V7.9. For the latest programming support information please refer to the following application note:atm_avr.txt Blank state of flash byte: FF hex Blank state of EEPROM byte: FF hex Data in Programmer's User RAM is partitioned as follow: 0000 hex - 03FF hex Flash memory 0400 hex - 043F hex EEPROM array 0440 hex Fuses byte 0441 hex Lock bits fuses 0442 hex User's high byte address for Calibration byte location 0443 hex User's low byte address for Calibration byte location 0444 hex Calibration byte read from the device (not from flash). 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 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. The fuse distribution in the byte at 4202 hex is as follow: bit 7 bit 6 bit5 bit4 bit 3 bit 2 bit1 bit0 ------------------------------------------------------------------- x x x x x LB1 LB1 x Bits masked as 'x' are unused and should be left un programmed ('1). These fuses are bulk erasable. 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 Security Fuse 1" flag has been enabled. During programming operation the algorithm looks to location 0442 hex and 0443 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. The location 0444 hex in the Programmer's User RAM contains the Calibration byte read from the device's fuse area (not from flash memory). This byte is only for the user information and it is not included in the checksum calculation. For an information, the user can compare the value at this address to the Calibration byte programmed into the flash memory. In the programmer's PROGRAM MEMORY DEVICE screen the user can enable the Calibration Byte programming and lock bits LB1/LB2 programming. The user can also select adding the user's Calibration Byte address (locations 0442/0443 hex in the Programmer's User RAM) to the final checksum. The selection fields in the PROGRAM MEMORY DEVICE screen are: 1. Program Security Fuse 1 = Y/N Setting the Y/N field to 'Y' will program the Calibration byte read from the device to the flash memory address found in the Programmer's User RAM at locations 0442 hex and 0443 hex. Example: In order to program the Calibration byte to the flash memory location 0134 hex, the Programmer's User RAM location 0442 hex should have value 01 hex and the location 0443 hex should contain 34 hex. Do not forget to set 'Program Security Fuse 1' flag to 'Y'. 2. Program Security Fuse 2 = Y/N Setting the Y/N field to 'Y' will program lock bits LB1 and LB2 into the device with values found in the Programmer's User RAM at the location 0441 hex. When the selection is set to 'N', bits LB1 and LB2 will not be programmed and the device will not be protected. When the device is secured with fuses LB1 and LB2 programmed to '0', the flash memory and EEPROM reads as 00 hex. Fuse bytes are not scrambled. Check if secured device works in the circuit. 3. Program XNOR Data = Y/N Setting the Y/N field to 'Y' will include the user's Calibration Byte address (locations 0442/0443 hex in the Programmer's User RAM) to the final checksum The checksum is calculated by using this formula: 1.The user's Calibration Byte address is included in the checksum. CHECKSUM = SUM[0x0000 : 0x043F] + Fuses + + Lock bits fuses byte + SUM[0x0442 : 0x0443] 2.The user's Calibration Byte address is not included in the checksum. CHECKSUM = SUM[0x0000 : 0x043F] + Fuses byte + Lock bits fuses byte NOTE: The Calibration Byte can be different for every device and for this reason the flash memory location where the Calibration byte is programmed is excluded from the device checksum calculation. The the user's data file checksum and the programmed device checksum should be the same. In order to achieve this, the user should set in the data file the location where he Calibration byte is to be programmed to 00 hex. Setting that location to 00h will exclude that location from the checksum calculation 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. ***************************************************************************** ATmega163 --------- ATmega163L ---------- Blank state of flash byte: FF hex Blank state of EEPROM byte: FF hex Data in Programmer's User RAM is partitioned as follow: 0000 hex - 3FFF hex Flash memory 4000 hex - 41FF hex EEPROM array 4200 hex Fuses low byte 4201 hex Fuses high byte 4202 hex Lock bits fuses 4203 hex User's high byte address for Calibration byte location 4204 hex User's low byte address for Calibration byte location 4205 hex Calibration byte read from the device (not from flash). The fuse distribution in the byte at 4200 hex is as follow: bit 7 bit 6 bit5 bit4 bit 3 bit 2 bit1 bit0 ------------------------------------------------------------------- BODLEVEL BODEN SPIEN x CLKSEL3 CLKSEL2 CLKSEL1 CLKSEL1 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. The fuse distribution in the byte at 4201 hex is as follow: bit 7 bit 6 bit5 bit4 bit 3 bit 2 bit1 bit0 ------------------------------------------------------------------- x x x x x BOOTSZ1 BOOTSZ1 BOOTRST 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. The fuse distribution in the byte at 4202 hex is as follow: bit 7 bit 6 bit5 bit4 bit 3 bit 2 bit1 bit0 ------------------------------------------------------------------- x x BLB12 BLB11 BLB02 BLB01 LB2 LB1 Bits masked as 'x' are unused and should be left un programmed ('1). These fuses are bulk erasable. The following is an excerpt regarding the Calibration Byte from the Atmel data sheet: "The ATmega163 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 normal Flash program memory by the external programmer." Data I/O's support of the "one byte calibration value" for the ATmega163 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 Security Fuse 1" flag has been enabled. During programming operation the algorithm looks to location 4203 hex and 4204 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 3FFF hex. The location 4205 hex in the Programmer's User RAM contains the Calibration byte read from the device's fuse area (not from flash memory). This byte is only for the user information and it is not included in the checksum calculation. For an information, the user can compare the value at this address to the Calibration byte programmed into the flash memory. In the programmer's PROGRAM MEMORY DEVICE screen the user can enable the Calibration Byte programming and lock bits LB1/LB2 programming. The user can also select adding the user's Calibration Byte address (locations 4203/4204 hex in the Programmer's User RAM) to the final checksum. The selection fields in the PROGRAM MEMORY DEVICE screen are: 1. Program Security Fuse 1 = Y/N Setting the Y/N field to 'Y' will program the Calibration byte read from the device to the flash memory address found in the Programmer's User RAM at locations 4203 hex and 4204 hex. Example: In order to program the Calibration byte to the flash memory location 1034 hex, the Programmer's User RAM location 4203 hex should have value 10 hex and the location 4204 hex should contain 34 hex. Do not forget to set 'Program Security Fuse 1' flag to 'Y'. 2. Program Security Fuse 2 = Y/N Setting the Y/N field to 'Y' will program lock bits LB1 and LB2 into the device with values found in the Programmer's User RAM at the location 4202 hex. When the selection is set to 'N', bits LB1 and LB2 will not be programmed and the device will not be protected. When the device is secured with fuses LB1 and LB2 programmed to '0', the flash memory and EEPROM reads as FF hex. Fuse bytes are not scrambled. Check if secured device works in the circuit. 3. Program XNOR Data = Y/N Setting the Y/N field to 'Y' will include the user's Calibration Byte address (locations 4203/4204 hex in the Programmer's User RAM) to the final checksum The checksum is calculated by using this formula: 1.The user's Calibration Byte address is included in the checksum. CHECKSUM = SUM[0x0000 : 0x41FF] + Fuses low byte + Fuses high byte + + Lock bits fuses byte + SUM[0x4203 : 0x4204] + + address of Calibration byte in flash section 2.The user's Calibration Byte address is not included in the checksum. CHECKSUM = SUM[0x0000 : 0x41FF] + Fuses low byte + Fuses high byte + + Lock bits fuses byte - - address of Calibration byte in flash section NOTE: The Calibration Byte can be different for every device and for this reason the flash memory location where the Calibration byte is programmed is excluded from the device checksum calculation. The the user's data file checksum and the programmed device checksum should be the same. In order to achieve this, the user should set in the data file the location where he Calibration byte is to be programmed to 00 hex. Setting that location to 00h will exclude that location from the checksum calculation NOTE: Always enable at least one pass verify when programming. It is recommended to have "ERASE EE DEVICE" on the programing screen enabled during the device 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. ***************************************************************************** ATmega103 / ATmega103L ---------------------- Blank state of flash byte: FF hex Blank state of EEPROM byte: FF hex Factory default for the fuses byte: DFh (SPIEN bit is '0') Some versions of the device can have different default values. Blank devices are unsecured. Unsecured device has security bits set to '1'. Data in Programmer's User RAM is partitioned as follow: 00000 hex - 1FFFF hex flash the main array 20000 hex - 20FFF hex EEPROM array 21000 hex byte with SPIEN, EESAVE and SUT fuses 21001 hex byte with lock bits (LB1 and LB2) The fuses distribution in the byte at 21000 hex is as follow: bit 7 bit 6 bit5 bit4 bit 3 bit 2 bit1 bit0 ---------------------------------------------------------------- x x SPIEN x EESAVE x SUT1 SUT0 '0' '1' (default) (default) Bits marked as 'x' are unused ( unimplemented) and should be left unprogrammed ('1'). Make sure that these bits are set to '1's in the datafile you are using for the programming. The fuses byte can be reprogrammed and the byte is not erasable. After the bulk erase, the value of the fuses byte stay unchanged. The data files usually does not have information about the fuses. Consult your software designer what values should be programmed into fuses. To reprogram SPIEN and other fuses go to the Programmer's User RAM location 21000 hex and enter the desired fuses value there. To find the default value of the fuses byte in the blank chip, load the device and check the location 21000 in the Programmer's User RAM. The data file usually does not have information about the SPIEN and other fuses. Consult your software designer what values should be programmed into the fuses. Mostly it is the default value. The device has two lock bits (LB1 and LB2). On the PROGRAM MEMORY DEVICES the field 'Program security fuse 1' field corresponds to the lock bit LB1 and 'Program security fuse 2' field corresponds to the lock bit LB2. Lock bits are programmed if fields are set to 'Y'. Check if secured device works in the circuit. To program only LB2 bit is not a valid combination. To see what value is programmed into LB1 and LB2, load the device and check the location at address 21001 hex in the Programmer's User RAM. The checksum is calculated by using this formula: CHECKSUM = SUM[0x00000 : 0x1FFFF] + SUM[0x20000 : 0x20FFF] + FUSE BYTE FUSE BYTE is value of byte at address 21000 hex in the User's RAM (all bits). Some engineering samples have the device code FF hex, FF hex, FF hex instead of 1E hex, 97 hex and 01 hex. In this case an ID error occurs. You can disable the device code checking by setting the field COMPARE ELEC ID to 'N'. 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. ***************************************************************************** AT89C51RE2 ---------- Unisystem RAM mapping: ---------------------- 0x00000-0x0FFFF User Flash Memory Bank 1 (FM0) 0x10000-0x1FFFF User Flash Memory Bank 2 (FM1) 0x20000- FCB Fuse Configaration byte (1byte) Please refer figure 1 for pictorial representation FCB Contents (1byte) - Ram mapping 0x20000 ------------------- FCB byte is programmed with the data in the Ram location 0x20000. Bit 7 of FCB signify X2 Bit. Bits 0, 1, 2 represent Boot Reset Vector Bits . The device has three lock bits (bit0 - bit2 of HSB byte).These bits are programmed to '0' (to secure state) if PROGRAM SECURITY FUSE fields in the Program Memory Device Options screen are set to 'Y'. Unsecured device has security bits set to '1'. To set Lock Bits flag in TaskLink you must navigate to the following Dialog box: Setup -> Programmer Properties... -> "Security" Dialog tab. Program Security fuse 1 : Lock Bit 1 Program Security fuse 2 : Lock Bit 2 Program Security fuse 3 : Lock Bit 3 Program Lock Bits ------------------------ LB1 LB2 LB3 --- --- --- 1 U U U No program lock features 2 P U U Further programming of device memory is disabled 3 P P U Further programming and verify is disabled 4 P P P Further programming, verify and external execution is disabled (U) unprogrammed (P) programmed Figure 1: --------- Device mapping: ---------------------- 0 |User memory FM0 | | 0-0FFFF hex | | | | | | | |----------------------| 64K(0FFFFH) |User memory FM1 | | 10000-1FFFF hex | | | | | | | |----------------------| 64K(1FFFFH) | FCB - 1 Byte | | 0x20000 | |----------------------| Significance of the bits in FCB: -------------------------------- 7 6 5 4 3 2 1 0 |--------|--------|--------|--------|--------|--------|--------|--------| | | | | | | | | | | X2 |Reserved|Reserved|Reserved|Reserved| BRV2 | BRV1 | BRV0 | | | | | | | | | | |--------|--------|--------|--------|--------|--------|--------|--------| The user has to take care to fill in the appropriate data in the required locations in FCB For more details please refer the device data sheet. ****************************************************************************** ******************************************************************************