(My knowledge of analog circuit design is severely limited).

I am trying to generate a reset pulse for an AVR microcontroller. The reset is active LOW, and the maximum threshold voltage is 0.9V, with a pulse of no less than 2.5us.

I am trying to generate the required pulse from the DTS line of an RS232-Level signal. This means that the DTS line voltage is from ~-13V (inactive) to ~+13V (active).


simulate this circuit – Schematic created using CircuitLab

This is the best I could come up with, and it does not work. I have simulated using Spice, and depending on the ramp of the positive edge of the DTR pin, the RESET_N may never go under 2.5v.

The simulation from CircuitLab: Circuit Lab Simulation

The simulation from NI Multisim: Multisim Simulation

EDIT: Added Voltage points to the AVR Circuit to clarify that GND is common.


2 Answers 2


If you need a timed reset pulse off the RISING edge of the DTR signal try this circuit instead. This moves the timing capacitor into the base circuit where it can be managed much more easily.

enter image description here

My simulation shows that this produces a RESET_N pulse of about 30usec. You can adjust by playing with the values of C1 and R3.

  • \$\begingroup\$ Just tested this in Multisim, works perfectly - Nice clean reset signal. I used 5K for R3, gives a pulse of 6us under 0.9V. I will add the graphs to the question. Thanks! \$\endgroup\$
    – GCon
    Commented Apr 20, 2015 at 10:22
  • \$\begingroup\$ It seems that parasitic impedance, and the nature of the bootloader of the Arduino requires a longer pulse, so I also switched the ceramic cap from .001uF to .1uF \$\endgroup\$
    – GCon
    Commented Apr 20, 2015 at 19:08

Well first of all get rid of that capacitor C1. Connect the transistor collector directly to the reset of the AVR processor.

Also make sure that the GND of the AVR subsystem connects through to the GND of the DTR signal setup.

There is no reason to try to limit the reset pulse width with any capacitor here. Just make sure that the DTR goes to its ++V level for as long as you want the AVR reset to be asserted and then return DTR back to GND or the --V level.

  • \$\begingroup\$ Thanks for your reply! Unfortunately, DTR is HIGH for as long as the programming takes place (Using the Arduino IDE). It is something I have considered :( \$\endgroup\$
    – GCon
    Commented Apr 19, 2015 at 23:42
  • \$\begingroup\$ I see. Then you have two choices. One is to arrange an inversion in the circuit with another transistor stage so the AVR is in reset whilst the DTR is LOW. The other is to look at a circuit like I'll post in another answer. \$\endgroup\$ Commented Apr 19, 2015 at 23:48
  • \$\begingroup\$ Just to clarify: DTR HIGH should cause a reset (by pulling RESET_N LOW). \$\endgroup\$
    – GCon
    Commented Apr 19, 2015 at 23:51

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.