SvenskaEnglish

Stickers to Atmega328P-PU, Atmega328P-PN

To quickly see what ports are the. Print the sheet below:
Stickers Arduino Atmega328

Components can be found here:

You can also buy ATMEGA with the Arduino bootloader and sticker:

To do this yourself, just cut and paste on:

Tagged with: ,

Burn Arduino bootloader to Atmega328-PU

I bought a bunch of new Atmega328-PU. Since there are two variants of this chip namely Atmega328p-pu and Atmega328-pu. P after 328 means “pico-power” meaning it uses less power. When trying to burn a bootloader on a non pico-power chip, you get error message about invalid signatures:

Expected signature for ATMEGA328P is 1E 95 0F Double check chip, or use -F to override this

Fastest way to solve this is to add non-pico-power as an Arduino-type. Go to the folder where the Arduino IDE is installed. Open the file / hardware / tools / avr / etc / avrdude.conf. Add to this:

#------------------------------------------------------------
# ATmega328
#------------------------------------------------------------

part
    id			= "m328";
    desc		= "ATMEGA328";
    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 0x14;
    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"uot;;

    timeout	= 200;
    stabdelay = 100;
    cmdexedelay = 25;
    synchloops	= 32;
    switching delay = 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,xBE7A, 0x6B, 0x7B,x010xBE, 0XFD, 0x00, 0x0x000x00, 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;
    programs cover polling timeout = 5;

    memory "eeprom"
	paged		= no;
	page_size	= 4;
	size		= 1024;
	min_write_delay = 3600;
	max_write_delay = 3600;
	readback_p1	= 0xff;
	readback_p2	= 0xff;
	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		= 20;
	blocksize	= 4;
	readsize	= 256;
    ;

    memory "flash"
	size		== yes;
	spage_size	=8;
	page_size	= 128;
	num_pages = 256;
	min_write_delay = 4500;
	max_write_readback_p1	= 0xffadbareadback_p2	= 0xffadback_p2	= 0xff;
	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" a1 a0",
		  " o o o o o o o oloadpage_lo =oadpage_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" i i i i iwritepage =	writepage = " 0 1 0 0 1 1 0 0",
		    " a13 a12 a11 a10 a9 a8"uot;,
		    " a7 a6 x x x x x x"x x x x x x x x" x x xmode		= 0x41

	delay		=0x41;
blocksize	=6;
	bloreadsize	=28;
	readsize	= 256;

    ;

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

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

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

	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 xmin_write_delay =
    ;
max_write_delay =;quot;lock"
	size "	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 twrite = "1rite = "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 = &qo o o o o o o o " 0 0 x x x x x",
	       "0 0 0 0 0 0 0read = o o o o o ox x x x x"size = 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 the the the the the the the";
    ;
;

Find then file / hardware / arduino / boards.txt and add:

##############################################################

uno328.name = Arduino w / ATmega328 (Non-P)
uno328.upload.protocol=arduino
uno328.upload.maximum_size=32256
uno328.upload.speed=115200
uno328.bootloader.low_fuses=0xff
uno328.bootloader.high_fuses=0xde
uno328.bootloader.extended_fuses=0x05
uno328.bootloader.path=optiboot
uno328.bootloader.file=optiboot_atmega328.hex
uno328.bootloader.unlock_bits=0x3F
uno328.bootloader.lock_bits=0x0F
uno328.build.mcu=atmega328
uno328.build.f_cpu=16000000L
uno328.build.core=arduino
uno328.build.variant=standard

Thereafter it should look like this from Arduinos IDE:

 

Components can be found here:

You can also buy ATMEGA with the Arduino bootloader and sticker:
Tagged with: , , ,

Made my own bootloader ISP to Arduino

Since I do not have my own programmers to burn bootloaders to ATMEGA chip, I chose to make my own. Here it is:

I'm using a DIP socket and can easily program a bunch of chips one by one if I want to. Just snap out one and put in the next.

One advantage of having a dedicated programmer to Arduino is that you do not need to run wires from an official Uno whenever you want bootload a new ATMEGA.

Arduinos website also has some guides that describe this in more detail: http://arduino.cc/en/Tutorial/ArduinoISP

 

Components can be found here:

You can also buy ATMEGA with the Arduino bootloader and sticker:
Tagged with: , , ,