Arduino Due Design Flaw: Due Won't Start After Power-Off-On, Requires Reset
I had noticed the problem with resetting the Arduino Due for a while and finally started looking into a solution. In detail, the Arduino Due doesn't reliably start running its sketch after power is applied. This applies when power is applied per USB or through the external power supply. If power is removed for less than five seconds, the board will restart and run fine, but longer times will result in the described problem.
I cannot say with 100% certainty that this is a real design flaw, or if it affects only "clones." According to one forum entry I found, "On power-on the board may start to the bootloader instead of running the onboard program, as if the ERASE button had been pressed. Pressing "reset" resumes normal operation. The bug appears to be caused by undocumented behaviour in the ATSAM3X8E microcontroller regarding the "erase" input pin - according to the specification we shouldn't ever be seeing this."
The solution is fairly easy at first glance but may result into problems for those who don't have the proper equipment to solder a surface mount resistor (just like yours truly). Nevertheless, I managed to solder a regular 10k resistor onto the board.
In detail, it appears that a resistor is missing in the original design, even though the schematics do include it:
The component in question is R99 as shown above. The fix is to solder a surface mount resistor (0603 size) between the ERASE_CMD line and +3.3V, close to FET T3. In practice, solder it across the 2 upper pins of T3:
The FET T3 is in the middle of the picture, just to the right of the 6-pin SPI connector. Here is a picture of a fixed DUE with a 10k resistor that was soldered across the pins of T3:
However, if you don't have the right equipment to solder a surface mount resistor, there is a different solution:
I soldered a regular 10k resistor between the FET's G pin and the first pin of the Debug header (3.3 VDC). I tested this setup, and it works fine.
Rather than yet another project-based workbook, Arduino: A Technical Reference is a reference and handbook that thoroughly describes the electrical and performance aspects of an Arduino board and its software.
This book brings together in one place all the information you need to get something done with Arduino. It will save you from endless web searches and digging through translations of datasheets or notes in project-based texts to find the information that corresponds to your own particular setup and question.
Reference features include pinout diagrams, a discussion of the AVR microcontrollers used with Arduino boards, a look under the hood at the firmware and run-time libraries that make the Arduino unique, and extensive coverage of the various shields and add-on sensors that can be used with an Arduino. One chapter is devoted to creating a new shield from scratch.
The book wraps up with detailed descriptions of three different projects: a programmable signal generator, a "smart" thermostat, and a programmable launch sequencer for model rockets. Each project highlights one or more topics that can be applied to other applications.