Actions

Difference between revisions of "ATtiny4313 AVRDude configuration"

From Just in Time

(Created page with ' The following entry works for programming the Attiny4313 with Avrdude. We don't take any responsibility for anyone trying this and frying their Tinies or Programmer !! Be sure y…')
 
 
(6 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 +
The following entry appears to work for programming the Attiny4313 with Avrdude. The previous entry we had here worked, as long as the code didn't cross the 2K border, so make sure you get the latest one posted underneath - which works all the way up to 4K.
  
The following entry works for programming the Attiny4313 with Avrdude. We don't take any responsibility for anyone trying this and frying their Tinies or Programmer !! Be sure you know what you are doing.
+
We don't take any responsibility for anyone trying this and frying their Tinies or Programmer !! Be sure you know what you are doing.
  
 +
<pre>
 
#------------------------------------------------------------
 
#------------------------------------------------------------
 
# ATtiny4313 (Clone off 2313)
 
# ATtiny4313 (Clone off 2313)
Line 92: Line 94:
 
         paged          = yes;
 
         paged          = yes;
 
         size            = 4096;
 
         size            = 4096;
         page_size      = 32;
+
         page_size      = 64;
         num_pages      = 128;
+
         num_pages      = 64;
 
         min_write_delay = 4500;
 
         min_write_delay = 4500;
 
         max_write_delay = 4500;
 
         max_write_delay = 4500;
 
         readback_p1    = 0xff;
 
         readback_p1    = 0xff;
 
         readback_p2    = 0xff;
 
         readback_p2    = 0xff;
 +
 +
#####
 +
 
         read_lo        = "  0  0  1  0    0  0  0  0",
 
         read_lo        = "  0  0  1  0    0  0  0  0",
                           "  0  0  0  0    0  a9  a8",
+
                           "  0  0  0  0    0  a10 a9  a8",
 
                           " a7  a6  a5  a4  a3  a2  a1  a0",
 
                           " a7  a6  a5  a4  a3  a2  a1  a0",
 
                           "  o  o  o  o    o  o  o  o";
 
                           "  o  o  o  o    o  o  o  o";
  
 
         read_hi        = "  0  0  1  0    1  0  0  0",
 
         read_hi        = "  0  0  1  0    1  0  0  0",
                           "  0  0  0  0    0  a9  a8",
+
                           "  0  0  0  0    0  a10 a9  a8",
 
                           " a7  a6  a5  a4  a3  a2  a1  a0",
 
                           " a7  a6  a5  a4  a3  a2  a1  a0",
 
                           "  o  o  o  o    o  o  o  o";
 
                           "  o  o  o  o    o  o  o  o";
Line 111: Line 116:
 
         loadpage_lo    = "  0  1  0  0    0  0  0  0",
 
         loadpage_lo    = "  0  1  0  0    0  0  0  0",
 
                           "  0  0  0  x    x  x  x  x",
 
                           "  0  0  0  x    x  x  x  x",
                           "  x  x  x  x   a3  a2  a1  a0",
+
                           "  x  x  x  a4   a3  a2  a1  a0",
 
                           "  i  i  i  i    i  i  i  i";
 
                           "  i  i  i  i    i  i  i  i";
  
Line 117: Line 122:
 
         loadpage_hi    = "  0  1  0  0    1  0  0  0",
 
         loadpage_hi    = "  0  1  0  0    1  0  0  0",
 
                           "  0  0  0  x    x  x  x  x",
 
                           "  0  0  0  x    x  x  x  x",
                           "  x  x  x  x   a3  a2  a1  a0",
+
                           "  x  x  x  a4   a3  a2  a1  a0",
 
                           "  i  i  i  i    i  i  i  i";
 
                           "  i  i  i  i    i  i  i  i";
  
 
# The information in the data sheet of April/2004 is wrong, this works:
 
# The information in the data sheet of April/2004 is wrong, this works:
 
         writepage      = "  0  1  0  0  1  1  0  0",
 
         writepage      = "  0  1  0  0  1  1  0  0",
                           "  0  0  0  0  0  0 a9 a8",
+
                           "  0  0  0  0  0  a10  a9 a8",
                           " a7 a6 a5 a4   x  x  x  x",
+
                           " a7 a6 a5 x   x  x  x  x",
 
                           "  x  x  x  x  x  x  x  x";
 
                           "  x  x  x  x  x  x  x  x";
  
 
mode = 0x41;
 
mode = 0x41;
 
delay = 6;
 
delay = 6;
blocksize = 32;
+
blocksize = 64;
 
readsize = 256;
 
readsize = 256;
 
       ;
 
       ;
Line 188: Line 193:
 
     ;
 
     ;
 
   ;
 
   ;
 +
 +
 +
</pre>

Latest revision as of 19:44, 24 August 2010

The following entry appears to work for programming the Attiny4313 with Avrdude. The previous entry we had here worked, as long as the code didn't cross the 2K border, so make sure you get the latest one posted underneath - which works all the way up to 4K.

We don't take any responsibility for anyone trying this and frying their Tinies or Programmer !! Be sure you know what you are doing.

#------------------------------------------------------------
# ATtiny4313 (Clone off 2313)
#------------------------------------------------------------

part
     id            = "t4313";
     desc          = "ATtiny4313";
     has_debugwire = yes;
     flash_instr   = 0xB2, 0x0F, 0x1F;
     eeprom_instr  = 0xBB, 0xFE, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
	             0xBA, 0x0F, 0xB2, 0x0F, 0xBA, 0x0D, 0xBB, 0xBC,
	             0x99, 0xE1, 0xBB, 0xAC;
     stk500_devcode   = 0x23;
##   Use the ATtiny26 devcode:
     avr910_devcode   = 0x5e;
     signature        = 0x1e 0x92 0x0d;
     pagel            = 0xD4;
     bs2              = 0xD6;
     reset            = io;
     chip_erase_delay = 9000;

     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;

    pp_controlstack     =
        0x0E, 0x1E, 0x0E, 0x1E, 0x2E, 0x3E, 0x2E, 0x3E,
        0x4E, 0x5E, 0x4E, 0x5E, 0x6E, 0x7E, 0x6E, 0x7E,
        0x26, 0x36, 0x66, 0x76, 0x2A, 0x3A, 0x6A, 0x7A,
        0x2E, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
    hventerstabdelay    = 100;
    progmodedelay       = 0;
    latchcycles         = 5;
    togglevtg           = 1;
    poweroffdelay       = 15;
    resetdelayms        = 1;
    resetdelayus        = 0;
    hvleavestabdelay    = 15;
    chiperasepulsewidth = 0;
    chiperasepolltimeout = 10;
    programfusepulsewidth = 0;
    programfusepolltimeout = 5;
    programlockpulsewidth = 0;
    programlockpolltimeout = 5;

     memory "eeprom"
         size            = 256;
        paged           = no;
        page_size       = 4;
         min_write_delay = 4000;
         max_write_delay = 4500;
         readback_p1     = 0xff;
         readback_p2     = 0xff;
         read            = "1  0  1  0   0  0  0  0   0 0 0 x  x x x x",
                           "x a6 a5 a4  a3 a2 a1 a0   o o o o  o o o o";

         write           = "1  1  0  0   0  0  0  0   0 0 0 x  x x x x",
                           "x a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";

	loadpage_lo	= "  1   1   0   0      0   0   0   1",
			  "  0   0   0   0      0   0   0   0",
			  "  0   0   0   0      0   0  a1  a0",
			  "  i   i   i   i      i   i   i   i";

	writepage	= "  1   1   0   0      0   0   1   0",
			  "  0   0   x   x      x   x   x   x",
			  "  x  a6  a5  a4     a3  a2   0   0",
			  "  x   x   x   x      x   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   1   0    0   0   0   0",
                           "  0   0   0   0    0  a10 a9  a8",
                           " a7  a6  a5  a4   a3  a2  a1  a0",
                           "  o   o   o   o    o   o   o   o";

         read_hi         = "  0   0   1   0    1   0   0   0",
                           "  0   0   0   0    0  a10 a9  a8",
                           " a7  a6  a5  a4   a3  a2  a1  a0",
                           "  o   o   o   o    o   o   o   o";

# The information in the data sheet of April/2004 is wrong, this works:
         loadpage_lo     = "  0   1   0   0    0   0   0   0",
                           "  0   0   0   x    x   x   x   x",
                           "  x   x   x   a4   a3  a2  a1  a0",
                           "  i   i   i   i    i   i   i   i";

# The information in the data sheet of April/2004 is wrong, this works:
         loadpage_hi     = "  0   1   0   0    1   0   0   0",
                           "  0   0   0   x    x   x   x   x",
                           "  x   x   x   a4   a3  a2  a1  a0",
                           "  i   i   i   i    i   i   i   i";

# The information in the data sheet of April/2004 is wrong, this works:
         writepage       = "  0  1  0  0   1  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  x  x";

	mode		= 0x41;
	delay		= 6;
	blocksize	= 64;
	readsize	= 256;
       ;
#   ATtiny2313 has Signature Bytes: 0x1E 0x91 0x0A.
     memory "signature"
         size            = 3;
         read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
                           "x  x  x  x   x  x a1 a0   o  o  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",
                          "x x x x  x x x x  x x 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;
     ;
# The Tiny2313 has calibration data for both 4 MHz and 8 MHz.
# The information in the data sheet of April/2004 is wrong, this works:

     memory "calibration"
         size            = 2;
         read            = "0  0  1  1   1  0  0  0    0 0 0 x  x x x x",
                           "0  0  0  0   0  0  0  a0   o o o o  o o o o";
     ;
  ;