please add a jumper to disable auto reset

i second this request. its something that is very trivial, doesnt take up much space at all, and adds alot of value to the board for 'production' use. perhaps if the arduino folks dont do it, then one of the clones (boarduino, bbb, etc.) will add it.

Well, this solution was implemented on Arduino Severino (the s3v3 version here: http://www.arduino.cc/en/Main/ArduinoBoardSerialSingleSided3 ), and "the folks" like you said, have discussed with me about this feature (the jumper to disable auto reset), suggesting the software solution, but at the end they accepted the hardware (jumper) solution.

So, if someone else will use this feature, this will not be a novelty, because the arduino team already did it, accepting its implementation on the Severino board.

Does anyone (particularly those of you in favor of a jumper) have time to see if there's are any software solutions to this? That would allow more flexibility, e.g. the ability to decide when to reset and when not to (so you could either connect to a running program or upload a new sketch).

I don't know much of software (that's the reason of the jumper of Severino), but is it possible to do something using the high fuse byte RSTDIBL? I know it will kill the reset button too (I think it's possible to achieve reset by other ways), but do you think this can be one SW solution for this problem?

Like what, hacking the OS ? And I don't want the arduino ignore its reset button either.
A jumper is the cleanest way, not much to misconfigure, no getting lost in config files or other esoteric stuff.

I know this is not going to change the current pcb layout (maybe not even the updates), so it would be nice if at least a detailed image of the R2/R3 location were available on the webpage + some tips on how to remove it without killing/scratching/blemishing/desecrating the board. I guess the typical newbie arduino user would know how to get rid of non smd parts right away, but this - to me - barely visible smd capa. cost me some thinking around corners :slight_smile:

I believe there are some parameters you can set on the serial port to explicitly control the DTR line that we're using for the auto-reset. No OS hacking required. The Diecimila is intended particularly for beginners, so I inclined to prefer the simplicity of omitting the jumper. We're also looking into boards that are better for permanent installation, where this sort of thing makes more sense.

one thing that would work pretty well would be to use one of the FT233RL bitbang pins instead of the DTR pin. Then you'd use libftdi to twiddle that pin to reset the Arduino instead of relying on DTR. Another nice thing is that a capacitor isnt necessary anymore. Disabling the pin is pretty easy, just use MProg or set it to an input via libftdi when not resetting in the IDE

Umm, can't you just d ike the reset cap? It would probably be the most rewarding part of someones day :smiley:

edit, or just cut the reset trace, and wipe something green (or blue or whatever) on it if you are really worried about appearances.

one thing that would work pretty well would be to use one of the FT233RL bitbang pins instead of the DTR pin...

that sounds like a sensible hardware/software solution.
still it would need a change of the pcb too and adds some (maybe minor) complexity on the configuration side. if the "new" auto reset were included within the ide, users would not have to deal with it themselves, hopefully.
unfortunately I'm not quite sure what this would do to backward compatibility.

I still favour the jumper though, hardware only, no change in software :wink:

I like LadyAda's bitbang pin solution, as it would do nothing in the face of "standard" serial port connections on "typical" systems (whatever those are). I don't know how portable it would be, though, and in my mind one of the Arduino's biggest selling points is the cross platform support.

The FTDI bitbang solution would require some Arduino PCB support (or some field expedient "ECO upgrades") as well. If you're going to change the board, might as well just add the jumper and leave the software alone...

Maybe make the jumper small and unobtrusive, like the little solder-bridge type jumpers that don't even require a PTH?

Hmm, on an alternative note, is there some way to disable the handshake pins in the FTDI chip using the FTDI tools?

-j

Hmm, on an alternative note, is there some way to disable the handshake pins in the FTDI chip using the FTDI tools?

Hmm... Could probably disable the FTDI rts and/or dtr pins with a little 50 volt tap on it too, wouldn't even leave a mark :slight_smile: Might take out pin 1 on the atmega too, but don't know if that matters for this application. Could ground pin 1 also to keep it safe too. Depends on the exact board in question.

Is that still a software solution? You are basically sending a signal to the fdti chip to tell those pins "you die now!" :wink:

I like ladyada's FTDI bitbang idea too. Changes to the software can be good things, since it's much more flexible than the hardware.

Another idea is a solder bridge, so that it would be relatively easy for advanced users to unsolder the connection, but a beginner would never even need to know it was there. Thoughts?

Not sure this is relevant, but was able to prevent this reset by setting the DTR within a perl script I was using. Hopefully this will help somebody with a similar problem talking to the Arduino with perl.

-Dave

#!/usr/bin/perl

use strict;
use Device::SerialPort;

my $port = Device::SerialPort->new("/dev/ttyUSB0");
$port->databits(8);
$port->baudrate(9600);
$port->parity("none");
$port->stopbits(1);
$port->dtr_active(0);

sleep(1);

...

Also, regardless of the solution we find, does anyone want to write up a tutorial on unsoldering the auto-reset capacitor? It could fit nicely in the board setup and configuration section of the playground, and then I can move it over to the hacking page on the main site.

I could rig something up, as I removed it recently on my board.
Also it's still quite easy to get code uploaded onto the arduino, at least with the bootloader flashed to my chips.
I wrote a manual for the device I built, so there's a working procedure for that.

We should also add all the other known options to disable DTR that currently work, like the perl code mentioned here and stty settings in linux.

Edit: just started a stub: ( Building and Modifying Arduino type boards ... )

ladyada: have you used libftdi? Does it run under Windows? Do you know if the bit bang pins default to inputs or outputs (or if the mode persists through power loss)? It could be a problem if you had to explicitly set the bit bang pin used for reset to an input every time you powered up the board. Also, reading through the documentation, it wasn't clear to me which function actually set the states of the bit bang pins (I didn't spend much time on it); do you know?

Do you know if the bit bang pins default to inputs or outputs (or if the mode persists through power loss)? It could be a problem if you had to explicitly set the bit bang pin used for reset to an input every time you powered up the board. Also, reading through the documentation, it wasn't clear to me which function actually set the states of the bit bang pins (I didn't spend much time on it); do you know?

The pins can be set to bit-bang mode through the FTDI programming tool. It needs to be burned once into eeprom only once through the programming tool.
See MPROG from http://www.ftdichip.com/Resources/Utilities.htm

Right, but the question is whether or not we can toggle an individual bitbang pin on every upload, from the Arduino IDE. And, if you're not using the Arduino IDE whether you'll need to explicitly set the pin to an input, say, to un-reset the ATmega. Anyone know any more?

Any thoughts about Serial boards?

What about onboard USB->ISP?

ladyada: have you used libftdi?

no

Does it run under Windows?

it doesn't have to, for windows theres already a library

Do you know if the bit bang pins default to inputs or outputs (or if the mode persists through power loss)?

no, i haven't used it so i dont know. According to the app note for bit bang mode:
http://www.ftdichip.com/Documents/AppNotes/AN232R-01_FT232RBitBangModes.pdf
when the bitbang mode is enabled thru the driver, the direction is also set.

Also, reading through the documentation, it wasn't clear to me which function actually set the states of the bit bang pins (I didn't spend much time on it); do you know?

According to the app note for bit bang mode:
http://www.ftdichip.com/Documents/AppNotes/AN232R-01_FT232RBitBangModes.pdf
and D2XX driver app note
http://www.ftdichip.com/Documents/ProgramGuides/D2XXPG34.pdf

FT_SetBitMode CBUS Bit Bang mode is enabled using the FT_SetBitMode command. A
value of 0x20 will enable it and a value of 0x00 will reset the device mode.
Note that the CBUS pins must also be configured for CBUS Bit Bang in the
FT232R EEPROM.
FT_SetBitMode also provides the means to write data to the CBUS pins.
The upper nibble of the Mask parameter controls which pins are inputs or
outputs, while the lower nibble controls which of the outputs are high or low.
FT_GetBitMode FT_GetBitMode returns the instantaneous value of the pins. A single byte
will be returned where the lower nibble contains the current values of the
pins, both those which are inputs and those which are outputs.
For example:
Set all pins to output with bit 0 high: FT_SetBitMode(Handle, 0xF1, 0x20)

you can also download a lot of example code & libraries, documentation, etc. on the FTDI site
http://www.ftdichip.com/Projects/CodeExamples.htm
http://www.ftdichip.com/Projects/CodeExamples/OtherPlatforms.htm
http://www.ftdichip.com/Documents/ProgramGuides.htm

if you have any more questions about bitbang mode i'd ask FTDIchip, they have a tech support email addr
http://www.ftdichip.com/FTContact.htm

FYI, I just tried another little experiment (modified)

I took a 110 ohm resistor and connected the arduino 5v pin to the reset pin, jumper style. They are close together.

Guess what? No more com port resets :slight_smile:

Remove the jumper resistor and com port resets resume.

The 110 ohm resistor is just enough to keep the reset pin high (2.38v) when the ftdi chip tries to pull it low, and limits the current through the ftdi pins to 24ma*.

It also limits the current through the reset switch to 45ma.

for reference:

I don't know that I would trust it with an isp conected either. But it seems to be a simple "jumper style" solution, just have to make the jumper out of a 110 ohm resistor with some nice thick leads that fit the in the headers nicely.

*24ma is the limit on the ftdi rts/dtr pins, if I'm reading the datasheet right. Don't go below 110 ohms. I think you can go up to 124 ohms before it will start resetting anyway.