Confused about tutorial: "Arduino as ISP and Arduino Bootloaders"

There are so many forums here, that I am not sure if this is the right place to ask questions about the tutorial, Arduino as ISP and Arduino Bootloaders: (https://www.arduino.cc/en/tutorial/arduinoISP "Last revision: 2018/01/20 by SM").

My question is kind of related to "Bootloader Issues", so I hope I am in the right place. (If not, feel free to move this post, but leave a bread-crumb here to let me know where to look for the answer.)

I am confused as to whether an Arduino UNO R3, used as an ISP programmer, requires the 10 µF capacitor or not (between the programmer UNO's RESET and GROUND pins, to prevent the auto-reset problem).

There are two pictures in the tutorial that show connections for a UNO programming another UNO, and a UNO programming a NANO. Neither of these pictures show a capacitor on the UNO (used as the programmer). The pictures do show the extra ISP connector for the ATmega16U2, so I am assuming that these pictures show the UNO Rev 3 board as the ISP programmer.

The next picture shows a MEGA board used to program a UNO, and shows the 10 µF capacitor between the MEGA's RESET and GROUND pins. The comment underneath the picture says (emphasis added by me):

This type of board needs a 10µF electrolytic capacitor...

implying that this is a new and different requirement, than the connections shown in the previous two examples.

BUT THEN, the next paragraph says (emphasis added by me):

The 10µF electrolytic capacitor ... is needed only for the boards that have an interface between the microcontroller and the computer's USB, like Mega, UNO, Mini, Nano.

I know that the UNO design has changed over time and that earlier ones had the FTDI USB interface chip (and some UNO clones had or still have the CH340 or similar chip), and that these boards DO need the capacitor. I also know that the UNO Rev 3 uses the ATmega16U2 as the USB interface, but I am not sure if these boards need the capacitor or not.

So, does a UNO Rev 3 (with the ATmega16U2) need the 10 µF capacitor or not (when used as an ISP programmer)?

Could "SM" (or someone) please update the tutorial to remove this ambiguity, or explicitly state which UNO boards (if any) need the capacitor and which (if any) do not?

Thanks and best regards,
DuinoSoar

does a UNO Rev 3 (with the ATmega16U2) need the 10 µF capacitor or not (when used as an ISP programmer)?

Go ahead and use the 10uF cap all the time. Even in cases where it isn't needed, it won't hurt anything.
The purpose of the cap is to prevent auto-reset when the "burn" avrdude sequence opens the serial port of the "programmer." Normally, this reset would result in several seconds of the programmer running its bootloader, during which it is either unresponsive to avrdude's requests, or (worse) the bootloader ends up talking to avrdude instead of running the arduinoISP sketch, and then tries to program the wrong chip.

Any AVR that is not based on the 32u4 (eg, micro/leo/promicro and third party 32u4 boards) requires the cap.

DuinoSoar:
Could "SM" (or someone) please update the tutorial to remove this ambiguity, or explicitly state which UNO boards (if any) need the capacitor and which (if any) do not?

Thanks for pointing out the unclear documentation. I completely agree that this page needs to be improved and I have it on my "to do" list. We have a dedicated issue in the bug tracker about this:

Thank you for the responses.

@westfw: My main purpose in asking was in hoping I would not have to go find one. :wink: But I searched my junque box today ("junque" is just a higher-class form of "junk" ; ) and found some old electrolytics and even found one rated 10 µF at 35 V. But it must be at least 20 years old, so I hope it works okay. I found an "Arduino as Capacitance Meter" project somewhere on the web (forget where) and used that, and the cap measured in the right ballpark (around 11 µF), so I guess I can use that.

@DrAzzy: Thank you for clearing that up for me, Doctor.

@pert: And thank you for putting the documentation fix in the queue.

I think it might a good idea to use one of those four spare port pins and solder pads (on the ATmega16U2) for a jumper, to optionally disable the auto-boot when USB is connected to the UNO Rev 3. This would be specifically for "Arduino as ISP" mode, and possibly other applications where it would be detrimental to boot the UNO Rev 3 when USB is connected. This would have obviated the need for the extra component (10 µF capacitor).

Perhaps you "powers-that-be" might consider this for a future upgrade to the ATmega16U2 USB firmware. It would not even have to use a pair of solder pads - just one pad, where a user could solder a pin or wire, to temporarily connect to ground to disable auto-boot. :slight_smile:

Something to think about.

Thanks again and very best regards,
DuinoSoar.

The Uno and Nano do have a solder jumper you can cut to disable the auto-reset. I agree that it would have been nice if they put a jumper, but it's just one more component that 99.99% of users will never use (or worse, pull off and then wonder why they can't upload anymore).

I have used Arduino as ISP many times on various boards and I never once needed the capacitor until they changed from the stk500v1 protocol to the arduino protocol in the Arduino as ISP programmer definition. Due to all the problems it caused from people who could previously use their Arduino as ISP without capacitor who suddenly found it didn't work any more, that change will be reverted in the next release of Arduino AVR Boards.

a future upgrade to the ATmega16U2 USB firmware.

Meh. The number of people who need the 10uF cap and can't find it are probably about the same as the number of people who wouldn't be able to find a jumper...
Arduino could have gone to a more complex reset sequence when they started using the 16u2 (like the "set bitrate to 1200bps used on most direct-USB boards, but it's probably just as well they didn't. But the way things are makes the Uno a lot more backward compatible with prior versions and "derivatives" without a programmable USB controller.

If you'll be using burning bootloaders "often", it's trivial to set up an extra board with autoreset permanently disabled (or get a real programmer.) (but yeah, the tutorials have trouble keeping up...)