-
Notifications
You must be signed in to change notification settings - Fork 6
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
FTDI pulls reset low by default #13
Comments
Arudino manages this in hardware. It uses a DTR transition to trigger a
timer, so a reset pulse is emitted on a DTR transition, but the steady
state of DTR is ignored.
…On Fri, Dec 2, 2016 at 11:40 AM Amit Levy ***@***.***> wrote:
(I'm not sure there is anything great to do about this)
When I attach a terminal to the FTDI, DTR--which is connected directly to
the SAM4L's RESET signal--is pulled low, and the board effectively halts.
stormloader relies on this to be able to reset the board, so this
behavior is identical on the Firestorm, but it's a huge bummer because it
means that typical utilities for connect to a serial port (e.g. miniterm,
minicom, screen, etc) don't work by default.
There are currently two workarounds I've found:
1.
miniterm2.py takes a --dtr argument which tells it to assert or
de-assert the DTR signal. miniterm2.py --dtr 0 /dev/ttyUSB0 115200
works for me. I'm not sure how to do this with other utilities.
2.
We can program the FTDI chip to invert the DTR signal, which would
allow connecting through a terminal serial applications to work out of the
box, *but* the reset signal will be held low by default, so the board
won't run.
How does Arduino manage this? Thoughts?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
<#13>, or mute the thread
<https://github.com/notifications/unsubscribe-auth/AAUt3p1NVbFZzk45U5i5WKqTd7FvsaG-ks5rEEnpgaJpZM4LCvwm>
.
|
Related to this, it also looks like imix doesn't have a 1K resistor between RESET and VCC as the Firestorm does and that this might be the cause of issues with JLink failing to pull RESET low. There two new pieces of evidence for this: |
After testing with miniterm, Amit and I concluded that the current behavior is identical to |
@shaneleonard I agree with this assessment, I think it's fine. I'm closing. |
@ppannuto If I AC-couple the DTR line to the RESET line (as Arduino does), would it be possible to get the behavior we want? It actually seems like a trivial fix (one capacitor), but I don't know if it would cause an undue overhaul in the tockloader or if it would break compatibility with Hail. |
@ppannuto @alevy After some experiments, I found by that removing the reset pullup resistor and replacing the DTR-RESET resistor with a 1uF cap, the DTR can pull down the reset line when desired but the steady-state doesn't make a difference. I was able to successfully get a terminal with all different configurations of |
I think we should replicate this design on Hail, by the way, since it fixes all of the undesired behavior. |
(this is pretty far out of my comfort zone, so I'm just listening with interest, not commenting) |
@shaneleonard could you grab a scope trace probing both sides (DTR and RESET_N) of the cap? @brghena assuming that looks good, moving hail over to a cap probably a good improvement |
Yeah, ran that experiment last night but forgot to snap a pic. When DTR transitions low, Reset immediately goes to 0V and exponentially rises with a rise time of about 80 ms (it's logic low for about 20 ms). When DTR transitions high (after Reset has resettled high), Reset spikes to 4.2V and decays back to 3.3V. I'll post the screenshot once I take it again. |
The 1uF seems to be overkill, so if it's interesting, I can try a handful of values. I have 470nF and 100nF on hand (although 100nF didn't seem to work when I first tried it) |
Sorry for the cell-phone photography by the way. Couldn't find my flash drive to plug into the oscilloscope :/ |
I think that cap choice is fine. Strictly speaking, it'd probably be good to double check in the datasheet that the reset pin is 4.2V tolerant and that this doesn't wear on the chip (o/w you'd need a clamping diode), but I suspect that's a low enough and short enough transient that it's not a big deal. @brghena pointed out that when @daniel-scs gets USB support up an running, we can just incorporate that into the bootloader, and drop the FTDI chip altogether, so likely not worth propagating this change to hail. But since you're already spinning a new rev of imix, it looks good to me. |
Datasheet doesn't mention reset being tolerant to a particular level, it just gives a flat 3.6V as the maximum operating voltage for the power domains and I/O. I can add a clamping diode. |
(I'm not sure there is anything great to do about this)
When I attach a terminal to the FTDI, DTR--which is connected directly to the SAM4L's RESET signal--is pulled low, and the board effectively halts.
stormloader
relies on this to be able to reset the board, so this behavior is identical on the Firestorm, but it's a huge bummer because it means that typical utilities for connect to a serial port (e.g. miniterm, minicom, screen, etc) don't work by default.There are currently two workarounds I've found:
miniterm2.py
takes a--dtr
argument which tells it to assert or de-assert the DTR signal.miniterm2.py --dtr 0 /dev/ttyUSB0 115200
works for me. I'm not sure how to do this with other utilities.We can program the FTDI chip to invert the DTR signal, which would allow connecting through a terminal serial applications to work out of the box, but the reset signal will be held low by default, so the board won't run.
How does Arduino manage this? Thoughts?
The text was updated successfully, but these errors were encountered: