Actions

Difference between revisions of "ATtiny4313 AVRDude configuration"

From Just in Time

Line 1: Line 1:
The following entry appears to work for programming the Attiny4313 with Avrdude, though it hasn't been thoroughly tested yet.  
+
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.
  
 
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.
Line 94: 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 113: 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 119: 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 190: Line 193:
 
     ;
 
     ;
 
   ;
 
   ;
 +
 +
 
</pre>
 
</pre>

Revision as of 19:43, 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.

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";
     ;
  ;