Go Down

Topic: 100 nF capacitor on RESET pin (Read 3153 times) previous topic - next topic

alkalin

Hello,

Just out of curiosity, what does the 100 nF cap un reset do? It is there on the DTR pin going to reset from the USB-Serial converter, but not on the ISP reset... I tried and without it i get the error : "avrdude: stk500_getsync(): not in sync: resp=0x00"


Thanks,
Al

MarkT

Its a glorious hack to allow the remote programming via USB - the DTR line is depenent on whether there's a serial
connection I think - to program the connection is broken and remade and a short reset pulse is generated so the
bootloader code gets to run and start talking serial to the host.
[ I will NOT respond to personal messages, I WILL delete them, use the forum please ]

CaptainJack

In most arduino builds the reset is pulled high with a pullup-resistor, so it doesn't reset. If a new sketch gets uploaded, DTR is going LOW, making the RESET pin go LOW as well. As far as I understand, the DTR pin is LOW for a certain amount of time, which is too long for the RESET pulse of the arduino: the RESET pin has to be pulled HIGH in a shorter time than DTR goes HIGH again. To accomplish this a capacitor is added between RESET and DTR, the capacitor charges (through the pull-up resistor) and reaches +5V again in about the right time for the arduino to see the signal as a RESET signal. As soon as DTR goes HIGH again the capacitor is discharged and is ready for the next RESET signal from DTR.

Grumpy_Mike

Quote
which is too long for the RESET pulse of the arduino:

There is no such thing as a reset pulse that is too long.

DTR is low all the time the serial port is active. The capacitor turns that level into a pulse, if it did then the arduino would be held permanently in reset, maybe that is what you mean by too long? It is also pulsed again when the serial port is deactivated, so a reset happens then as well.

CaptainJack

It is what I meant, but I didn't know DTR stayed low for the entire time the serial port is active. We live and learn :)

MarkT

DTR = "Data Terminal Ready"
CTS = "Clear To Send"
etc etc - in the old days a serial connection was to a modem and the modem had various
control and status bits to worry about - which is why the original serial cables/connectors had 15
wires!!
[ I will NOT respond to personal messages, I WILL delete them, use the forum please ]

BrianLarry

Why I use 100 nf, mark 104 capacitor but fail in use TTL , and change it to 1 nf (102) it just can upload code,what wrong :smiley-confuse: ?

Grumpy_Mike

Quote
what wrong
Resurrecting a 3 year old thread that is what is wrong.

So a 1nF works but a 100nF doesn't then? No you must have a faulty capacitor or more likely it was not wired up correctly.

Ryutaku

So if I understand... The cap allows to syncro the pulse allowing to make an instant pulse.? Is there any information about this? I thought it was decoupling cap. I really want to know the theory because right now Im programming Arduino through Bluetooth and the tutorial says that I need a cap between STATUS ( from HC 05) and RESET (Arduino). Thanks for help. Sorry for resurrect a 4 years old thread.

Grumpy_Mike

#9
Mar 01, 2017, 11:25 am Last Edit: Mar 01, 2017, 11:27 am by Grumpy_Mike
The cap turns a change in level into a pulse.
Suppose the left side of the cap is high and the right side is low. The capacitor is charged.
If the left side suddenly goes low the cap is still charged so the other side of the cap MUST go to a negitave voltage of the same size ( but different sign ) as the origional voltage across the cap to preserve the energy in the cap.

The cap can now discharge and this negitave voltage is removed. Thus a high to low transition on one side produces a negitave pulse on the other.

The reverse happens when the low on the input changes to a high, a positive pulse is produced on the other side.

Go Up