Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
attiny [2019/12/14 17:43] – [CORE] yairattiny [2020/01/01 22:54] (current) yair
Line 1: Line 1:
 attinyX5 Family in all their gory details attinyX5 Family in all their gory details
  
 +{{ :pasted:20200101-205421.png?200}}
 ====pinouts==== ====pinouts====
 ===ATtinyx5=== ===ATtinyx5===
Line 173: Line 173:
 </code> </code>
 {{:pasted:20191206-134349.png}} {{:pasted:20191206-134349.png}}
 +
 +<hidden conf for atiny45/85>
 +<code>
 +#------------------------------------------------------------
 +# ATtiny45
 +#------------------------------------------------------------
 +
 +part
 +     id            = "t45";
 +     desc          = "ATtiny45";
 +     has_debugwire = yes;
 +     flash_instr   = 0xB4, 0x02, 0x12;
 +     eeprom_instr  = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
 +              0xBC, 0x02, 0xB4, 0x02, 0xBA, 0x0D, 0xBB, 0xBC,
 +              0x99, 0xE1, 0xBB, 0xAC;
 +     stk500_devcode   = 0x14;
 +##  avr910_devcode   = ?;
 +##  Try the AT90S2313 devcode:
 +     avr910_devcode   = 0x20;
 +     signature        = 0x1e 0x92 0x06;
 +     reset            = io;
 +     chip_erase_delay = 4500;
 +
 +     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
 +                        "x x x x  x x x x    x x x x  x x x x";
 +
 +     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
 +                        "x x x x  x x x x    x x x x  x x x x";
 +
 +    timeout = 200;
 +    stabdelay = 100;
 +    cmdexedelay = 25;
 +    synchloops = 32;
 +    bytedelay = 0;
 +    pollindex = 3;
 +    pollvalue = 0x53;
 +    predelay = 1;
 +    postdelay = 1;
 +    pollmethod = 1;
 +
 +    hvsp_controlstack     =
 + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66,
 +        0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78,
 +        0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
 +        0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00;
 +    hventerstabdelay    = 100;
 +    progmodedelay       = 0;
 +    hvspcmdexedelay     = 0;
 +    synchcycles         = 6;
 +    latchcycles         = 1;
 +    togglevtg           = 1;
 +    poweroffdelay       = 25;
 +    resetdelayms        = 1;
 +    resetdelayus        = 0;
 +    hvleavestabdelay    = 100;
 +    resetdelay          = 25;
 +    chiperasepolltimeout = 40;
 +    chiperasetime       = 0;
 +    programfusepolltimeout = 25;
 +    programlockpolltimeout = 25;
 +
 +    ocdrev              = 1;
 +
 +     memory "eeprom"
 +         size            = 256;
 +         page_size       = 4;
 +         min_write_delay = 4000;
 +         max_write_delay = 4500;
 +         readback_p1     = 0xff;
 +         readback_p2     = 0xff;
 +         read            = " 0  1  0    0  0  0    0 0 0 x  x x x x",
 +                           "a7 a6 a5 a4  a3 a2 a1 a0   o o o o  o o o o";
 +
 +         write           = " 1  0  0    0  0  0    0 0 0 x  x x x x",
 +                           "a7 a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
 +
 + loadpage_lo = "  1            0       1",
 +   "  0            0       0",
 +   "  0            0    a1  a0",
 +   "  i            i       i";
 +
 + writepage = "  1            0       0",
 +   "  0            x       x",
 +   " a7  a6  a5  a4     a3  a2     0",
 +   "  x            x       x";
 +
 + mode = 0x41;
 + delay = 6;
 + blocksize = 4;
 + readsize = 256;
 +       ;
 +     memory "flash"
 +         paged           = yes;
 +         size            = 4096;
 +         page_size       = 64;
 +         num_pages       = 64;
 +         min_write_delay = 4500;
 +         max_write_delay = 4500;
 +         readback_p1     = 0xff;
 +         readback_p2     = 0xff;
 +         read_lo         = "  0          0       0",
 +                           "  0          0  a10 a9  a8",
 +                           " a7  a6  a5  a4   a3  a2  a1  a0",
 +                           "  o          o       o";
 +
 +         read_hi         = "  0          1       0",
 +                           "  0          0  a10 a9  a8",
 +                           " a7  a6  a5  a4   a3  a2  a1  a0",
 +                           "  o          o       o";
 +
 +         loadpage_lo     = "  0          0       0",
 +                           "  0          x       x",
 +                           "  x      a4   a3  a2  a1  a0",
 +                           "  i          i       i";
 +
 +         loadpage_hi     = "  0          1       0",
 +                           "  0          x       x",
 +                           "  x      a4   a3  a2  a1  a0",
 +                           "  i          i       i";
 +
 +         writepage       = "  0  1  0  0    1  0  0",
 +                           "  0  0  0  0   0 a10 a9 a8",
 +                           " a7 a6 a5  x    x  x  x",
 +                           "  x  x  x  x    x  x  x";
 +
 + mode = 0x41;
 + delay = 6;
 + blocksize = 32;
 + readsize = 256;
 +       ;
 +#   ATtiny45 has Signature Bytes: 0x1E 0x92 0x08. (Data sheet 2586C-AVR-06/05 (doc2586.pdf) indicates otherwise!)
 +     memory "signature"
 +         size            = 3;
 +         read            = " 0  1  1    0  0  0    0  0  x    x  x  x",
 +                           " x  x  x    x a1 a0    o  o  o    o  o  o";
 +       ;
 +     memory "lock"
 +         size            = 1;
 +         write           = "1 0 1 0  1 1 0 0  1 1 1 x  x x x x",
 +                           "x x x x  x x x x  1 1 i i  i i i i";
 +         read            = "0 1 0 1  1 0 0 0  0 0 0 0  0 0 0 0",
 +                           "0 0 0 0  0 0 0 0  o o o o  o o o o";
 +        min_write_delay = 9000;
 +        max_write_delay = 9000;
 +       ;
 +
 +     memory "lfuse"
 +         size            = 1;
 +         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
 +                           "x x x x  x x x x  i i i i  i i i i";
 +
 +         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
 +                           "x x x x  x x x x  o o o o  o o o o";
 +        min_write_delay = 9000;
 +        max_write_delay = 9000;
 +       ;
 +
 +     memory "hfuse"
 +         size            = 1;
 +         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
 +                           "x x x x  x x x x  i i i i  i i i i";
 +
 +         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
 +                           "x x x x  x x x x  o o o o  o o o o";
 +        min_write_delay = 9000;
 +        max_write_delay = 9000;
 +       ;
 +
 +     memory "efuse"
 +         size            = 1;
 +         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
 +                           "x x x x  x x x x  x x x x  x x x i";
 +
 +         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
 +                           "x x x x  x x x x  o o o o  o o o o";
 +        min_write_delay = 9000;
 +        max_write_delay = 9000;
 +     ;
 +
 +     memory "calibration"
 +         size            = 1;
 +         read            = " 0  1  1    0  0  0    0 0 0 x  x x x x",
 +                           " 0  0  0    0  0  a0   o o o o  o o o o";
 +     ;
 +  ;
 +
 +#------------------------------------------------------------
 +# ATtiny85
 +#------------------------------------------------------------
 +
 +part
 +     id            = "t85";
 +     desc          = "ATtiny85";
 +     has_debugwire = yes;
 +     flash_instr   = 0xB4, 0x02, 0x12;
 +     eeprom_instr  = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
 +              0xBC, 0x02, 0xB4, 0x02, 0xBA, 0x0D, 0xBB, 0xBC,
 +              0x99, 0xE1, 0xBB, 0xAC;
 +## no STK500 devcode in XML file, use the ATtiny45 one
 +     stk500_devcode   = 0x14;
 +##  avr910_devcode   = ?;
 +##  Try the AT90S2313 devcode:
 +     avr910_devcode   = 0x20;
 +     signature        = 0x1e 0x93 0x0b;
 +     reset            = io;
 +     chip_erase_delay = 400000;
 +
 +     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
 +                        "x x x x  x x x x    x x x x  x x x x";
 +
 +     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
 +                        "x x x x  x x x x    x x x x  x x x x";
 +
 +    timeout = 200;
 +    stabdelay = 100;
 +    cmdexedelay = 25;
 +    synchloops = 32;
 +    bytedelay = 0;
 +    pollindex = 3;
 +    pollvalue = 0x53;
 +    predelay = 1;
 +    postdelay = 1;
 +    pollmethod = 1;
 +
 +    hvsp_controlstack   =
 +        0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66,
 +        0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78,
 +        0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
 +        0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00;
 +    hventerstabdelay    = 100;
 +    hvspcmdexedelay     = 0;
 +    synchcycles         = 6;
 +    latchcycles         = 1;
 +    togglevtg           = 1;
 +    poweroffdelay       = 25;
 +    resetdelayms        = 1;
 +    resetdelayus        = 0;
 +    hvleavestabdelay    = 100;
 +    resetdelay          = 25;
 +    chiperasepolltimeout = 40;
 +    chiperasetime       = 0;
 +    programfusepolltimeout = 25;
 +    programlockpolltimeout = 25;
 +
 +    ocdrev              = 1;
 +
 +     memory "eeprom"
 +         size            = 512;
 +        paged           = no;
 +        page_size       = 4;
 +         min_write_delay = 4000;
 +         max_write_delay = 4500;
 +         readback_p1     = 0xff;
 +         readback_p2     = 0xff;
 +         read            = " 0  1  0    0  0  0    0 0 0 x  x x x a8",
 +                           "a7 a6 a5 a4  a3 a2 a1 a0   o o o o  o o o o";
 +
 +         write           = " 1  0  0    0  0  0    0 0 0 x  x x x a8",
 +                           "a7 a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
 +
 + loadpage_lo = "  1            0       1",
 +   "  0            0       0",
 +   "  0            0    a1  a0",
 +   "  i            i       i";
 +
 + writepage = "  1            0       0",
 +   "  0            x      a8",
 +   " a7  a6  a5  a4     a3  a2     0",
 +   "  x            x       x";
 +
 + mode = 0x41;
 + delay = 12;
 + blocksize = 4;
 + readsize = 256;
 +       ;
 +     memory "flash"
 +         paged           = yes;
 +         size            = 8192;
 +         page_size       = 64;
 +         num_pages       = 128;
 +         min_write_delay = 30000;
 +         max_write_delay = 30000;
 +         readback_p1     = 0xff;
 +         readback_p2     = 0xff;
 +         read_lo         = "  0          0       0",
 +                           "  0        a11 a10  a9  a8",
 +                           " a7  a6  a5  a4   a3  a2  a1  a0",
 +                           "  o          o       o";
 +
 +         read_hi         = "  0          1       0",
 +                           "  0        a11 a10  a9  a8",
 +                           " a7  a6  a5  a4   a3  a2  a1  a0",
 +                           "  o          o       o";
 +
 +         loadpage_lo     = "  0          0       0",
 +                           "  0          x       x",
 +                           "  x      a4   a3  a2  a1  a0",
 +                           "  i          i       i";
 +
 +         loadpage_hi     = "  0          1       0",
 +                           "  0          x       x",
 +                           "  x      a4   a3  a2  a1  a0",
 +                           "  i          i       i";
 +
 +         writepage       = "  0  1  0  0        0",
 +                           "  0  0  0  0  a11 a10 a9 a8",
 +                           " a7 a6 a5  x    x  x  x",
 +                           "  x  x  x  x    x  x  x";
 +
 + mode = 0x41;
 + delay = 6;
 + blocksize = 32;
 + readsize = 256;
 +       ;
 +#   ATtiny85 has Signature Bytes: 0x1E 0x93 0x08.
 +     memory "signature"
 +         size            = 3;
 +         read            = " 0  1  1    0  0  0    0  0  x    x  x  x",
 +                           " x  x  x    x a1 a0    o  o  o    o  o  o";
 +       ;
 +     memory "lock"
 +         size            = 1;
 +         write           = "1 0 1 0  1 1 0 0  1 1 1 x  x x x x",
 +                           "x x x x  x x x x  1 1 i i  i i i i";
 +         read            = "0 1 0 1  1 0 0 0  0 0 0 0  0 0 0 0",
 +                           "0 0 0 0  0 0 0 0  o o o o  o o o o";
 +        min_write_delay = 9000;
 +        max_write_delay = 9000;
 +       ;
 +
 +     memory "lfuse"
 +         size            = 1;
 +         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
 +                           "x x x x  x x x x  i i i i  i i i i";
 +
 +         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
 +                           "x x x x  x x x x  o o o o  o o o o";
 +        min_write_delay = 9000;
 +        max_write_delay = 9000;
 +       ;
 +
 +     memory "hfuse"
 +         size            = 1;
 +         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
 +                           "x x x x  x x x x  i i i i  i i i i";
 +
 +         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
 +                           "x x x x  x x x x  o o o o  o o o o";
 +        min_write_delay = 9000;
 +        max_write_delay = 9000;
 +       ;
 +
 +     memory "efuse"
 +         size            = 1;
 +         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
 +                           "x x x x  x x x x  x x x x  x x x i";
 +
 +         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
 +                           "x x x x  x x x x  o o o o  o o o o";
 +        min_write_delay = 9000;
 +        max_write_delay = 9000;
 +     ;
 +
 +     memory "calibration"
 +         size            = 1;
 +         read            = " 0  1  1    0  0  0    0 0 0 x  x x x x",
 +                           " 0  0  0    0  0  a0   o o o o  o o o o";
 +     ;
 +  ;
 +
 +</code>
 +</hidden>