/*--- Device Properties ---*/
#include "avrpp.h"
/* Info previously in fuse.txt */
const char*const FuseNames[]={
0,
"RSTDISBL [Normal RESET pin|Disable RESET]", //1
"SPIEN [Disable|Enable] ISP", //2 // Extra text: *Available only in parallel/HVS mode
"EESAVE [Erase|Retain] EEPROM at chip erase", //3 // wichtig fⁿr's ▄berschreiben des EEPROMs
"FSTRT [Slow|Fast] start", //4
"SUT Startup time", //5 // Extra Fuse calculator (TODO)
"RCEN [External|Internal] CLK", //6
"CKSEL Clock source", //7 // Extra Fuse calculator (TODO)
"WDTON Watchdog Timer [controlled by firmware|always on]", //8
"CKOUT [no clock-out|CLKO overrides port function]", //9
"BODEN [Disable|Enable] Brown-Out Detector", //10
"BODLEVEL [disabled|1.8 V|2.7 V|4.3 V]", //11
"BODLEVEL [1.8 V|2.7 V]", //12
"BODLEVEL [2.7 V|4.0 V]", //13
"BODLEVEL [disabled|1.8 V|2.7 V|4.3 V|2.7 V]", //14
"CKOPT [Disabled|Enabled]", //15
"CKDIV8 Clock division ratio [1/1|1/8]", //16
"DWEN On-Chip Debugging via RESET pin [Disable|Enable]", //17
"SELFPRGEN SPM instruction [Disable|Enable]", //18 // same as SPMEN
"BODACT BOD mode in active/idle state", //19
"BODPD BOD mode in powerdown state", //20
"BOOTRST Reset jumps to [Address 0|Boot Area]", //21
"BOOTSZ Boot Area Size", //22
"PLLCK Activate High-Speed PLL", //23
"INTCAP [Disable|Enable] CAP", //24
"JTAGEN [Disable|Enable] JTAG", //25
"OCDEN On chip debugging [Disable|Enable]", //26
"M161C [Native|ATmega161 compatible] mode", //27
"S85x5C [Native|90S compatible] mode", //28
"M103C [Native|ATmega603/103 compatible] mode", //29
"TA0SEL (Must be 1)", //30
"BODLEVEL [Off|4.1 V|4 V|3.9 V|3.8 V|2.7 V|2.6 V|2.5 V]", //31 // for AT90CAN...
"BODLEVEL [Off|4.5 V|2.7 V|4.3 V|4.4 V|4.2 V|2.8 V|2.6 V]", //32 // for AT90PWM...
"PSCRV PSCOUT Reset Value", //33
"PSCRB PSCn Reset Behaviour", //34
"CKSEL Clock Source [Crystal >8 MHz|Ceramic >8 MHz|Crystal 3..8 MHz|Ceramic 3..8 MHz|Crystal 0.9..3 MHz|Ceramic 0.9..3 MHz|Crystal 0.4..0.9 MHz|Ceramic 0.4..0.9 MHz|reserved|Crystal 32768 Hz|reserved|Internal 128 kHz|Internal 1.6 MHz ATtiny15 compatible|Internal 8 MHz|Internal PLL 16 MHz|External]", //35
"BOOTSZ Boot Area Size [0.25|0.5|1|2] KByte", //36
"BOOTSZ Boot Area Size [0.5|1|2|4] KByte", //37
"HWBE Reset && PE2=Low jumps to [address 0|boot area]", //38
"CFD Clock Failure Detection [Enable|Disable]", //39 // for ATmega328PB
};
enum{
AT90S1200,
AT90S2313,
AT90S4434,
AT90S2333,
AT90S2323,
AT90S2343,
ATtiny4,
ATtiny20,
ATtiny11,
ATtiny12,
ATtiny15,
ATtiny22,
ATtiny13,
ATtiny25,
ATtiny2313,
ATtiny1634,
ATtiny828,
ATtiny26,
ATtiny261,
ATtiny28,
ATmega161,
ATmega162,
ATmega165,
ATmega169,
ATmega8515,
ATmega163,
ATmega323,
ATmega8,
ATmega16,
ATmega48,
ATtiny87,
ATtiny48,
ATmega88,
ATmega328,
ATmega328B,
ATmega325,
ATmega64,
ATmega603,
AT90CAN32,
ATmega406,
AT90PWM2,
AT90USB8,
ATmega640,
ATmega16u4,
};
static const FUSEPROP FuseProps[]={
// EW=EEPROM-Wait, FW=Flash-Wait, LD=LockDefault, Cal=Number of OSCCAL
/* EW,FW, LD,Cal, FuseDefault[] LowFuse | HighFuse | ExtFuse */
/*AT90S1200 */{ Par,10, 2,0xF9, 0,{0xDF,0xFF,0xFF}, { 6, 0, 0, 0, 0, 2}},
/*AT90S2313 */{ Par,10, 2,0xF9, 0,{0xDF,0xFF,0xFF}, { 4, 0, 0, 0, 0, 2}},
/*AT90S4434 */{ ISP|Par,10, 2,0xF9, 0,{0xDF,0xFF,0xFF}, { 4, 0, 0, 0, 0, 2}},
/*AT90S2333 */{ ISP|Par,10, 2,0xF9, 0,{0xDA,0xFF,0xFF}, { 7, 7, 7,10,13, 2}},
/*AT90S2323 */{ ISP|HVS,10, 2,0xF9, 0,{0xDF,0xFF,0xFF}, { 4, 0, 0, 0, 0, 2}},
/*AT90S2343 */{ ISP|HVS,10, 2,0xF9, 0,{0xDF,0xFF,0xFF}, { 6, 0, 0, 0, 0, 2}},
/*ATtiny4 */{ TPI, 0, 2,0x00, 0,{0xFF,0xFF,0xFF}, { 1, 8, 9}},
/*ATtiny20 */{ TPI, 0, 2,0x00, 0,{0xFF,0xFF,0xFF}, { 1, 8, 9, 0,11,11,11}},
/*ATtiny11 */{ HVS, 0, 2,0x00, 0,{0xFC,0xFF,0xFF}, { 7, 7, 7, 1, 4}},
/*ATtiny12 */{ ISP|HVS, 0, 0,0x00, 1,{0xD2,0xFF,0xFF}, { 7, 7, 7, 7, 1, 2,10,12}},
/*ATtiny15 */{ ISP|H15, 0, 0,0xF9, 1,{0x5C,0xFF,0xFF}, { 7, 7, 0, 0, 1, 2,10,13}},
/*ATtiny22 */{ ISP|HVS,10, 2,0xF9, 0,{0xDE,0xFF,0xFF}, { 6, 0, 0, 0, 0, 2}},
/*ATtiny13 */{dW| ISP|HVS, 0, 0,0x00, 1,{0x6A,0xFF,0xFF}, { 7, 7, 5, 5,16, 8, 3, 2, 1,11,11,17,18}},
/*ATtiny25 */{dW| ISP|HVS, 0, 0,0x00, 1,{0x62,0xDF,0xFF}, {35,35,35,35, 5, 5, 9,16, 11,11,11, 3, 8, 2,17, 1, 18}},
/*ATtiny2313*/{dW| ISP|Par, 0, 0,0xFC, 2,{0x64,0xDF,0xFF}, { 7, 7, 7, 7, 5, 5, 9,16, 1,11,11,11, 8, 2, 3,17, 18}},
/*ATtiny1634*/{dW| ISP|Par, 0, 0,0xFC, 1,{0x62,0xDF,0xFF}, { 7, 7, 7, 7, 5, 5, 9,16, 11,11,11, 3, 8, 2,17, 1, 18,19,19,20,20}},
/*ATtiny828 */{ ISP|Par, 0, 0,0xFC, 1,{0x6E,0xDF,0xFF}, { 7, 7, 0, 0, 5, 5, 9,16, 11,11,11, 3, 8, 2,17, 1, 21,22,22, 0,19,19,20,20}},
/*ATtiny26 */{ ISP , 0, 0,0xFC, 4,{0xE1,0xF7,0xFF}, { 7, 7, 7, 7, 5, 5,15,23, 10,13, 3, 2, 1}},
/*ATtiny261 */{dW| ISP|Par, 0, 0,0xFC, 1,{0x62,0xDF,0xFF}, { 7, 7, 7, 7, 5, 5, 9,16, 11,11,11, 3, 8, 2,17, 1, 18}},
/*ATtiny28 */{ Par, 0, 0,0xF9, 1,{0xF2,0xFF,0xFF}, { 7, 7, 7, 7,24}},
/*ATmega161 */{ ISP|Par, 0, 0,0xFC, 0,{0xDA,0xFF,0xFF}, { 7, 7, 7,10,13, 2,21}},
/*ATmega162 */{ JT|ISP|Par, 0, 0,0xFC, 1,{0x62,0x99,0xFF}, { 7, 7, 7, 7, 5, 5, 9,16, 21,22,22, 3, 8, 2,25,26, 0,14,14,14,27}},
/*ATmega165 */{ ISP|Par, 0, 0,0xFC, 1,{0x62,0x99,0xFF}, { 7, 7, 7, 7, 5, 5, 9,16, 21,22,22, 3, 8, 2,25,26, 0,14,14,14}},
/*ATmega169 */{ JT|ISP|Par, 0, 0,0xFC, 1,{0x62,0x99,0xFF}, { 7, 7, 7, 7, 5, 5, 9,16, 21,22,22, 3, 8, 2,25,26, 1,14,14,14}},
/*ATmega8515*/{ ISP|Par, 0, 0,0xFC, 4,{0xE1,0xD9,0xFF}, { 7, 7, 7, 7, 5, 5,10,13, 21,22,22, 3,15, 2, 8,28}},
/*ATmega163 */{ ISP|Par, 0, 0,0xFC, 1,{0xD2,0xFF,0xFF}, { 7, 7, 7, 7, 0, 2,10,13, 21,22,22}},
/*ATmega323 */{ ISP|Par, 0, 0,0xFC, 1,{0xF2,0x9F,0xFF}, { 7, 7, 7, 7, 0, 2,10,13, 21,22,22, 3, 0, 0,25,26}},
/*ATmega8 */{ ISP|Par, 0, 0,0xFC, 4,{0xE1,0xD9,0xFF}, { 7, 7, 7, 7, 5, 5,10,13, 21,22,22, 3,15, 2, 8, 1}},
/*ATmega16 */{ JT|ISP|Par, 0, 0,0xFC, 4,{0xE1,0x99,0xFF}, { 7, 7, 7, 7, 5, 5,10,13, 21,22,22, 3,15, 2,25,26}},
/*ATmega48 */{dW| ISP|Par, 0, 0,0xFF, 1,{0x62,0xDF,0xFF}, {35,35,35,35, 5, 5, 9,16, 11,11,11, 3, 8, 2,17, 1, 18}},
/*ATtiny87 */{dW| ISP|Par, 0, 0,0x00, 1,{0x62,0xDF,0xFF}, { 7, 7, 7, 7, 5, 5, 9,16, 11,11,11, 3, 8, 2,17, 1, 18}},
/*ATtiny48 */{dW| ISP|Par, 0, 0,0x00, 1,{0x6E,0xDF,0xFF}, { 7, 7, 0, 0, 5, 5, 9,16, 11,11,11, 3, 8, 2,17, 1, 18}},
/*ATmega88 */{dW| ISP|Par, 0, 0,0xFF, 1,{0x62,0xDF,0xF9}, {35,35,35,35, 5, 5, 9,16, 11,11,11, 3, 8, 2,17, 1, 21,36,36}},
/*ATmega328 */{dW| ISP|Par, 0, 0,0xFF, 1,{0x62,0xD9,0xFF}, {35,35,35,35, 5, 5, 9,16, 21,37,37, 3, 8, 2,17, 1, 11,11,11}},
/*ATmega328B*/{dW| ISP|Par, 0, 0,0xFF, 1,{0x62,0xD9,0xF7}, {35,35,35,35, 5, 5, 9,16, 21,37,37, 3, 8, 2,17, 1, 11,11,11,39}},
/*ATmega325 */{ JT|ISP|Par, 0, 0,0xFC, 1,{0x62,0x99,0xFF}, { 7, 7, 7, 7, 5, 5, 9,16, 21,22,22, 3, 8, 2,25,26, 1,11,11}},
/*ATmega64 */{ JT|ISP|Par, 0, 0,0xFC, 4,{0xE1,0x99,0xFD}, { 7, 7, 7, 7, 5, 5,10,13, 21,22,22, 3,15, 2,25,26, 8,29}},
/*ATmega603 */{ ISP|Par, 0, 0,0xF9, 0,{0xDF,0xFF,0xFF}, { 5, 5, 0, 3}},
/*AT90CAN32 */{ JT|ISP|Par, 0, 0,0xFC, 1,{0x62,0x99,0xFF}, { 7, 7, 7, 7, 5, 5, 9,16, 21,22,22, 3, 8, 2,25,26, 30,31,31,31}},
/*ATmega406 */{ ISP|Par, 0, 0,0xFC,11,{0xCD,0xFE,0xFF}, { 7, 5, 5,21,22,22, 3, 8, 26,27}},
/*AT90PWM2 */{dW| ISP|Par, 0, 0,0xFC, 1,{0x62,0xDF,0xF9}, { 7, 7, 7, 7, 5, 5, 9,16, 32,32,32, 3, 8, 2,17, 1, 21,22,22, 0,33,34,34,34}},
/*AT90USB8 */{dW|USB|ISP|Par, 0, 0,0xFC, 1,{0x62,0xDF,0xF9}, { 7, 7, 7, 7, 5, 5, 9,16, 32,32,32, 3, 8, 2,17, 1, 21,22,22, 0,33,34,34,34}}, // todo!!
/*ATmega640 */{ JT|ISP|Par, 0, 0,0xFC, 1,{0x62,0x99,0xFF}, { 7, 7, 7, 7, 5, 5, 9,16, 21,22,22, 3, 8, 2,25,26, 11,11,11}},
/*ATmega16u4*/{USB|JT|ISP|Par, 0, 0,0xEC, 1,{0x5E,0x99,0xF3}, {35,35,35,35, 5, 5, 9,16, 21,22,22, 3, 8, 2,25,26, 11,11,11,38}},
};
/* Device properties */
const DEVPROP DevLst[] = { /* Device property list
FS = Flash Size in Pages: Shift value (<16), direct value (>=16)
FP = Flash Page Size Shift in Bytes
ES, EP: Same for EEPROM
Name, Signature, FS,FP,ES,EP, fusepropindex*/
{ "90S1200", {0x90,0x01},10, 0, 6, 0, AT90S1200},
{ "90S2313", {0x91,0x01},11, 0, 7, 0, AT90S2313},
{ "90S4414", {0x92,0x01},12, 0, 8, 0, AT90S2313},
{ "90S8515", {0x93,0x01},13, 0, 9, 0, AT90S2313},
{ "90S2333", {0x91,0x05},11, 0, 7, 0, AT90S2333},
{ "90S4433", {0x92,0x03},12, 0, 8, 0, AT90S2333},
{ "90S4434", {0x92,0x02},12, 0, 8, 0, AT90S4434},
{ "90S8535", {0x93,0x03},13, 0, 9, 0, AT90S4434},
{ "90S2323", {0x91,0x02},11, 0, 7, 0, AT90S2323},
{ "90S2343", {0x91,0x03},11, 0, 7, 0, AT90S2343},
{ "tiny4", {0x8F,0x0A}, 9, 0, 0, 0, ATtiny4},
{ "tiny5", {0x8F,0x09}, 9, 0, 0, 0, ATtiny4},
{ "tiny9", {0x90,0x08},10, 0, 0, 0, ATtiny4},
{ "tiny10", {0x90,0x03},10, 0, 0, 0, ATtiny4},
{ "tiny20", {0x91,0x0F},11, 0, 0, 0, ATtiny20},
{ "tiny40", {0x92,0x0E},12, 0, 0, 0, ATtiny20},
{ "tiny11", {0x90,0x04},10, 0, 0, 0, ATtiny11},
{ "tiny12", {0x90,0x05},10, 0, 6, 0, ATtiny12},
{ "tiny15", {0x90,0x06},10, 0, 6, 0, ATtiny15},
{ "tiny22", {0x91,0x06},11, 0, 7, 0, ATtiny22},
{ "tiny26", {0x91,0x09}, 6, 5, 7, 2, ATtiny26},
{ "tiny261", {0x91,0x0C}, 6, 5, 7, 2, ATtiny261},
{ "tiny461", {0x92,0x08}, 6, 6, 8, 2, ATtiny261},
{ "tiny861", {0x93,0x0D}, 7, 6, 9, 2, ATtiny261},
{ "tiny28", {0x91,0x07},11, 0, 0, 0, ATtiny28},
{ "tiny13", {0x90,0x07}, 5, 5, 6, 2, ATtiny13},
{ "tiny25", {0x91,0x08}, 6, 5, 7, 2, ATtiny25},
{ "tiny45", {0x92,0x06}, 6, 6, 8, 2, ATtiny25},
{ "tiny85", {0x93,0x0B}, 7, 6, 9, 2, ATtiny25},
{ "tiny24", {0x91,0x0B}, 6, 5, 7, 2, ATtiny25},
{ "tiny44", {0x92,0x07}, 6, 6, 8, 2, ATtiny25},
{ "tiny84", {0x93,0x0C}, 7, 6, 9, 2, ATtiny25},
{ "tiny441", {0x92,0x15}, 8, 4, 8, 2, ATtiny25},
{ "tiny841", {0x93,0x15}, 9, 4, 8, 2, ATtiny25},
{ "tiny87", {0x93,0x87}, 6, 7, 9, 2, ATtiny87},
{ "tiny167", {0x94,0x87}, 7, 7, 9, 2, ATtiny87},
{ "tiny43U", {0x92,0x0C}, 6, 6, 6, 2, ATtiny87},
{ "tiny48", {0x92,0x09}, 6, 6, 6, 2, ATtiny48},
{ "tiny88", {0x93,0x11}, 7, 6, 6, 2, ATtiny48},
{ "tiny828", {0x93,0x14}, 7, 6, 8, 2, ATtiny828},
{ "tiny2313", {0x91,0x0A}, 6, 5, 7, 2, ATtiny2313},
{ "tiny4313", {0x92,0x0D}, 6, 6, 8, 2, ATtiny2313},
{ "tiny1634", {0x94,0x12}, 9, 5, 8, 2, ATtiny1634},
{ "mega161", {0x94,0x01}, 7, 7, 9, 0, ATmega161},
{ "mega162", {0x94,0x04}, 7, 7, 9, 2, ATmega162},
{ "mega8515", {0x93,0x06}, 7, 6, 9, 2, ATmega8515},
{ "mega8535", {0x93,0x08}, 7, 6, 9, 2, ATmega8515},
{ "mega163", {0x94,0x02}, 7, 7, 9, 0, ATmega163},
{ "mega323", {0x95,0x01}, 8, 7,10, 0, ATmega323},
{ "mega48", {0x92,0x05}, 6, 6, 8, 2, ATmega48},
{ "mega48P", {0x92,0x0A}, 6, 6, 8, 2, ATmega48},
{ "mega48PB", {0x92,0x10}, 6, 6, 8, 2, ATmega48},
{ "mega88", {0x93,0x0A}, 7, 6, 9, 2, ATmega88},
{ "mega88P", {0x93,0x0F}, 7, 6, 9, 2, ATmega88},
{ "mega88PB", {0x93,0x16}, 7, 6, 9, 2, ATmega88},
{ "mega168", {0x94,0x06}, 7, 7, 9, 2, ATmega88},
{ "mega168P", {0x94,0x0B}, 7, 7, 9, 2, ATmega88},
{ "mega168PB", {0x94,0x15}, 7, 7, 9, 2, ATmega88},
{ "mega328", {0x95,0x14}, 8, 7,10, 2, ATmega328},
{ "mega328P", {0x95,0x0F}, 8, 7,10, 2, ATmega328},
{ "mega328PB", {0x95,0x16}, 8, 7,10, 2, ATmega328B},
{ "mega8", {0x93,0x07}, 7, 6, 9, 2, ATmega8},
{ "mega16", {0x94,0x03}, 7, 7, 9, 2, ATmega16},
{ "mega32", {0x95,0x02}, 8, 7,10, 2, ATmega16},
{ "mega164P", {0x94,0x0A}, 7, 7, 9, 3, ATmega640},
{ "mega324P", {0x95,0x08}, 8, 7,10, 3, ATmega640},
{ "mega324PA", {0x95,0x11}, 8, 7,10, 3, ATmega640},
{ "mega644P", {0x96,0x0A}, 8, 8,11, 3, ATmega640},
{ "mega1284P", {0x97,0x05}, 9, 8,12, 3, ATmega640},
{ "mega644", {0x96,0x09}, 8, 8,11, 3, ATmega640},
{ "mega165", {0x94,0x07}, 7, 7, 9, 2, ATmega165},
{ "mega169", {0x94,0x05}, 7, 7, 9, 2, ATmega169},
{ "mega329", {0x95,0x03}, 8, 7,10, 2, ATmega169},
{ "mega325P", {0x95,0x0D}, 8, 7,10, 2, ATmega325},
{ "mega3250P", {0x95,0x0E}, 8, 7,10, 2, ATmega325},
{ "mega325/9", {0x95,0x03}, 8, 7,10, 2, ATmega325},
{ "mega3250/90", {0x95,0x04}, 8, 7,10, 2, ATmega325},
{ "mega645/9", {0x96,0x03}, 8, 8,11, 3, ATmega325},
{ "mega6450/90", {0x96,0x04}, 8, 8,11, 3, ATmega325},
{ "mega603", {0x96,0x01}, 8, 8,11, 0, ATmega603},
{ "mega103", {0x97,0x01}, 9, 8,12, 0, ATmega603},
{ "mega64", {0x96,0x02}, 8, 8,11, 3, ATmega64},
{ "mega128", {0x97,0x02}, 9, 8,12, 3, ATmega64},
{ "mega640", {0x96,0x07}, 8, 8,12, 3, ATmega640},
{ "mega1280", {0x97,0x03}, 9, 8,12, 3, ATmega640},
{ "mega1281", {0x97,0x04}, 9, 8,12, 3, ATmega640},
{ "mega2560", {0x98,0x01},10, 8,12, 3, ATmega640},
{ "mega2561", {0x98,0x02},10, 8,12, 3, ATmega640},
{ "mega406", {0x95,0x07},80, 7, 9, 2, ATmega406},
{ "mega8u2", {0x93,0x89}, 6, 7, 7, 2, AT90USB8}, // unsure pointer
{ "mega16u2", {0x94,0x89}, 7, 7, 7, 2, AT90USB8}, // unsure pointer
{ "mega32u2", {0x95,0x8A}, 8, 7, 8, 2, AT90USB8}, // unsure pointer
{ "mega16u4", {0x94,0x88}, 6, 8, 6, 3, ATmega16u4},
{ "mega32u4", {0x95,0x87}, 7, 8, 7, 3, ATmega16u4},
{ "90PWM2/3", {0x93,0x81}, 7, 6, 9, 2, AT90PWM2},
{ "90PWM216/316",{0x94,0x83}, 7, 7, 9, 2, AT90PWM2},
{ "90CAN32", {0x95,0x81}, 7, 8,10, 3, AT90CAN32},
{ "90CAN64", {0x96,0x81}, 8, 8,11, 2, AT90CAN32},
{ "90CAN128", {0x97,0x81}, 9, 8,12, 3, AT90CAN32},
{ "90USB82", {0x93,0x82}, 6, 7, 7, 2, AT90USB8},
{ "90USB162", {0x94,0x82}, 7, 7, 7, 2, AT90USB8},
{ "90USB646", {0x96,0x82}, 8, 8,10, 3, AT90PWM2}, // unsure pointer
{ "90USB1286", {0x97,0x82}, 9, 8,11, 3, AT90PWM2}, // unsure pointer
{ ""}
};
Detected encoding: OEM (CP437) | 1
|
|