Pico Basic用シリアルコンバータ(リセット機能追加その2)

PIC Pico BasicにDTR信号を利用したリセット機能を追加して喜んでいたのだが、シリアルコンバータにPIC18F14K50を使用した場合はよかったのだが、推奨のFT232RLを使用した時は具合が悪く、同じようにDTRを接続しただけではリセットがかからないだけでなくリセットがかかりっぱなしになる。

単に論理が反転しているだけなのだが、FTシリーズはこの辺の抜け目がなく論理反転するソフトウエアが存在する。

まず、FTDI社のページに行き、FT_PROGというソフトウエアをダウンロードする。解凍したらFT_PROG.EXEを起動し、メニューのDevices-Scan and Parseを選択し、チップを自動認識させる。それからHardware SpecificのInvert RS232 Signalsで、下図のようにInvert DTR#にチェックを入れて、メニューのDevices-Programで書き込む。あとはUSBの接続をし直せばDTR信号が反転するのでリモートリセットが可能になる。

ところで、このリセット機能を使っていろいろ企んでいるのだが、そのデバッグ中にこのシリアル信号ちゃんと動いているか確かめる必要があり、ロジアナでチェックしていると以下のような現象に出くわした。

上の段はPicoBasicからシリアルコンバータへ送られる内容で、下段がリセット信号になる。ここで気づいたことは、リセットがかかるとPicoBasicのTx端子がLになってしまうことである。どのマイコンでもそうなのだが、リセット後はI/Oが入力になったりするものが多く、PICはリセット後は入力モードになる。そうすると、Txの設定が完了するまでの間はLを出し続けることになる。その結果として、リセット後0x00のデータを送出してしまい、本来では0x0Dであるはずの最初の1バイトがスタートビットの認識ミスで0x43に化けてしまう。MIDIのプログラムを作っているときにも感じていたのだが、この辺の仕様が昔のRS-232C時代の仕様を引きずっているため、気持ち悪いことになる。

そうは言っていてもしかたがないので、Txを10kΩ程度の抵抗でプルアップしておくと、次のように解決する。

まぁ、もとのままでも0x43はストップビットが認識できないために無視されているみたいだけど、こういうことが気持ち悪い人は抵抗一本入れてみるのもいいかもしれない。

  1. 2011年 7月 6日

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。