GithubHelp home page GithubHelp logo

adafruit / standalone-arduino-avr-isp-programmer Goto Github PK

View Code? Open in Web Editor NEW
85.0 35.0 68.0 38 KB

A standalone programmer for mass-programming AVR chips

Home Page: http://ladyada.net/library/tools/standaloneisp.html

C 6.76% C++ 93.24%

standalone-arduino-avr-isp-programmer's Introduction

Standalone AVR programmer

This sketch can be used to let one Arduino program a sketch or bootloader into another one, using the ISP programming pins.

This sketch is based on OptiLoader, but modified for use with Adafruit's adaloader and to be used without a serial connection. It is intended to be used with Adafruit's standalone programmer kit (a protoshield with ZIF socket, buttons, leds and a buzzer), but it should be usable with any Arduino wired up to any AVR chip (respecting the pinout, see below).

The sketch to be flashed is stored in the images.cpp file inside this sketch. By default, it contains the adaLoader bootloader, but you can replace it with your own bootloader or sketch as well. To do so, compile that sketch into a .hex file (using the Arduino IDE, you can use "Sketch" -> "Export compiled Binary" to get the compiled .hex file) and paste its contents (it's just a text file) into images.cpp (see that file for details). There you can also configure the target chip signature and fuse settings.

For more info on setting this up, see Adafruit's tutorial.

Pinout

To use this sketch, you can use the following pinout. Here, "programmer" means the Arduino running this particular sketch, "target" means the chip being programmed. For reference, this also lists pin numbers for an Arduino Uno programmer and bare atmega328p target chip, adapt these if you use a different setup.

Programmer pin Uno pin number Connects to
Digital pin 10 10 Target RESET (atmega328p pin 1)
MOSI 11 Target MOSI (atmega328p pin 17)
MISO 12 Target MISO (atmega328p pin 18)
SCK 13 Target SCK (atmega328p pin 19)
Digital pin 9 9 Target XTAL1 (optional, atmega328p pin 9)
Digital pin 8 8 Error LED (active high)
Analog pin 0 A0 Activity LED (active high)
Analog pin 1 A1 Button (active low, internal pullup enabled)
Analog pin 3 A1 Piezo (outputs 4kHz square wave)

Leds & buzzer

On startup, both leds blink twice and then turn off.

When the target is being programmed the activity led turns on. Once it is done, the led turns off and the piezo makes a short beep.

When an error occurs during programming or verification, the error led turns on and stays on and the the piezo makes a continuous beep.

Clock output

This sketch generates an 8Mhz clock as an extra utility. This can be used if the target chip has fuse settings that expect an external clock (or crystal, that also seems to work). If you are only configuring the fuses to use the internal oscillator, this is not needed.

Button

A single button can be connected, which can be used to start programming the next chip (including the first). Alternatively, you can send a command (uppercase 'G') through serial to start programming.

Autostart

This sketch also supports autostarting the programming when a chip is connected. This works by detecting the (internal or external) pullup on the reset line. To make sure that the pin reads LOW when nothing is connected, this needs a big pulldown on the ISP reset line (so between digital pin 10 on the programmer and GND). It should be big enough to not interfere with the target's reset pullup, so something like 1M should be ok.

To enable autostart, add the pulldown resistor and set AUTOSTART to 1 in the .ino file.

Now, when you insert a chip and the reset line is stable for a short while, the programming will automatically start. If the programmer is powered up or reset while a chip is inserted, it must be removed and re-inserted to start programming (of course, you can still use the button or serial as well).

standalone-arduino-avr-isp-programmer's People

Contributors

deqingsun avatar ladyada avatar marcelojrfarias avatar matthijskooijman avatar paintyourdragon avatar per1234 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

standalone-arduino-avr-isp-programmer's Issues

Fails when using a larger hex image, works with the standard small hex image

It works when i use the small optiboot HEX but always fails when i use a larger HEX.
The target is 32u4 (page size 128b, flash size 32kb).
I use an MCU with larger flash storage (128K) which can handle the larger hex file.
The hex file is tested and working on the target with avrdude.

I am unsure if i should use 0x3F or 0x2F for pre-program fuse, setting for avrdude in arduino are :
//bootloader.low_fuses=0xff
//bootloader.high_fuses=0xd8
//bootloader.extended_fuses=0xcb
//bootloader.unlock_bits=0x3F
//bootloader.lock_bits=0x2F

log with larger hex image

Starting Program Mode [OK]

Reading signature:9587
Searching for image...
Found "atmega32u4.hex" for atmega32u4

Erasing chip

Setting fuses
Set Lock Fuse to: 3F -> E000  Set Low Fuse to: FF -> A000  Set High Fuse to: D8 -> A800  Set Ext Fuse to: CB -> A400
Verifying fuses...

Lock Fuse: 3F is 3F  Low Fuse: 0xFF is 0xFF  High Fuse: 0xD8 is 0xD8  Ext Fuse: 0xCB is 0xCB
Fuses set & verified
Page size: 128
Chip size: 32768
Writing address $0Writing address $80Writing address $100Writing address $180Writing address $200Writing address $280Writing address $300Writing address $380Writing address $400Writing address $480Writing address $500Writing address $580Writing address $600Writing address $680Writing address $700Writing address $780Writing address $800Writing address $880Writing address $900Writing address $980Writing address $A00Writing address $A80Writing address $B00Writing address $B80Writing address $C00Writing address $C80Writing address $D00Writing address $D80Writing address $E00Writing address $E80Writing address $F00Writing address $F80Writing address $1000Writing address $1080Writing address $1100Writing address $1180Writing address $1200Writing address $1280Writing address $1300Writing address $1380Writing address $1400Writing address $1480Writing address $1500Writing address $1580Writing address $1600Writing address $1680Writing address $1700Writing address $1780Writing address $1800Writing address $1880Writing address $1900Writing address $1980Writing address $1A00Writing address $1A80Writing address $1B00Writing address $1B80Writing address $1C00Writing address $1C80Writing address $1D00Writing address $1D80Writing address $1E00Writing address $1E80Writing address $1F00Writing address $1F80Writing address $2000Writing address $2080Writing address $2100Writing address $2180Writing address $2200Writing address $2280Writing address $2300Writing address $2380Writing address $2400Writing address $2480Writing address $2500Writing address $2580Writing address $2600Writing address $2680Writing address $2700Writing address $2780Writing address $2800Writing address $2880Writing address $2900Writing address $2980Writing address $2A00Writing address $2A80Writing address $2B00Writing address $2B80Writing address $2C00Writing address $2C80Writing address $2D00Writing address $2D80Writing address $2E00Writing address $2E80Writing address $2F00Writing address $2F80Writing address $3000Writing address $3080Writing address $3100Writing address $3180Writing address $3200Writing address $3280Writing address $3300Writing address $3380Writing address $3400Writing address $3480Writing address $3500Writing address $3580Writing address $3600Writing address $3680Writing address $3700Writing address $3780Writing address $3800Writing address $3880Writing address $3900Writing address $3980Writing address $3A00Writing address $3A80Writing address $3B00Writing address $3B80Writing address $3C00Writing address $3C80Writing address $3D00Writing address $3D80Writing address $3E00Writing address $3E80Writing address $3F00Writing address $3F80Writing address $4000Writing address $4080Writing address $4100Writing address $4180Writing address $4200Writing address $4280Writing address $4300Writing address $4380Writing address $4400Writing address $4480Writing address $4500Writing address $4580Writing address $4600Writing address $4680Writing address $4700Writing address $4780Writing address $4800Writing address $4880Writing address $4900Writing address $4980Writing address $4A00Writing address $4A80Writing address $4B00Writing address $4B80Writing address $4C00Writing address $4C80Writing address $4D00Writing address $4D80Writing address $4E00Writing address $4E80Writing address $4F00Writing address $4F80Writing address $5000Writing address $5080Writing address $5100Writing address $5180Writing address $5200Writing address $5280Writing address $5300Writing address $5380Writing address $5400Writing address $5480Writing address $5500Writing address $5580Writing address $5600Writing address $5680Writing address $5700Writing address $5780Writing address $5800Writing address $5880Writing address $5900Writing address $5980Writing address $5A00Writing address $5A80Writing address $5B00Writing address $5B80Writing address $5C00Writing address $5C80Writing address $5D00Writing address $5D80Writing address $5E00Writing address $5E80Writing address $5F00Writing address $5F80Writing address $6000Writing address $6080Writing address $6100Writing address $6180Writing address $6200Writing address $6280Writing address $6300Writing address $6380Writing address $6400Writing address $6480Writing address $6500Writing address $6580Writing address $6600Writing address $6680Writing address $6700Writing address $6780Writing address $6800Writing address $6880Writing address $6900Writing address $6980Writing address $6A00Writing address $6A80Writing address $6B00Writing address $6B80Writing address $6C00Writing address $6C80Writing address $6D00Writing address $6D80Writing address $6E00Writing address $6E80Writing address $6F00Writing address $6F80Writing address $7000Flashing page 7000
Commit Page: 0x3800 -> 0x3800
Writing address $7080Flashing page 7080
Commit Page: 0x3840 -> 0x3840
Writing address $7100Flashing page 7100
Commit Page: 0x3880 -> 0x3880
Writing address $7180Flashing page 7180
Commit Page: 0x38C0 -> 0x38C0
Writing address $7200Flashing page 7200
Commit Page: 0x3900 -> 0x3900
Writing address $7280Flashing page 7280
Commit Page: 0x3940 -> 0x3940
Writing address $7300Flashing page 7300
Commit Page: 0x3980 -> 0x3980
Writing address $7380Flashing page 7380
Commit Page: 0x39C0 -> 0x39C0
Writing address $7400Flashing page 7400
Commit Page: 0x3A00 -> 0x3A00
Writing address $7480Flashing page 7480
Commit Page: 0x3A40 -> 0x3A40
Writing address $7500Flashing page 7500
Commit Page: 0x3A80 -> 0x3A80
Writing address $7580Flashing page 7580
Commit Page: 0x3AC0 -> 0x3AC0
Writing address $7600Flashing page 7600
Commit Page: 0x3B00 -> 0x3B00
Writing address $7680Flashing page 7680
Commit Page: 0x3B40 -> 0x3B40
Writing address $7700Flashing page 7700
Commit Page: 0x3B80 -> 0x3B80
Writing address $7780Flashing page 7780
Commit Page: 0x3BC0 -> 0x3BC0
Writing address $7800Flashing page 7800
Commit Page: 0x3C00 -> 0x3C00
Writing address $7880Flashing page 7880
Commit Page: 0x3C40 -> 0x3C40
Writing address $7900Flashing page 7900
Commit Page: 0x3C80 -> 0x3C80
Writing address $7980Flashing page 7980
Commit Page: 0x3CC0 -> 0x3CC0
Writing address $7A00Flashing page 7A00
Commit Page: 0x3D00 -> 0x3D00
Writing address $7A80Flashing page 7A80
Commit Page: 0x3D40 -> 0x3D40
Writing address $7B00Flashing page 7B00
Commit Page: 0x3D80 -> 0x3D80
Writing address $7B80Flashing page 7B80
Commit Page: 0x3DC0 -> 0x3DC0
Writing address $7C00Flashing page 7C00
Commit Page: 0x3E00 -> 0x3E00
Writing address $7C80Flashing page 7C80
Commit Page: 0x3E40 -> 0x3E40
Writing address $7D00Flashing page 7D00
Commit Page: 0x3E80 -> 0x3E80
Writing address $7D80Flashing page 7D80
Commit Page: 0x3EC0 -> 0x3EC0
Writing address $7E00Flashing page 7E00
Commit Page: 0x3F00 -> 0x3F00
Writing address $7E80Flashing page 7E80
Commit Page: 0x3F40 -> 0x3F40
Writing address $7F00Flashing page 7F00
Commit Page: 0x3F80 -> 0x3F80
Writing address $7F80Flashing page 7F80
Commit Page: 0x3FC0 -> 0x3FC0
Programming done 
Setting fuses
Set Lock Fuse to: F -> E000

Verifing flash...
verification error at address 0x7FBE Should be 0x0 not 0xE1
Failed to verify chip

log with optiboot hex image:

Starting Program Mode [OK]

Reading signature:9587
Searching for image...
Found "atmega32u4.hex" for atmega32u4

Erasing chip

Setting fuses
Set Lock Fuse to: 3F -> E000  Set Low Fuse to: FF -> A000  Set High Fuse to: D8 -> A800  Set Ext Fuse to: CB -> A400
Verifying fuses...

Lock Fuse: 3F is 3F  Low Fuse: 0xFF is 0xFF  High Fuse: 0xD8 is 0xD8  Ext Fuse: 0xCB is 0xCB
Fuses set & verified
Page size: 128
Chip size: 32768
Writing address $0Writing address $80Writing address $100Writing address $180Writing address $200Writing address $280Writing address $300Writing address $380Writing address $400Writing address $480Writing address $500Writing address $580Writing address $600Writing address $680Writing address $700Writing address $780Writing address $800Writing address $880Writing address $900Writing address $980Writing address $A00Writing address $A80Writing address $B00Writing address $B80Writing address $C00Writing address $C80Writing address $D00Writing address $D80Writing address $E00Writing address $E80Writing address $F00Writing address $F80Writing address $1000Writing address $1080Writing address $1100Writing address $1180Writing address $1200Writing address $1280Writing address $1300Writing address $1380Writing address $1400Writing address $1480Writing address $1500Writing address $1580Writing address $1600Writing address $1680Writing address $1700Writing address $1780Writing address $1800Writing address $1880Writing address $1900Writing address $1980Writing address $1A00Writing address $1A80Writing address $1B00Writing address $1B80Writing address $1C00Writing address $1C80Writing address $1D00Writing address $1D80Writing address $1E00Writing address $1E80Writing address $1F00Writing address $1F80Writing address $2000Writing address $2080Writing address $2100Writing address $2180Writing address $2200Writing address $2280Writing address $2300Writing address $2380Writing address $2400Writing address $2480Writing address $2500Writing address $2580Writing address $2600Writing address $2680Writing address $2700Writing address $2780Writing address $2800Writing address $2880Writing address $2900Writing address $2980Writing address $2A00Writing address $2A80Writing address $2B00Writing address $2B80Writing address $2C00Writing address $2C80Writing address $2D00Writing address $2D80Writing address $2E00Writing address $2E80Writing address $2F00Writing address $2F80Writing address $3000Writing address $3080Writing address $3100Writing address $3180Writing address $3200Writing address $3280Writing address $3300Writing address $3380Writing address $3400Writing address $3480Writing address $3500Writing address $3580Writing address $3600Writing address $3680Writing address $3700Writing address $3780Writing address $3800Writing address $3880Writing address $3900Writing address $3980Writing address $3A00Writing address $3A80Writing address $3B00Writing address $3B80Writing address $3C00Writing address $3C80Writing address $3D00Writing address $3D80Writing address $3E00Writing address $3E80Writing address $3F00Writing address $3F80Writing address $4000Writing address $4080Writing address $4100Writing address $4180Writing address $4200Writing address $4280Writing address $4300Writing address $4380Writing address $4400Writing address $4480Writing address $4500Writing address $4580Writing address $4600Writing address $4680Writing address $4700Writing address $4780Writing address $4800Writing address $4880Writing address $4900Writing address $4980Writing address $4A00Writing address $4A80Writing address $4B00Writing address $4B80Writing address $4C00Writing address $4C80Writing address $4D00Writing address $4D80Writing address $4E00Writing address $4E80Writing address $4F00Writing address $4F80Writing address $5000Writing address $5080Writing address $5100Writing address $5180Writing address $5200Writing address $5280Writing address $5300Writing address $5380Writing address $5400Writing address $5480Writing address $5500Writing address $5580Writing address $5600Writing address $5680Writing address $5700Writing address $5780Writing address $5800Writing address $5880Writing address $5900Writing address $5980Writing address $5A00Writing address $5A80Writing address $5B00Writing address $5B80Writing address $5C00Writing address $5C80Writing address $5D00Writing address $5D80Writing address $5E00Writing address $5E80Writing address $5F00Writing address $5F80Writing address $6000Writing address $6080Writing address $6100Writing address $6180Writing address $6200Writing address $6280Writing address $6300Writing address $6380Writing address $6400Writing address $6480Writing address $6500Writing address $6580Writing address $6600Writing address $6680Writing address $6700Writing address $6780Writing address $6800Writing address $6880Writing address $6900Writing address $6980Writing address $6A00Writing address $6A80Writing address $6B00Writing address $6B80Writing address $6C00Writing address $6C80Writing address $6D00Writing address $6D80Writing address $6E00Writing address $6E80Writing address $6F00Writing address $6F80Writing address $7000Writing address $7080Writing address $7100Writing address $7180Writing address $7200Writing address $7280Writing address $7300Writing address $7380Writing address $7400Writing address $7480Writing address $7500Writing address $7580Writing address $7600Writing address $7680Writing address $7700Writing address $7780Writing address $7800Writing address $7880Writing address $7900Writing address $7980Writing address $7A00Writing address $7A80Writing address $7B00Writing address $7B80Writing address $7C00Writing address $7C80Writing address $7D00Writing address $7D80Writing address $7E00Flashing page 7E00
Commit Page: 0x3F00 -> 0x3F00
Writing address $7E80Flashing page 7E80
Commit Page: 0x3F40 -> 0x3F40
Writing address $7F00Flashing page 7F00
Commit Page: 0x3F80 -> 0x3F80
Writing address $7F80Flashing page 7F80
Commit Page: 0x3FC0 -> 0x3FC0
Programming done 
Setting fuses
Set Lock Fuse to: F -> E000

Verifing flash...
	Flash verified correctly!
Verifying fuses...

Lock Fuse: F is F
Fuses verified correctly!

The HEX image used is below :

const image_t PROGMEM image_32u4 = { {"atmega32u4.hex"}, {"atmega32u4"}, 0x9587, // Signature bytes for 32u4 {0x3F, 0xFF, 0xD8, 0xCB}, // pre program fuses (prot/lock, low, high, ext) {0x0F, 0x0 , 0x0 , 0x0}, // post program fuses {0x3F, 0xFF, 0xD8, 0xCB}, // fuse mask 32768, // size of chip flash in bytes 128, // size in bytes of flash page { ":1070000055C000006EC000006CC000006AC00000E7\n" ":1070100068C0000066C0000064C0000062C00000DC\n" ":1070200060C000005EC00000DAC400005AC000006A\n" ":1070300058C0000056C0000054C0000052C00000FC\n" ":1070400050C0000076C000004CC000004AC00000E4\n" ":1070500048C0000046C0000044C0000042C000001C\n" ":1070600040C000003EC000003CC000003AC000002C\n" ":1070700038C0000036C0000034C0000032C000003C\n" ":1070800030C000002EC000002CC000002AC000004C\n" ":1070900028C0000026C0000024C0000022C000005C\n" ":1070A00020C000001EC000001CC0000011241FBE34\n" ":1070B000CFEFDAE0DEBFCDBF11E0A0E0B1E0EEEF50\n" ":1070C000FEE702C005900D92AA3CB107D9F711E086\n" ":1070D000AAECB1E001C01D92A03EB107E1F781D357\n" ":1070E0000CC78ECFF89410926F001092810010920E\n" ":1070F00085001092840081E085BF15BE47980C94EE\n" ":10710000000008952091D4013091D5012F5F3F4FA9\n" ":107110003093D5012093D401932F37FF03C08EEF16\n" ":10712000831B982F990F921710F447980895479A48\n" ":1071300008951F920F920FB60F9211242F938F93E1\n" ":107140009F93EF93FF93109285001092840080919B\n" ":10715000CA019091CB01009729F001979093CB0140\n" ":107160008093CA018091CC019091CD01009729F0C4\n" ":1071700001979093CD018093CC01E0E0F0E0859100\n" ":1071800094918F5F9F4F49F08091CE019091CF01F4\n" ":1071900001969093CF018093CE01FF91EF919F9143\n" ":1071A0008F912F910F900FBE0F901F90189584E034\n" ":1071B0008093E9000DC08091E8008B778093E80010\n" ":1071C00003C08EB3882351F08091E80082FFF9CF8D\n" ":1071D0008091E80085FFEFCF8091F1000895982F0E\n" ":1071E00083E08093E9008091E80085FD0DC08091E7\n" ":1071F000E8008E778093E80003C08EB3882361F0A7\n" ":107200008091E80080FFF9CF9093F10084E690E050\n" ":107210009093CB018093CA0108954F925F926F9231\n" ":107220007F928F929F92AF92BF92CF92DF92EF9216\n" ":10723000FF920F931F93CF93DF9384E08093E90035\n" ":107240008091E80082FF56C284E690E09093CD01E1\n" ":107250008093CC01ACDF182F853481F48CE195E26A\n" ":107260009093CF018093CE0107B600FCFDCFF99932\n" ":10727000FECF81E180935700E89503C0843519F46F\n" ":1072800096DF8DE00DC28C34E1F38035D1F3843785\n" ":1072900021F484E4A4DF80E003C2813611F489E59F\n" ":1072A000FFC18134B1F483DF182F81DF90E0880FB4\n" ":1072B000991FAA2797FDA095BA2F312F330F20E0F1\n" ":1072C000442737FD4095542F822B932BA42BB52BAD\n" ":1072D000B8C1803711F483E5E3C1833549F4C0E0D8\n" ":1072E000D1E089917CDF21E0C730D207D1F7D9C145\n" ":1072F000863521F481E373DF80E3D2C1833731F433\n" ":1073000087E86DDF85E96BDF8EE1CAC18536B9F4A8\n" ":10731000E0E0F0E093E085E090935700E89507B651\n" ":1073200000FCFDCF80935700E89507B600FCFDCF29\n" ":10733000E058FF4FA0E7E030FA0771F7A2CF82379D\n" ":1073400039F4E1E0F0E089E0809357008491A8C12E\n" ":10735000863439F4E0E0F0E089E0809357008491CE\n" ":107360009FC18E3439F4E3E0F0E089E08093570068\n" ":10737000849196C1813539F4E2E0F0E089E08093B0\n" ":10738000570084918DC1823631F489E528DF80E091\n" ":1073900026DF80E885C1823419F0873609F0E5C020\n" ":1073A0001092CF011092CE0102DF082F00DFF82EDD\n" ":1073B000FEDE682E8554823008F071C1902F80E087\n" ":1073C000CF2DD0E0C82BD92B10926F00173609F0C3\n" ":1073D0004BC081E180935700E895DD24CC24C39411\n" ":1073E0003FC0E090D001F090D1010091D201109106\n" ":1073F000D301B6E46B16D9F4ED2DF0E0EE29FF29A8\n" ":10740000E4918E2FECDEDD2081F082E090E0A0E0C0\n" ":10741000B0E0E80EF91E0A1F1B1FE092D001F092A7\n" ":10742000D1010093D2011093D301DC2418C0D801FC\n" ":10743000C701B695A7959795879549D5D0DE82E087\n" ":1074400090E0A0E0B0E0E80EF91E0A1F1B1FE092DA\n" ":10745000D001F092D1010093D2011093D301219772\n" ":10746000209709F0BECF7DC08090D0019090D101CF\n" ":10747000A090D201B090D30196E4691609F05DC0E6\n" ":1074800083E0F40180935700E89507B600FCFDCF38\n" ":1074900054C0F6E46F1661F5772031F1E090D00129\n" ":1074A000F090D1010091D2011091D30180DED82E4D\n" ":1074B000CC24852D90E08C299D29F7010C01409268\n" ":1074C0005700E895112482E090E0A0E0B0E0E80EDB\n" ":1074D000F91E0A1F1B1FE092D001F092D101009308\n" ":1074E000D2011093D30102C062DE582E742423C04F\n" ":1074F000E090D001F090D1010091D2011091D30120\n" ":1075000016950795F794E79452DE682FC701E7D4E4\n" ":107510008091D0019091D101A091D201B091D3017D\n" ":107520000296A11DB11D8093D0019093D101A0932B\n" ":10753000D201B093D301219704C055247724442469\n" ":107540004394209709F0A5CF96E4691641F485E0AD\n" ":10755000F40180935700E89507B600FCFDCF8DE05D\n" ":107560003EDE82E080936F009CC0833471F4009112\n" ":10757000D0011091D1011BDE90E021E0F8010C0157\n" ":1075800020935700E89511247CCE833619F5E090BE\n" ":10759000D001F090D1010091D2011091D30107DE0A\n" ":1075A000F701E16090E021E00C0120935700E8959D\n" ":1075B000112482E090E0A0E0B0E0E80EF91E0A1F7E\n" ":1075C0001B1FE092D001F092D1010093D2011093E1\n" ":1075D000D30157CE8D3661F4E091D001F091D10105\n" ":1075E00085E080935700E89507B600FCFDCF49CEB3\n" ":1075F000823551F4E091D001F091D10105911491BF\n" ":10760000812FEDDD802F4CC0843421F5E090D00136\n" ":10761000F090D1010091D2011091D30116950795F8\n" ":10762000F794E794C4DD682FC70159D48091D00145\n" ":107630009091D101A091D201B091D3010296A11DE8\n" ":10764000B11D8093D0019093D101A093D201B0934A\n" ":10765000D30117CE843609F5E090D001F090D10126\n" ":107660000091D2011091D301D801C701B695A79519\n" ":10767000979587952CD4B3DD82E090E0A0E0B0E050\n" ":10768000E80EF91E0A1F1B1FE092D001F092D101F3\n" ":107690000093D2011093D30104C08B3111F08FE31A\n" ":1076A0009EDD83E08093E9009091E8008091E800FE\n" ":1076B0008E778093E80095FF04C010C08EB38823B6\n" ":1076C000C9F08091E80080FFF9CF8091E8008E77C3\n" ":1076D0008093E80003C08EB3882361F08091E800B6\n" ":1076E00080FFF9CF84E08093E9008091E8008B77F8\n" ":1076F0008093E800DF91CF911F910F91FF90EF9061\n" ":10770000DF90CF90BF90AF909F908F907F906F90C1\n" ":107710005F904F9008959091D801892F8F77813293\n" ":1077200049F58091D9018032A1F0813219F5913A61\n" ":1077300009F58091E800877F8093E8008DE091E073\n" ":1077400067E070E0FBD18091E8008B778093E800E0\n" ":107750000895913279F48091E800877F8093E80062\n" ":107760008DE091E067E070E04DD28091E8008E7787\n" ":107770008093E800089582E061EC42E0A7D083E0C6\n" ":1077800061E842E1A3D084E060E842E19FC084B7B1\n" ":10779000877F84BF88E10FB6F894809360001092D1\n" ":1077A00060000FBE20E880E090E00FB6F8942093D0\n" ":1077B0006100809361000FBE81E085BF92E095BFBC\n" ":1077C0003F9AE1E6F0E0208310824798109289000A\n" ":1077D0008DE78093880090936F0083E08093810011\n" ":1077E000E6C04091000850910108109201081092E3\n" ":1077F000000824B714BE88E10FB6F89480936000A7\n" ":10780000109260000FBEE0E0F0E0859194918F5FF0\n" ":107810009F4F71F020FD0BC021FD0AC0283041F4BC\n" ":107820008091090190910A014817590709F05ADC23\n" ":10783000AEDF78941092CF011092CE010CC0EDDC37\n" ":1078400034D38091CE019091CF018151974210F0B5\n" ":107850001092140157DC80911401882381F78091E4\n" ":10786000E00081608093E0003DDC80E090E00895DE\n" ":10787000FA01923049F0933061F09130F9F485E1EA\n" ":1078800091E022E130E01EC087E291E02EE330E09B\n" ":1078900019C0882329F485E691E024E030E012C085\n" ":1078A000813029F489E691E022E230E00BC0823099\n" ":1078B00029F487E991E028E130E004C080E090E01D\n" ":1078C00020E030E091838083C90108958093E9002E\n" ":1078D0008091EB0081608093EB001092ED0060934B\n" ":1078E000EC004093ED008091EE00881F8827881FF0\n" ":1078F00008958091D80188238CF403C08EB3882327\n" ":10790000B1F08091E80082FFF9CF8091E8008B7799\n" ":107910008093E80008958EB3882349F08091E800B1\n" ":1079200080FFF9CF8091E8008E778093E80008957A\n" ":10793000EF92FF920F931F9345D04CD008ED10E0CB\n" ":10794000F80180818F778083808180688083808147\n" ":107950008F7D808319BC1EBA1092D60180EEE82E6E\n" ":10796000F12CF70180818B7F8083F8018081816019\n" ":10797000808380E060E042E0A9DFE1EEF0E080811A\n" ":107980008E7F8083E2EEF0E0808181608083808161\n" ":1079900088608083F70180818E7F8083F8018081F9\n" ":1079A000806180831F910F91FF90EF900895E7ED24\n" ":1079B000F0E08081816080838AE482BF81E08093EF\n" ":1079C000D701B6CFE8EDF0E080818E7F8083109202\n" ":1079D000E20008951092DA001092E10008951F92DB\n" ":1079E0000F920FB60F9211242F933F934F935F93F3\n" ":1079F0006F937F938F939F93AF93BF93EF93FF9377\n" ":107A00008091DA0080FF1AC08091D80080FF16C0F4\n" ":107A10008091DA008E7F8093DA008091D90080FF18\n" ":107A20000AC019BC82E089BD09B400FEFDCF81E027\n" ":107A30008EBB3AD203C019BC1EBA36D28091E10087\n" ":107A400080FF17C08091E20080FF13C08091E200A8\n" ":107A50008E7F8093E2008091E20080618093E2005B\n" ":107A60008091D80080628093D80019BC85E08EBBDD\n" ":107A70001BD28091E10084FF2BC08091E20084FF43\n" ":107A800027C019BC82E089BD09B400FEFDCF8091FA\n" ":107A9000D8008F7D8093D8008091E1008F7E809305\n" ":107AA000E1008091E2008F7E8093E2008091E2000D\n" ":107AB00081608093E2008091D601882331F4809127\n" ":107AC000E30087FD02C081E001C084E08EBBECD101\n" ":107AD0008091E10083FF21C08091E20083FF1DC0FF\n" ":107AE0008091E100877F8093E10082E08EBB10925D\n" ":107AF000D6018091E1008E7F8093E1008091E200C9\n" ":107B00008E7F8093E2008091E20080618093E200AA\n" ":107B100080E060E042E0DADEC7D1FF91EF91BF91F3\n" ":107B2000AF919F918F917F916F915F914F913F9115\n" ":107B30002F910F900FBE0F901F9018959C014091B0\n" ":107B4000DE015091DF014617570718F4F90190E064\n" ":107B500044C06115710511F0AB01F8CF8091E800C8\n" ":107B60008E778093E80040E050E0F0CF8EB388231A\n" ":107B700009F444C0853009F443C08091E80083FFD4\n" ":107B800002C081E008958091E80082FD31C08091BB\n" ":107B9000E80080FF22C08091F3009091F200782FDE\n" ":107BA00060E0292F30E0262B372B07C0819180938E\n" ":107BB000F100415050402F5F3F4F4115510519F0E2\n" ":107BC0002830310598F390E02830310509F491E030\n" ":107BD0008091E8008E778093E8004115510531F6D9\n" ":107BE000992321F605C08EB3882341F0853041F0FA\n" ":107BF0008091E80082FFF7CF80E0089582E0089549\n" ":107C000083E008959C016115710529F48091E800D5\n" ":107C10008B778093E800F90126C08EB3882391F119\n" ":107C2000853091F18091E80083FF02C081E00895E2\n" ":107C30008091E80082FFF1CF06C08091F10081932E\n" ":107C40006150704059F02091F3008091F200322F82\n" ":107C500020E090E0822B932B892B79F78091E8002C\n" ":107C60008B778093E80061157105B9F605C08EB376\n" ":107C7000882341F0853041F08091E80080FFF7CF04\n" ":107C800080E0089582E0089583E008950F931F93A4\n" ":107C9000DF93CF9300D0CDB7DEB7E8EDF1E0809170\n" ":107CA000F100819381E0E03EF807C9F734DD80916F\n" ":107CB000E80083FFE4C08091D8019091D90195300C\n" ":107CC00009F46DC0963040F4913081F1913070F03C\n" ":107CD000933009F0D4C02AC0983009F4A3C0993079\n" ":107CE00009F4B2C0963009F0CAC07CC0803809F4EB\n" ":107CF000C6C0823809F0C3C08091DC0187708093D0\n" ":107D0000E9008091EB001092E9002091E800277FC4\n" ":107D10002093E80090E025E0969587952A95E1F775\n" ":107D200081708093F1001092F10087C0882319F0D0\n" ":107D3000823009F0A4C08F71823009F0A0C0809118\n" ":107D4000DA01882331F52091DC01277009F497C00E\n" ":107D50002093E9008091EB0080FF1BC0933021F459\n" ":107D60008091EB00806213C08091EB008061809372\n" ":107D7000EB0081E090E002C0880F991F2A95E2F79E\n" ":107D80008093EA001092EA008091EB008860809373\n" ":107D9000EB001092E9008091E800877F51C08823B2\n" ":107DA00009F06DC01091DA011F770FB7F894809138\n" ":107DB000E800877F8093E8009CDD8091E80080FFE9\n" ":107DC000FCCF8091E3008078812B8093E300806872\n" ":107DD0008093E300112311F482E001C083E08EBBA5\n" ":107DE0000FBF4DC08058823008F049C08091DA0141\n" ":107DF0009091DB016091DC01AE014F5F5F4F38DD98\n" ":107E0000BC01009709F43BC08091E800877F809314\n" ":107E1000E80089819A8192DE8091E8008B778093D7\n" ":107E2000E8002DC0803859F58091E800877F809365\n" ":107E3000E8008091D6018093F1008091E8008E7770\n" ":107E40008093E80056DD1BC08823C9F49091DA01C5\n" ":107E50009230A8F48091E800877F8093E8009093A7\n" ":107E6000D60147DD8091D601882331F48091E3006B\n" ":107E700087FD02C081E001C084E08EBB7CDC809184\n" ":107E8000E80083FF0AC08091EB0080628093EB00E2\n" ":107E90008091E800877F8093E8000F900F90CF914A\n" ":107EA000DF911F910F91089508951F938EB388233A\n" ":107EB00061F01091E9001092E9008091E80083FFE1\n" ":107EC00001C0E4DE17701093E9001F910895F9993D\n" ":107ED000FECF92BD81BDF89A992780B50895262FCF\n" ":107EE000F999FECF1FBA92BD81BD20BD0FB6F8949F\n" ":0E7EF000FA9AF99A0FBE01960895F894FFCF02\n" ":107EFE004341544552494E41007777000800000037\n" ":107F0E00000000080112011001020000089A230C63\n" ":107F1E000001000201000109023E00020100803250\n" ":107F2E0009040000010202010005240010010424CE\n" ":107F3E0002040524060001070582030800FF090458\n" ":107F4E000100020A000000070504021000010705E7\n" ":107F5E00830210000104030904220341006400613E\n" ":107F6E00006600720075006900740020004600650E\n" ":107F7E00006100740068006500720020003300325A\n" ":107F8E0000750034000000180341006400610066B3\n" ":107F9E00007200750069007400200049006E0064D4\n" ":107FAE000075007300740072006900650073002094\n" ":0A7FBE00004C004C004300000000DE\n" ":040000030000700089\n" ":00000001FF\n" } };

own hex code problem

thank you very much for providing this project. the example can be flashed without problems. However, when I insert my own hex file, this error message always comes up. what can be the reason?

without bootloader
Flashing page 1A00
Commit Page: 0xD00 -> 0xD00
Writing address $ 1A80
Bad hex digit!

with bootloader:
Fuses set & verified
Page size: 128
Chip size: 32768
Writing address $ 0
Too much code

Suggestion: Use raw literals for the hex file

Since C++11 (which the Arduino IDE has enabled for quite some time now), raw string literals are supported. These are easy multi-line string literals, which would make it even easier to paste a hex file into images.cpp. Instead of

{
":107E0000112494B714BE892F8D7011F0892FDED004\n"
":107E100085E08093810082E08093C00088E18093B8\n"
}

you could write

{R"(
:107E0000112494B714BE892F8D7011F0892FDED004
:107E100085E08093810082E08093C00088E18093B8
)"}

Note the absence of the double quotes and \n around each line, which allows directly pasting from a hex file. It seems this is already supported as-is, but it would be nice to use these in the example in images.cpp, so people know right away.

Invalid HEX digit

When I tried to put my HEX file inside the images.cpp instead of optiboot_atmega328.hex I got an error saying invalid hex digit.

The way how I put the content in images.cpp is that I just open my hex with text editor, and added \n" to the end and " at the beginning of each line.

Sketch was compiled and uploaded successfully but when I press button I got error which I mentioned above.

Any idea why?

Also, what's this: 128, // size in bytes of flash page, what flash page represent, and should I change that when I want to use my custom hex?

Fuses not set on blank IC

Fuses are not being set on blank ATMega328P-PU. Program report error during the fuse verification process, followed by constant beeping sound. Once fuses are set (with some other tool (not really standalone if we need additional tool for that)), program works.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.