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ピンの内部が、これをすべて電気的に連動させるのですか?

代替テキスト

また、参照用のデータシートと回路図への関連リンクの一部もここにあります。

回答:


6

IIRCキャップはDTRではなく/ RTSに配線されています。

/ RTSが高い場合、キャップ全体に0Vがあります。/ RTSがローになると、キャップは瞬時に電圧を変更できないため、リセットラインがローになります。キャップは10K抵抗を介して充電されます。リセットラインがリセットしきい値を超えると、uCプログラムが開始します。

@LouisDavisはこのページを参照し

ATmega168はそのリ pin ットピンをGNDに脈動させることによってリ by ッ トされます。... DTRラインをLOWに設定することにより、内部プルアップ抵抗とR1を介してコンデンサが充電されるまで、リセットピンがLOWに吸引され、チップがリセットされます。

シミュレート:

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

@jluciani、あなたの説明は理にかなっています。コンデンサ両端の電圧が瞬時に変化しないという説明が好きです。これは覚えておくと便利な基本原則です。DTR側がDTRピンの内部抵抗を介して単純に放電するのではなく、なぜ両側がゼロになり、片側が再充電されるのかと思う人もいます。また、なぜシミュレーションでPULSEソースの代わりにPWLソースを使用したのですか?
vicatcu 2011年

@vicatu、パルスの周期やデューティサイクルがわかりません。0Vに下げるだけで、すべての仮定が適切に検証されます。
tyblu

@tyblu、はい、私はこの答えを完全に受け入れるつもりです。上記の私のコメントに応えて、いくつかの詳細を期待しています。
vicatcu 2011年

@vicatcuデジタル入力の入力抵抗は非常に高いです。電流はあまり流れません。充電電流は、デジタル出力または10Kからのみ取得できます。
jluciani、2011年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.