標準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
前へ
次へ
ホームページトップへ戻る