標準TTLだけ(!)でCPUをつくろう!(組立てキットです!)
(ホントは74HC、CMOSなんだけど…)
[第644回]
●PIC18F14K50のHIDサンプルプログラム
前回まででUSB(HID)プログラムの初期設定部分はできあがりました。
実際にそこまでのプログラムをPIC18F14K50に書いてパソコンとUSBで接続してみますと、PIC内蔵のUSBコントローラ(SIE)はUSBホストコントローラからのSETUPトークンパケットを検出してくれます。
実はそのところまでのサンプルプログラムは、[第520回]から[第522回]でお見せしています。
しかしそのままでは少しまずいところなどがありますので、前回までの説明もふまえて、もう一度きちんと書き直したプログラムをお見せします。
;;;pic p18f14k50 USB test program ;10/6/2 10/22 ; #include<p18f14k50.inc> ;cpuclock=48MHz exclock=12MHz ; CONFIG FOSC = HS,CPUDIV = NOCLKDIV,USBDIV = OFF,PCLKEN = ON,PLLEN = ON,WDTEN=OFF,LVP=OFF ; w=0 f=1 c=0 z=2 ; cntr0=0c cntr2=0d cntr1=20 ; org 00 clrf ANSEL clrf ANSELH clrf TRISC clrf TRISB clrf TRISA ; usbreset lfsr 2,0f5c;UADDR clrf INDF2; movlw 16 lfsr 2,0f53;UEP0 movwf INDF2 movlw 15;ping-pong buffer set for EP0(out) only movwf UCFG movlw 1e;in,out enable lfsr 2,0f54;UEP1 movwf INDF2 ; call setbd0 ; movlw 48 movwf UCON;clear bit4,for SIE enbl loop_ucon btfss UCON,4;if SETUP detect goto loop_ucon ; loop call t1ms decfsz cntr1 goto loop movlw 1 xorwf PORTC goto loop ; ;ep0 out data0(even) setbd0 lfsr 1,203 movlw 02;address high movwf POSTDEC1 movlw 20;address low movwf POSTDEC1 movlw 08;bytes movwf POSTDEC1 movlw 88;STAS(even) movwf POSTDEC1 return ; ;1msec timer t1ms movlw 0a;=10 movwf cntr2 t1ms2 call tm100micros decfsz cntr2 goto t1ms2 return ; tm100micros movlw 0f0;=240 movwf cntr0 tm100micros2 nop nop decfsz cntr0 goto tm100micros2 return ; end
下の回路図は上のプログラムを実行するためのテスト回路です。
この回路図は[第513回]でお見せしています。
この回路図ではPIC18F14K50のVDDはUSBコネクタからは取っていませんが、それではこれだけの簡単なテストをするのにも別の電源を用意しなければいけないので不便ですから、今回のテストとしては、USBコネクタの1番ピンをPIC18F14K50のVDDに接続して、テスト回路の電源をUSBから供給するようにしたほうが便利です。
その際はUSBコネクタの1番と4番の端子間に100μF程度の電解コンデンサをつけておくとよいでしょう。
またPIC18F14K50の1番ピン、17番ピンのコンデンサに値がありませんが、ここは0.1μF程度のセラミックコンデンサをつけます。
PIC18F14K50に上のプログラムを書いて図の回路で実行させてみますと、USBコネクタを接続するとLEDが点滅します。
もちろんこのプログラムはただのテストをしているだけですから、USB装置として認識はされません。
パソコン側では「不明なデバイス」になります。
2010.10.22upload
前へ
次へ
ホームページトップへ戻る