atmega1284p/pu

He guys,
i bought atmega1284pu and i tried to boot bootloader but it didnt work. i was following these tutorials:

http://wiki.wiring.co/wiki/Creating_your_own_Wiring_board_with_a_DIP_atmega1284p_using_Duemilanove
I used arduino uno as isp but i get this error:
avrdude: Device signature = 0x1e9706
avrdude: Expected signature for ATMEGA1284P is 1E 97 05
Double check chip, or use -F to override this check.
Do you think the problem is that i have atmega1284pu and not atmega1284p?
thanks for your answers :).

If I understand correctly, PU means "plastic DIP package" and P means "pico-power". The non-Pico-Power chip should be compatible with the Pico-Power version so all you should have to do is change the chip type in the boards.txt file to remove the 'p'. Then avrdude will be happy with the signature.

i understand what you mean but i dont know what to change.

1284-PU has signature bytes 0x1E 0x97 0x06
1284P-PU has signature bytes 0x1E 0x97 0x05

Find your copy of avrdude.conf, and copy the '1284P section, excerpted here:

#------------------------------------------------------------
# ATmega1284P
#------------------------------------------------------------

# similar to ATmega164p

part
    id               = "m1284p";
    desc             = "ATMEGA1284P";
    has_jtag         = yes;
    stk500_devcode   = 0x82; # no STK500v1 support, use the ATmega16 one
    avr910_devcode   = 0x74;
    signature        = 0x1e 0x97 0x05;
    pagel            = 0xd7;
    bs2              = 0xa0;
    chip_erase_delay = 9000;

and edit it to take out the P from 1284P and change the signature bytes.

Then, do the same in boards.txt for 1284 vs 1284P.

thanks, i tried but when i changed avrdude.conf i get this error on arduino IDE:

syntax error at
H:\Saved Documents\Mirko\arduino\arduino-1.0\hardware/tools/avr/etc/avrdude.conf:16934

i get this error when i change it and even when i dont. can anyone help?

could you send me changed avrdude.conf ,please. thanks

You are not able to copy the Entire 1284P section, add it to the bottom of the file, and change these few lines?
If this doesn't work, then perhaps my approach is incorrect.

#------------------------------------------------------------
# ATmega1284P                          <<<  ATmega1284
#------------------------------------------------------------

# similar to ATmega164p

part
    id               = "m1284p";                 <<<<  "m1284";  
    desc             = "ATMEGA1284P";    <<<<"ATMEGA1284";
    has_jtag         = yes;
    stk500_devcode   = 0x82; # no STK500v1 support, use the ATmega16 one
    avr910_devcode   = 0x74;
    signature        = 0x1e 0x97 0x05;    <<<<  0x1e 0x97 0x06;
:
:
// and copy the rest down to the start of the next section ...

everytime i change avrdude.conf i get error. the same as i show previosly. what abouth changing atmegaBOOT_1284p file. i tried it with .c file and nothing however there is still .hex file. Can anyone help, please. i spent all my money for 2 of these microcontrollers =( and now i cant control them. If they are gonna work i will make really cool robot(check out picture) 8).

DSC_0144[1].jpg

I've been using the atmega1284 without issue (you like I did got the atmega1284-PU, not the atmega1284P-PU - Note that the PU specifies a DIP package and is nothing to do with the device).

All I had to do is to find the definition for ATmega1284P (just using CTRL-F), and change the signature to:

signature = 0x1e 0x97 0x06;

Then I used the IDE to burn a version of optiboot bootloader compiled for the mega1284p

Then once the bootloader was burned I changed the signature back to:
signature = 0x1e 0x97 0x05;

It works a treat for me.

If you let me know what clock frequency you plan to use, I will compile an optiboot hex file for you. Note that the version I modified uses UART1 for programming.

I should mention that I used the standard Arduino core, but modified wiring_analog.c to support the 1284p (It still works fine with all the other arduino's).
I have also attached the Pins_arduino.h file I have been using which shows in it a pin map for the DIP package - this is the pins_arduino file from here: GitHub - stevemarple/Calunium: Arduino clone based on the ATmega644P/ATmega1284P

To speed things up, I have also attached two versions of Optiboot - one compiled for 16MHz, the other for 20MHz (I have an 8MHz version as well if you prefer). These run at 115200 Baud using UART1, and PD7 for the status LED (Digital pin 23, or IC pin 21).

wiring_analog.c (7.38 KB)

pins_arduino.h (6.25 KB)

optiboot_atmega1284_16.hex (1.38 KB)

optiboot_atmega1284_20.hex (1.38 KB)

im so excited but i go sleep i will write tommorow. thank you XD :sweat_smile: :slight_smile:

i replaced wiring_anolg.c and pins_arduino.h but i dont know where i have to change signature, what file?

The signature is changed in:
avrdude.conf

If you are using Windows, I think it is located at:
\hardware\tools\avr\etc\avrdude.conf
(if it is not there, just search for the file name)

For Mac it is located at:
(Click the desktop, then:) Go->"Go To Folder..."
/Applications/Arduino.app/Contents/Resources/Java/hardware/tools/avr/etc

Done burning bootloader. best sentsnce ever :D. thanks man but i cannot upload program :cold_sweat: i tried both uarts and nothing. i also changed baud rate to 115200. didnt help. BTW there is original atmega1284p on 16mhz bootloader. any solution?

Could you post the lines you added to the boards.txt file?

mighty.upload.speed=115200
i just chaged the number. but that is not problem because i tried it also with original baud rate and it didnt work either.

I meant the whole entry.

Here is mine for comparison:

cube1284p_16.name=Cube 1284/1284P (PCB, 16MHz)
cube1284p_16.upload.protocol=arduino
cube1284p_16.upload.maximum_size=130560
cube1284p_16.upload.speed=115200
cube1284p_16.bootloader.low_fuses=0xFF
cube1284p_16.bootloader.high_fuses=0xDE
cube1284p_16.bootloader.extended_fuses=0xFD
cube1284p_16.bootloader.path=optiboot
cube1284p_16.bootloader.file=optiboot_atmega1284_16.hex
cube1284p_16.bootloader.unlock_bits=0x3F
cube1284p_16.bootloader.lock_bits=0x0F
cube1284p_16.build.f_cpu=16000000L
cube1284p_16.build.core=arduino
cube1284p_16.build.variant=Cube
#Note that the MCU is given as atmega1284p even though you are using the atmega1284
cube1284p_16.build.mcu=atmega1284p

but it didnt work even when it wasnt changed.

mighty.name=Original Mighty 1284p 16MHz
mighty.upload.protocol=stk500v1
mighty.upload.maximum_size=129024
mighty.upload.speed=115200
mighty.bootloader.low_fuses=0xff
mighty.bootloader.high_fuses=0xdc
mighty.bootloader.extended_fuses=0xfd
mighty.bootloader.path=standard
mighty.bootloader.file=ATmegaBOOT_1284P.hex
mighty.bootloader.unlock_bits=0x3F
mighty.bootloader.lock_bits=0x0F
mighty.build.mcu=atmega1284p
mighty.build.f_cpu=16000000L
#mighty.build.core=arduino:arduino
mighty.build.core=standard
mighty.build.variant=standard

Have a look at these three lines, and compare them to mine.

mighty.bootloader.file=ATmegaBOOT_1284P.hex
mighty.upload.protocol=stk500v1
mighty.bootloader.path=standard

#This one as well, but actually it isn't that important (my setting saves you 1.5kB of program space)
mighty.bootloader.extended_fuses=0xfd

everything is the same. here is record while uploading program i got.

Binary sketch size: 1,196 bytes (of a 129,024 byte maximum)
E:\Downloads\arduino-1.0.1-windows\arduino-1.0.1\hardware/tools/avr/bin/avrdude -CE:\Downloads\arduino-1.0.1-windows\arduino-1.0.1\hardware/tools/avr/etc/avrdude.conf -v -v -v -v -patmega1284p -cstk500v1 -P\\.\COM5 -b115200 -D -Uflash:w:C:\Users\Miso\AppData\Local\Temp\build8097499639146430213.tmp\Blink.cpp.hex:i 

avrdude: Version 5.11, compiled on Sep  2 2011 at 19:38:36
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2009 Joerg Wunsch

         System wide configuration file is "E:\Downloads\arduino-1.0.1-windows\arduino-1.0.1\hardware/tools/avr/etc/avrdude.conf"

         Using Port                    : \\.\COM5
         Using Programmer              : stk500v1
         Overriding Baud Rate          : 115200
avrdude: Send: 0 [30]   [20] 
avrdude: Send: 0 [30]   [20] 
avrdude: Send: 0 [30]   [20] 
avrdude: Recv: 
avrdude: stk500_getsync(): not in sync: resp=0x00

avrdude done.  Thank you.