Arduino Deumilanove自动重置功能如何工作?


8

我想听听有关Arduino Duemilanove如何通过FTDI FT232R收发器通过USB重置ATMega328P的一些解释。

我知道这涉及IDE使用DTR串行握手信号玩一些游戏。看完原理图之后,我真正感兴趣的是如何更好地处理电路的工作原理:

        100nF           10kOhm
DTR -----||------+------^v^v^----- VCC
                 |
                 +--/RESET

10k电阻是复位线上通常的上拉电阻。那么电容器在该电路中能完成什么工作呢?

附带说明,我以此为借口尝试并学习/使用LTSPICE,因此我对此工具并不熟练。我在LTSPICE中对其建模如下,但是在我看来,/ RESET信号恰好与DTR信号完全匹配,这对我来说真的没有意义。我将DTR信号建模为脉冲电压源,也许是错误的模型。是FTDI的DTR驱动器(例如,也许是集电极开路)的本质,还是我绘制的电路中不存在的MCU上/ RESET引脚的内部特性,使它们全部电气连接在一起?

替代文字

另外,这里有一些相关的数据手册和原理图链接,以供参考。

Answers:


6

IIRC帽连接到/ RTS而不是DTR。

/ RTS为高电平时,电容两端为0V。当/ RTS变为低电平时,电容不能立即改变电压,因此复位线变为低电平。电容通过10K电阻充电。一旦复位线高于复位阈值,uC程序就会启动。

@LouisDavis引用了此页面,其中指出

通过将其复位引脚脉冲到GND来复位ATmega168。...通过将DTR线设置为LOW ...,复位引脚将被吸入LOW,直到电容器通过内部上拉电阻器和R1充电-从而使芯片复位。

模拟:

Auto-Reset
VDTR    1 0 PWL(0 5 0.5m 5 0.000500004 0 1m 0)
Vcc 3 0 5
C1  1 2 100n
R1  3 2 10k
.control
delete all
tran 10n 5m
plot v(1) v(2)
.endc
.END

V(1)为DTR/RTSV(2)为/RESET
替代文字


@jluciani,您在哪里看到RTS的上限?RTS上没有填充电阻。电容器(C13)连接在DTR(FT232L引脚2)和MCU的复位引脚之间……
vicatcu 2011年

@jluciani,您的解释很有道理。我喜欢您对电容器两端电压没有瞬时变化的解释。要牢记这是一个方便的基本原则。我不禁要问,为什么两侧都应降为零,然后再进行一侧充电,而不是DTR侧仅通过DTR引脚的内部电阻放电?另外,为什么在Sim中使用PWL源而不是PULSE源?
vicatcu,2011年

@vicatu,我不知道脉冲的周期或占空比,将其简单降至0V即可很好地验证所有假设。
tyblu 2011年

@tyblu,是的,我完全打算接受这个答案,我只是希望对以上评论做出一些阐述。
vicatcu 2011年

@vicatcu任何数字输入的输入电阻都很高。不会流过多少电流。充电电流只能来自数字输出或10K。
jluciani 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.