実機環境でのディバッグ環境の改善検討(データ復活版) [PIC]
MPLABのシミュレータは大変よくできているのですが、周辺回路がない状態での動作確認は結構大変です。StimulusControllerを使ってI/O入力のシミュレーションも可能ですが、A/D値等を実機環境で簡単に確認できたら動作確認作業効率が上がります。
そこでシリアル入出力を使った簡単な確認環境を検討しています。
動作確認のためには半二重通信で十分なので1bitのI/Oを使ってパソコン側のRS−232Cインターフェースと接続し送受信できるようにします。
パソコンと接続するためにはレベル変換が必要ですが、抵抗だけの簡易なもので実現することを目標とします。
まずはRS−232Cの規格の再確認ですが
1.送信側
最大出力電圧 :±25V以下
負荷時出力電圧:±5〜15V(3〜7KΩ負荷に対して)
2.受信側
入力最大電圧:±25V
入力スレッショルド:±3V
入力抵抗 :3〜7KΩ
となっています。(詳細はhttp://www.blackbox.co.jp/tech/1_5_2_7.html)
入力スレッショルドは実際には−3V〜3Vの間のどこかにあるはずで(規格上はこの範囲は使用不可ですが)、2〜3V辺りにあるようです(http://elm-chan.org/docs/rs232c.htmlを参照)。
上記2で入力側のインピーダンスが数KΩなので下図のAの抵抗値をある程度大きなものにすればTxからのデータがRx側に折り返すことはないはずです。
このように1bitだけでシリアル送受信ができれば実機でのディバッグ環境が格段に向上します。
また、1bit通信ができたらブートローダも作りたい。これは後で(いつになることか??)検討したいですが、ブートストラップ方式でコンパクトなローダーでローダ自身をロードしてからターゲットプログラムをロード(当然最後にはコンパクトなローダ部分のみ残る)できたら理想です。
ニックネーム さと at 00:53 | Comment(3) | TrackBack(0) | 日記
この記事へのコメント
1BitのI/Oを使ったシリアル入出力処理(19.2kbps)を作成し実験しましたが、抵抗等のパッシブ素子のみでは実現が難しそうだということがわかりました(そもそも構想に無理があった??^^;)。
素直にトランジスタを使って検討を続けます。
Posted by さと at 2005年11月19日 14:46
そこでシリアル入出力を使った簡単な確認環境を検討しています。
動作確認のためには半二重通信で十分なので1bitのI/Oを使ってパソコン側のRS−232Cインターフェースと接続し送受信できるようにします。
パソコンと接続するためにはレベル変換が必要ですが、抵抗だけの簡易なもので実現することを目標とします。
まずはRS−232Cの規格の再確認ですが
1.送信側
最大出力電圧 :±25V以下
負荷時出力電圧:±5〜15V(3〜7KΩ負荷に対して)
2.受信側
入力最大電圧:±25V
入力スレッショルド:±3V
入力抵抗 :3〜7KΩ
となっています。(詳細はhttp://www.blackbox.co.jp/tech/1_5_2_7.html)
入力スレッショルドは実際には−3V〜3Vの間のどこかにあるはずで(規格上はこの範囲は使用不可ですが)、2〜3V辺りにあるようです(http://elm-chan.org/docs/rs232c.htmlを参照)。
上記2で入力側のインピーダンスが数KΩなので下図のAの抵抗値をある程度大きなものにすればTxからのデータがRx側に折り返すことはないはずです。
このように1bitだけでシリアル送受信ができれば実機でのディバッグ環境が格段に向上します。
また、1bit通信ができたらブートローダも作りたい。これは後で(いつになることか??)検討したいですが、ブートストラップ方式でコンパクトなローダーでローダ自身をロードしてからターゲットプログラムをロード(当然最後にはコンパクトなローダ部分のみ残る)できたら理想です。
A PC側 Tx ───VVVV──┐ │ コネクタ ├──○ ○───→PICのI/Oポートへ B │ Rx ───VVVV──┘ GND──────────○ ○───→PIC側GNDへ
ニックネーム さと at 00:53 | Comment(3) | TrackBack(0) | 日記
この記事へのコメント
1BitのI/Oを使ったシリアル入出力処理(19.2kbps)を作成し実験しましたが、抵抗等のパッシブ素子のみでは実現が難しそうだということがわかりました(そもそも構想に無理があった??^^;)。
素直にトランジスタを使って検討を続けます。
Posted by さと at 2005年11月19日 14:46
2008-01-04 02:55
nice!(0)
コメント(1)
トラックバック(1)
以下、googleのキャッシュから復活したコメント
※2021/06/25
画像ファイル用サーバの変更に伴いコメント内のURLを変更しました。
--------------------------------------------------
完成しました(^^)
結局、トランジスタ2個、他にレベルシフトとしてLED等を使いました。
今回はかなり前に買っておいたブレッドボードを使いました。今までは空中配線でやっていてブレッドボードは食わず嫌いでしたが、今回使ってみて「なるほど便利なものだなぁ」と思いました。難点はといったら、ブレッドボードにつける素子の足は適当にまげますが、回路が完成し基板に実装する時にブレッドボードで使った部品を当然使いたくなります(何しろ動作確認済みの部品ですから)。
そうすると足が曲がった部品を基板に取り付けることなり見た目の美観が若干低下します。^^;
詳細は
https://piclabo.byte.jp/pic/pictop.html
に掲載予定です。
回路はこんな感じです(LEDは表示用ではなく、レベルシフト用に使っています)。
https://piclabo.byte.jp/pic/cirkit/OneLineSerial.pdf
PC側が送信したデータをPIC側で(受信文字コード+1)の文字コードを送信するようなチェックプログラムを作成し、PC側から'h'(68H)を送信し、PIC側が'i'を応答している時の波形が
https://piclabo.byte.jp/pic/image/OneLineSerial/OneLineSerialRxSig.gif
です。
上側の黄色波形がPIC側I/O端子上の波形で、紫色の波形がPC側Rxの入力信号です。
Posted by さと at 2005年11月20日 03:49
--------------------------------------------------
追記^^;
PIC側電源はニッケル水素電池2個ですので電源電圧は2.4Vを少し超えるくらいの電圧です。
何故、ニッケル水素2個にしたかと言うと、今検討中の作品は携帯性が必要だからです。実はこの1ビットシリアル通信もこの作品開発のための環境整備です。
また、PC側シリアルI/FはUSB→シリアル変換ケーブルを使っていますのでドライブ能力はディスクトップPCのものより弱いと思います。PC側電源電圧が5Vの場合やディスクトップPCのRS−232Cでは未検証ですが、おそらく動作するものと思います。
Posted by さと at 2005年11月20日 04:04
by さと (2008-01-04 02:56)
さと
Vdd=5Vの場合に対応するよう改造しました。
詳細は
https://piclabo.byte.jp/pic/picOneLineSerial.html
を参照してください。
by さと (2008-04-19 16:33)
さと
回路を見直し、超簡略化しました。
↓をクリックで詳細説明ページに飛びます。
https://piclabo.byte.jp/pic/picOneLineSerial_02.html
by さと (2008-12-06 19:53)
by skyriver (2021-06-25 02:30)