-
Notifications
You must be signed in to change notification settings - Fork 27
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Voltage spike on RESET when Serial port is closed #6
Comments
I just tested this on a scope, and I'm getting about 1.5 x Vcc for about 100µs, with a clean slope from max of 1.5xVcc sloping down to about 1.25xVcc after 50µs, and down to Vcc at 100µs. I re-reviewed the Uno schematics, and I don't see a diode in their reset circuit. Am I missing it? http://arduino.cc/en/uploads/Main/arduino-uno-schematic.pdf |
Seems they added it in a later revision. I was looking at the Uno rev3 schematic: http://arduino.cc/en/uploads/Main/Arduino_Uno_Rev3-schematic.pdf |
Ah, gotcha. Yep, seems like a prudent addition. |
It looks like the later change to the Uno board also had an external pull-up on the reset line, of a 10kΩ pullup. I supposed we could add an explicit one too, and not rely on the internal RESET pullup? Found the same spec diode as the Uno one, but in a smaller package (http://datasheet.octopart.com/CD0603-S01575-Bourns-datasheet-8529516.pdf) I can add this in parallel with the 10kΩ to solidify the reset circuit. |
- Add 10k pull-up to reset line (#7) - Add diode in parallel to 10k pull-up reset resistor (#6) - Tie second pad on 16U2 crystal to ground (was not connected before) - Replace LDO with lower-ripple alternative (#8) (STLQ015XX33) - Add ground tie (0Ω) to pin 2 of balun - Change all caps in RF signal path to RF-rated C0G/NPO (Murata GRM series) - Reduce C7 and C8 to 100nF, and make C0G/NPO or X7R (<-Atmel engineer, could be 1.0µF instead) - Consider adding the SE2438T Front-end module (FEM) amplifier - Consider ferrite bead between digital and analog VDD lines - Consider decoupling of 0.1µF on all VDD/GND pin pairs - Move to a four layer board (GND/VDD in the middle two layers, signals on outer two) - Add VBUS voltage check (with voltage divider to kick 5v -> 3.3v) into RFR2 and 16U2 input - Change 16U2 to be powered via VBAT always, instead of off of VUSB - Tie 16U2 pin to RFR2 pin, to notify RFR2 when serial port is opened - Add series resistor to 16U2->RST line, removing existing reset circuit - Remove load switch from VUSB, as it's now unneeded
When the serial port is closed, the DTR pin goes from low to high. But since the capacitor in the reset line is already charged by this point, the voltage on the RESET pin becomes 2xVcc (DTR + capacitor charge) for a short while (until the capacitor discharges through the internal pullup of the RESET pin). I haven't verified this behaviour with a scope, but if it indeed happens, we should probably fix it, since it is out-of-spec behaviour (unless the reset pin is somehow more resistent to high voltages, which might actually be the case given there is something like high-voltage programming which might work on the RESET pin. Still, might be better to fix anyway - the voltage spike might also be visible on the reset pin on the header.
It seems that the Arduino Uno has a diode from RESET to VCC, which looks like it is essentially intended to kill this voltage spike.
The text was updated successfully, but these errors were encountered: