Electronic – arduino – the cap for in Arduino reset circuit

arduinocapacitormicrocontroller

My Arduino AtMega328P board has this circuit for reset. I understand the switch (LTSpice didn't have a switch symbol) pulls the line low, thats obvious, but what does the cap do when reset comes through DTR? Does it invert the signal or only allow a pulse?

enter image description here

Best Answer

Yes.

It converts the level-triggered signal DTR into an edge-triggered signal and has the effect of level shifting it to within the operating voltage range of the MCU (+/- a forward diode drop).

DTR (Data Terminal Ready) is a signal line used for hardware flow-control in various EIA serial protocols (such as EIA-232). In your case, it is being "hacked" to serve as a host-initiated reset of your microcontroller.

Ease-of-use

The host has software control over the state of the DTR line, but implementing a short pulse may not be possible due to scheduling or other tasking in the way.

Speed

Perhaps you want a really fast reset (you don't want a user to notice the micro went through a reset), this wouldn't be possible with software control of the reset line directly through DTR. You'd have to send a low-level, then a high-level via your host software.

Level Translation

The DTR line may be at EIA-232 levels, many volts higher (and lower) than the microcontroller can safely tolerate. AC coupling the reset edge severely limits the current (waveform energy) such that it may be safely clamped by the ESD protection diodes attached to the reset pin inside the microchip.