楽天市場
[無料でホームページを作成] [通報・削除依頼]

続10 8ピンPICでUSB PIC16F505_USBIO (その2)

PIC16F505/506用のUSBスタックアセンブラプログラムを見直し、8ビット入出力を任意に選択できるよう検討を行いました。

img_20141108-232910.jpg

<PIC16F505回路図>
img_20141111-010424.jpg

img_20141111-005309.jpg

<PIC16F506回路図>
img_20141111-010500.jpg

<回路上の留意点>
続8で記述したPICの印加電圧ですが、USBの電源をダイオードで降圧させてPICに印加すると、PIC16F506で誤動作することがありますので、PIC16F506用の回路を変更しています。

<USBスタック>
PIC16F5XシリーズのTRIS設定はライトオンリーなので、PORTB,Cの入出力の設定を記憶させるレジスタ"TrisB","TrisC"をRAM上に設けています。

<ホストプログラム>
制御に使用するサンプルプログラム(ホスト)は16FUSBに付属の16FUSB_HID_DioSampleAPP.exeを改造したものを使用します。
PORTB(ビット4~7)PORTC(ビット0~3)の入出力の選択は上段Tris内のチェックボックスにより設定します。起動時は0x00(全て出力)に設定されます。チェックボックスをチェックすると該当するビットが出力から入力に切り替わります。
制御可能な出力は0(最小)~8(最大)、入力は0(最小)~8(最大)となります。
バイナリとソースプログラムを同包しています。

<USB転送フォーマット>

転送量は従来どうり入出力とも1バイトの仕様です。

?ホストから
bit7 Tris/Port選択 (1:Tris, 0:Port)
bit6 PORTB/PORTC選択 (1:PORTB, 0:PORTC)
bit5 未使用(=0)
bit4 データ本体 (ビット7,bit6=1) または未使用(=0,bit6=0)
bit3 データ本体 (ビット3,bit6=0) または未使用(=0,bit6=1)
bit2-0 データ本体 (ビット0~2,bit6=0 またはビット4~6,bit6=1)

?ホストへ
bit4~7 PORTB入力データとTrisBの論理積
bit0~3 PORTC入力データとTrisCの論理積

解説:16FUSB_HID_DioSampleAPP.exeを起動し、上段Trisのチェックボックスにチェックを入れると、ホストは変更したTrisのデータをデバイスに転送する。デバイスはこのデータを識別(bit7-6)してTrisBまたはTrisCを変更し、PORTB,PORTCのTrisを書き換える。
Trisが入力(=1)に書き換えられたビットは入力専用となり、中断のInputのチェックボックスでモニタされる。このとき下段のOutputの該当するビットのチェックボックスは入力禁止となる。

デバイスがPORTB,PORTCの信号変化を検出すると、ホストへPORTB,PORTCのデータを転送する。このときTrisB,TrisCとの論理積をとって出力に設定されているビットの情報を無効(=0)にする。



ダウンロード先

Bequest333のページ(別館)

http://hp.vector.co.jp/authors/VA058115/

https://drive.google.com/file/d/1Ds8krTzXmYgz1wU_FcRC6g9GweOX-7go/view?usp=drivesdk