PIC 19:コンパレータ動作を確認


コンパレータの動作
 16F648Aは内臓コンパレータが2つあり、avr(アトメル社のCPU)ではおまけに付いているのでこれも使ってみようと思っていましたが、今日まで他の作業で後回しになっていました。
 規格をみて何時でも動くと思っていましたが、とにかく実験をしておかないと使いたい時にまごつくはずです。
 一度でも実験をしておけば、安心して後はその延長線上で実験が進められます。それは「初期設定などが正常作動した」ことを意味しているのです。

 そこで以前使った基板[PIC-7]を使って、実験だけはしておこうと少しの部品を追加してみました。
 抵抗とVRで電圧1.6Vを[-/RA1]側に加え、VRは0-5Vまで変化させ[+/RA2]に加えます。

部品などは
 電圧は抵抗分割の半固定にして約1.6Vを加えています。VRは10KΩのAです(手元にBタイプが見つからなかった)。
 発振は4MHzの内部発振(Configuration bits)で選択、コンパレータは1組だけの動作としました(プログラムで選択)。

 結果は「VRを回すと電圧が変り、1.6V以上でRB3のLEDを点灯させる」という物で、戻せば(逆転)LEDは消えます。

SOFT的には
@ Aポートを入力にして置く。
A CMCONレジスタにポートの選択をする。今回は2つのコンパレータの内片方だけ使うことにし、後はデジタルで使います(今回は未使用)。
 マニアルを見るとここに10uSecの時間を取っているので、WAITを入れている。
B LEDを消す。
C コンパレータの結果は(出力)CMCONレジスタの7ピンに出て来るので、そこをチエックしてLEDを付ける・そうでない場合はパスさせLEDは消えたままにする。
 [CMCONレジスタのbit5=1で出力は逆になる。Softで簡単に出来て面白い!]
D Bへ戻る。

2007/APR/10

;*******************************************************
;	Comparator TEST
;	2007/4/3 4MHz in
;-------------------------------------------------------
	LIST		P=PIC16F648A
	INCLUDE		"P16F648A.INC"
	__CONFIG		0x3F71
;-------------------------------------------------------
TEMP	EQU	0x20	;tempolary
CNT2	EQU	0x22	;for Timer counter
;-------------------------------------------------------
	org	0

BEGIN
	call	PORT_INI		;Initialize Port
	movlw	0x05		;select 1 comparator
	movwf	CMCON
	call	WAIT		;over 10uS
MAIN	
	bcf	PORTB,3		;LED OFF
	btfss	CMCON,C2OUT	;check bit7
	goto	MLOOP
	bsf	PORTB,3		;LED ON
MLOOP
	call	WAIT
	goto	MAIN
;-------------------------------------------------------
PORT_INI
 	BSF	STATUS,RP0	;Bank1
	clrw			;RB0-7=output
	MOVWF	TRISB		;PORTB
	MOVLW	0xFF		;RA input(1=in)
	MOVWF	TRISA		;PortA
	BCF	STATUS,RP0	;Bank0
	CLRF	PORTB		; LED OFF
	RETURN
WAIT				;770usec
	MOVLW	0xFF 		
	MOVWF	CNT2		
T_LP2
	DECFSZ	CNT2,F
	GOTO	T_LP2		
	RETURN

	END
;-------------------------------------------------------
[CP]

[もどる]もどる  [MAIN MENU

inserted by FC2 system