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 13:47] 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====
 +===ATtinyx5===
 <code c> <code c>
      ATTiny pinout      ATTiny pinout
                          +-\/-+                          +-\/-+
                   Reset 1|    |8  VCC                   Reset 1|    |8  VCC
-    (pin3) in 0 A3  PB3 2|    |7  PB2 (pin2) out mixed +    (pin3) in 0 A3  PB3 2|    |7  PB2 (pin2) out mixed / SCK 
-    (pin4) in 1 A2  PB4 3|    |6  PB1 (pin1) out 1 +    (pin4) in 1 A2  PB4 3|    |6  PB1 (pin1) out 1 / MISO 
-                    GND 4|    |5  PB0 (pin0) out 0+                    GND 4|    |5  PB0 (pin0) out 0 / MOSI
                          ------                          ------
 </code> </code>
Line 16: Line 19:
 found [[https://tosiek.pl/usbasp-v2-0-warning-cannot-set-sck-period/|here]] found [[https://tosiek.pl/usbasp-v2-0-warning-cannot-set-sck-period/|here]]
  
 +drivers, linux "just works":, windows is [[https://forum.arduino.cc/index.php?topic=415210.msg2862244#msg2862244|a mess]]
 +
 +====CORE====
 +[[https://github.com/SpenceKonde/ATTinyCore|spencerCOre]]
 +note his warning\\
 +<quote>When using a chip for the first time, or after changing the clock speed or BOD settings, you must do "burn bootloader" to set the fuses, even if you are not using the chip with a bootloader</quote>
 +
 +====Fuses====
 +  cd /home/yair/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino14/bin
 +  avrdude -C../etc/avrdude.conf -v -v -v -v -pattiny45 -cusbasp 
 +
 +<hidden successful fuse burn>
 +<code>
 +/home/yair/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino14/bin/avrdude -C/home/yair/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino14/etc/avrdude.conf -v -v -v -v -pattiny45 -cusbasp 
 +
 +avrdude: Version 6.3-20171130
 +         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
 +         Copyright (c) 2007-2014 Joerg Wunsch
 +
 +         System wide configuration file is "/home/yair/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino14/etc/avrdude.conf"
 +         User configuration file is "/home/yair/.avrduderc"
 +
 +         Using Port                    : usb
 +         Using Programmer              : usbasp
 +avrdude: usbasp_open("usb")
 +avrdude: seen device from vendor ->www.fischl.de<-
 +avrdude: seen product ->USBasp<-
 +         AVR Part                      : ATtiny45
 +         Chip Erase delay              : 4500 us
 +         PAGEL                         : P00
 +         BS2                           : P00
 +         RESET disposition             : possible i/o
 +         RETRY pulse                   : SCK
 +         serial program mode           : yes
 +         parallel program mode         : yes
 +         Timeout                       : 200
 +         StabDelay                     : 100
 +         CmdexeDelay                   : 25
 +         SyncLoops                     : 32
 +         ByteDelay                     : 0
 +         PollIndex                     : 3
 +         PollValue                     : 0x53
 +         Memory Detail                 :
 +
 +                                  Block Poll               Page                       Polled
 +           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
 +           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
 +           eeprom        65            0 no        256    4      0  4000  4500 0xff 0xff
 +                                  Block Poll               Page                       Polled
 +           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
 +           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
 +           flash         65        32    0 yes      4096   64     64  4500  4500 0xff 0xff
 +                                  Block Poll               Page                       Polled
 +           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
 +           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
 +           signature      0            0 no          3    0      0         0 0x00 0x00
 +                                  Block Poll               Page                       Polled
 +           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
 +           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
 +           lock                      0 no          1    0      0  9000  9000 0x00 0x00
 +                                  Block Poll               Page                       Polled
 +           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
 +           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
 +           lfuse          0            0 no          1    0      0  9000  9000 0x00 0x00
 +                                  Block Poll               Page                       Polled
 +           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
 +           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
 +           hfuse          0            0 no          1    0      0  9000  9000 0x00 0x00
 +                                  Block Poll               Page                       Polled
 +           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
 +           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
 +           efuse          0            0 no          1    0      0  9000  9000 0x00 0x00
 +                                  Block Poll               Page                       Polled
 +           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
 +           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
 +           calibration    0            0 no          1    0      0         0 0x00 0x00
 +
 +         Programmer Type : usbasp
 +         Description     : USBasp, http://www.fischl.de/usbasp/
 +
 +avrdude: usbasp_initialize()
 +avrdude: usbasp_transmit("USBASP_FUNC_GETCAPABILITIES", 0x00, 0x00, 0x00, 0x00)
 +avrdude: usbasp_spi_set_sck_period(0)
 +avrdude: auto set sck period (because given equals null)
 +avrdude: usbasp_transmit("USBASP_FUNC_SETISPSCK", 0x00, 0x00, 0x00, 0x00)
 +avrdude: warning: cannot set sck period. please check for usbasp firmware update.
 +avrdude: usbasp_transmit("USBASP_FUNC_CONNECT", 0x00, 0x00, 0x00, 0x00)
 +avrdude: usbasp_program_enable()
 +avrdude: usbasp_transmit("USBASP_FUNC_ENABLEPROG", 0x00, 0x00, 0x00, 0x00)
 +         <= [00] 
 +avrdude: AVR device initialized and ready to accept instructions
 +
 +Reading | avrdude: usbasp_spi_cmd(0x30, 0x00, 0x00, 0x00)...
 +avrdude: usbasp_transmit("USBASP_FUNC_TRANSMIT", 0x30, 0x00, 0x00, 0x00)
 +         <= [00] [30] [00] [1e] 
 +avrdude: usbasp_spi_cmd() => 0x00, 0x30, 0x00, 0x1e
 +avrdude: usbasp_spi_cmd(0x30, 0x00, 0x01, 0x00)...
 +avrdude: usbasp_transmit("USBASP_FUNC_TRANSMIT", 0x30, 0x00, 0x01, 0x00)
 +         <= [00] [30] [00] [92] 
 +avrdude: usbasp_spi_cmd() => 0x00, 0x30, 0x00, 0x92
 +################avrdude: usbasp_spi_cmd(0x30, 0x00, 0x02, 0x00)...
 +avrdude: usbasp_transmit("USBASP_FUNC_TRANSMIT", 0x30, 0x00, 0x02, 0x00)
 +         <= [00] [30] [00] [06] 
 +avrdude: usbasp_spi_cmd() => 0x00, 0x30, 0x00, 0x06
 +################################## | 100% 0.00s
 +
 +avrdude: Device signature = 0x1e9206 (probably t45)
 +avrdude: usbasp_close()
 +avrdude: usbasp_transmit("USBASP_FUNC_DISCONNECT", 0x00, 0x00, 0x00, 0x00)
 +
 +avrdude done.  Thank you.
 +</code>
 +</hidden>
 ====System Clock Prescaler==== ====System Clock Prescaler====
 goal:to control prescaler goal:to control prescaler
Line 57: 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>