# 5. Compiling AVRDUDE

### Checking the currently installed version of AVRDUDE

Run the following command:

avrdude -v

You need at least version 5.6 for ATmega328P support.

### Unpacking the archive

Run the following command:

tar xzf ~/Desktop/avrdude-5.6.tar.gz
cd avrdude-5.6

### Compiling and installing AVRDUDE

Unlike the other packages, AVRDUDE does not need to be specifically told to compile for the AVR. So you should be able to compile it with no special options:

./configure
make
sudo make install

### Optional: configuring earlier versions of AVRDUDE for the ATmega328P

The following configuration file will let versions of AVRDUDE before 5.6 work with the 328. Just copy these definitions to the end of avrdude.conf, which can be found in /etc, /usr/local/etc, or (on Windows) C:\WinAVR-*\bin. This will be most useful for Windows users, since the latest WinAVR does not support the 328.

#------------------------------------------------------------
# ATmega328P
#------------------------------------------------------------

part
id              = "m328p";
desc            = "ATMEGA328P";
has_debugwire = yes;
flash_instr   = 0xB6, 0x01, 0x11;
eeprom_instr  = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
0x99, 0xF9, 0xBB, 0xAF;
stk500_devcode  = 0x86;
# avr910_devcode = 0x;
signature       = 0x1e 0x95 0x0F;
pagel           = 0xd7;
bs2             = 0xc2;
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, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
hventerstabdelay    = 100;
progmodedelay       = 0;
latchcycles         = 5;
togglevtg           = 1;
poweroffdelay       = 15;
resetdelayms        = 1;
resetdelayus        = 0;
hvleavestabdelay    = 15;
resetdelay          = 15;
chiperasepulsewidth = 0;
chiperasepolltimeout = 10;
programfusepulsewidth = 0;
programfusepolltimeout = 5;
programlockpulsewidth = 0;
programlockpolltimeout = 5;

memory "eeprom"
paged           = no;
page_size       = 4;
size            = 1024;
min_write_delay = 3600;
max_write_delay = 3600;
read            = " 1 0 1 0 0 0 0 0",
" 0 0 0 x x x a9 a8",
" a7 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 a9 a8",
" a7 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   a9  a8",
" a7  a6  a5  a4     a3  a2   0   0",
"  x   x   x   x      x   x   x   x";

mode            = 0x41;
delay           = 5;
blocksize       = 4;
;

memory "flash"
paged           = yes;
size            = 32768;
page_size       = 128;
num_pages       = 256;
min_write_delay = 4500;
max_write_delay = 4500;
read_lo         = " 0 0 1 0 0 0 0 0",
" 0 0 a13 a12 a11 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 a13 a12 a11 a10 a9 a8",
" a7 a6 a5 a4 a3 a2 a1 a0",
" o o o o o o o o";

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

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

writepage       = " 0 1 0 0 1 1 0 0",
" 0 0 a13 a12 a11 a10 a9 a8",
" a7 a6 x x x x x x",
" x x x x x x x x";

mode        = 0x41;
delay       = 6;
blocksize   = 128;

;

memory "lfuse"
size            = 1;
min_write_delay = 4500;
max_write_delay = 4500;
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";

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

memory "hfuse"
size            = 1;
min_write_delay = 4500;
max_write_delay = 4500;
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";

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

memory "efuse"
size            = 1;
min_write_delay = 4500;
max_write_delay = 4500;
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 x x x x x o o o";

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

memory "lock"
size            = 1;
min_write_delay = 4500;
max_write_delay = 4500;
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";

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

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

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

(702) 262-6648
Same-day shipping, worldwide