PIC−USBIO using BASIC
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
USBインターフェースを内蔵したPICを使ってWindowsパソコンで外部回路を制御するための各種I/O基板の製作記事です。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
[第145回]
●PICUSBIO−03(94)I2Cモード(16)スレーブモード(4)受信プログラムのロジアナ波形
前回実行しましたスレーブモード受信プログラム(マスターは送信プログラム)の実行中の波形をCPLDロジアナで観測しました。
下はその波形です。
STARTコンディションです。
PROBE0がSCLでPROBE1がSDAです。
STARTコンディションはSCLがHのときにSDAがHからLになります。
上の波形はちょうどSDAがHからLになったところからスタートしています。
最初のアドレス送信です。
7ビットのアドレスとR/Wビットが全て’0’です(ゼネラルコールアドレス。前回参照)。
9ビット目はスレーブから送出されたACKです。
スレーブの受信モードではACKはMSSPモジュールによって自動的に送出されます。
途中でSDAがLになっています。
最初のデータ(アドレス)の受信直後からクロックストレッチングが働いてSCLが強制的にLになっていると思います。
それがアドレスを受信してから9msec経って次の受信の準備ができたためCKPを’1’にしてSCLラインを開放したのがここだと思います。
SCLはずっとLなので境目はわかりませんがSCLが開放されたことでSDAラインの状態が変わったのではないかと思います(すべて推測ですけれど)。
最初のデータの送信です。
’01000001’($41)です。
9ビット目はスレーブから送出されたACKです。
また途中でSDAがLになっています。
今度はデータ($41)を受信してから13msec後です。
ここでSCLが開放されたのだと思います。
2番目のデータの送信です。
’01000010’($42)です。
9ビット目はスレーブから送出されたACKです。
また途中でSDAがLになっています。
データを受信してから14msec後です。
STOPコンディションを受信できるようにSCLラインを開放しています。
STOPコンディションです。
STOPコンディションはSCLがHのときにSDAがLからHになります。
PIC−USBIO using BASIC[第145回]
2023.1.3upload
前へ
次へ
ホームページトップへ戻る