LPC1114FN28/102 (4)

Windows 用のターミナル・ソフトとしては、「TeraTerm」と、Windows XP までは標準でバンドルされていた「ハイパーターミナル」とが有名ですが、これらはいずれもシリアル回線が接続されると有無を言わせず DTR(Data Terminal Ready) をアサートします。
これは DTR が本来モデム制御信号であり、Data Terminal Ready (データ端末レディ) の名の通りに、ハードウェア端末であれば電源 ON されていて動作可能であれば出っぱなしになることに由来しています。
端末エミュレーション・ソフトウェアとしては、シリアル回線の接続開始はハードウェアの電源 ON に相当するので DTR をアサートするのは当然のことです。
しかし、本来のモデム制御信号の用途から離れて、マイコンのフラッシュ書き込みのために DTR をリセット信号に流用しているので、DTR がアサートされ続けると、ずっとリセットが解除されないことになります。
ただし TeraTerm については、バージョン 4.59 以降ではマクロコマンドとして「setdtr」、「setrts」コマンドが追加されており、マクロを併用すれば DTR / RTS の操作が可能になっています。
Flash Magic」自体にも簡易的なターミナル・ソフトが組み込まれており、DTR / RTS の状態を設定できます。
Flash Magic のメニューから「Tools」/「Terminal...」と選ぶと、シリアル回線の設定をするダイアログが現れます。
使用する COM ポートはフラッシュ書き込みに使うポートとは独立に選べますが、当然、ここはフラッシュ書き込みに使うポートを選択します。
「Options」のグループの中の「Modify default COM Port behavior」にチェックを入れると、ドロップダウン・リストの中から DTR / RTS の状態が選べるようになります。
リストの一番上の
While connected: 「Deassert DTR, Deassert RTS
を選ぶと、ターミナル起動中は DTR / RTS ともにネゲートされた状態になります。
OK ボタンを押すとターミナルの実行が始まります。
ターミナルを起動するたびに、この設定ダイアログが表示されますが、前回の設定内容は記憶されているので、2 回目以降は単に OK ボタンを押して進むだけです。
\overline{\small\rm DTR}/\overline{\small\rm DTR} 信号のレベルをオシロで観察すると、ターミナルの実行開始で COM ポートがオープンされた時点では DTR/RTS ともに Windows の制御下にあり、両者ともに一旦アサートされるようで、そのあとターミナルのプログラムが DTR/RTS の値を設定しているようです。
つまり、ターミナルを起動するたびにマイコンにリセットがかかります。
DTR/RTS のネゲートは同時なので、ISP(ブートローダ) が走り出すことはなく、ユーザ・プログラムの方が実行されます。
Flash Magic 組み込みのターミナルは少し変わっていて、入力ペイン (白地に黒文字) と、出力ペイン (黒地に白文字) とに分離されています。
そのため、マイコン側からエコーバックがなくても入力ペインにキーボード入力した文字が表示されます。
DTR/RTS を設定可能なターミナル・ソフトは多数あると思いますが、そのひとつとして ChaN さん作の簡易シリアル・ターミナル「tt.exe」を紹介したいと思います。
「tt」は「Tiny Terminal」の意味であり、多機能ではなく限られた機能の小さなプログラムです。
下記のサイトの「PC 用汎用ツール(フリーソフトウェア)」/「簡易シリアル」(2012.7.4) からパッケージ「tt.zip」がダウンロードできます。

http://elm-chan.org/fsw.html

「tt.zip」のパッケージを解凍しても、特にドキュメントのファイルは含まれていませんが、初期設定ファイルである「tt.ini」の中にオプションの説明があります。
tt.ini の中にはコマンドライン・オプションと同じ形式で 1 行にひとつずつオプションを記述していき、ファイルの終わり、あるいは空行を置くことによってオプション指定の終わりを示します。
この機能により、tt.ini の空行以降の部分を「コメント」としてオプション指定の解説にあてています。
たとえば、COM ポートのパラメタの指定は「port=3,n81,9600」のように行いますが、これは説明しなくても、ほぼ自明です。
DTR/RTS の設定には「pol=」オプションを使います。
値の b0 が DTR (ER)、b1 が RTS (RS) の指定です。
これは、\overline{\small\rm DTR}/\overline{\small\rm DTR} 信号の電圧レベルと考えると分かりやすいです。
pol=3 の指定で \small\overline{\rm DTR} = {\rm H}\small\overline{\rm RTS} = {\rm H} ということになります。
DTR については、tt.exe の起動時に強制的に約 100 ms の間、 pol= オプションで指定したのとは逆の極性の信号が出力されます。(RTS は変化なし)
つまり、pol=3 の指定で、毎回起動時にリセットが掛かることになります。
その他に、「ALT-H」のキーを押すことで約 300 ms 間 DTR 信号が反転される、つまりリセットが掛かる機能があります。
「Tiny」とはいいながら、ロギング機能や、テキスト/XMODEM でのファイル送信機能、また、通常の文字表示のほかに、16 進ダンプ (ASCII ダンプ付) で表示する機能もあり、マイコン側から 0x20 以下のコードが送られてくる場合の確認に便利です。