PIC電圧計の完成!(アセンブラバージョン) - PIC電圧計

Posted by kyosuke at 08/11 2007
>>次の記事: PICマイコンの10ビットA/Dコンバータのプログラム+回路図+LEDバー
>>前の記事: 電圧計PICプログラム デバック



前回は、割り込み処理のデバックが終わった。

いうなれば、今回のデバックが電圧計のためのものと。。

プログラム書き終わった。
だんだんと、そろえた材料がかわったが、まぁいいさ。

Pictester




一応、Buildはする。
どうせ、バグがあるだろうが、疲れたから後で直す。



かなり時間がたつ・・
デバックを再開する。


デバックの問題点は、A/Dのチェックをどうするかということだ。
0と1しか区別できないじゃんか

Vrefも、0か1だったら、とりあえず1を投げ込むしかなく。
1っていったら5Vだよな。

Vinで、0と1を投げ込んで、反応をうかがうしかないな。
Offsetの値を変えて、なんとかなるか。





かなりバグがある。
かれこれ2時間、バグつぶし。

とりあえず、バグをつぶし終えた。
しかし、A/Dの変換のデバックが取れないから、なんともいえない。


PICに書き込んで試してみるしかないな・・。
基盤的には、RA0がアナログイン0.9Vから1.6Vを流す、
RA3がVrefで2V、RBがVoutでLEDをつける。



プログラムを書き込んで、電源ON・・

Vinを動かす・・。
なんとなーく、動いてるっぽい。。逆に。

PORTBで、1の場合がONに出力が1になるんだよな??
Active HighでLEDをやっているのだが、どうも反対なのか?

まぁいい、反対にすれば、動くから反対なんだ!
文句は言わないぜ!

ちゃんと動いているようで動いてない、


と思い。

カンだ。
ADRESLがおかしいと思い、
単独で出力させたところ、ADRESL無反応。

マップを見てまたところ、
ADRESLはBANK1にいやがった。

BANK0で設定していたから、ダメだったのだ。

・・

だめじゃん。
直したけど、動いてないよ。

データシートみよ。
データシート意味なし。


げっ、ゲロゲーロ。

	BSF	STATUS,RP0
	MOVF	ADRESL,W
	MOVWF	DATAL
	BCF	STATUS,RP0
これあかんらしい。

正解はこれ
	BSF	STATUS,RP0
	MOVF	ADRESL,W
	BCF	STATUS,RP0
	MOVWF	DATAL
うげー、30分以上も時間を使ったぜ。バカ。


全部直して、あとは後処理の調整。
一応動いてるけど、あんまきれいに動いてない。
900mV-1400mVでLEDが1つから8つまで点灯する。
微妙に、2つのLEDが同時についたり、消えたりする。



調整後・・・

850mV - 1550mVでLEDが100mVごとに1つづ光っていく。
(850mV以下でLED1つつく、1550mV以上でLED8つつく。)

Vrefは2V。


微妙に、2つのLEDが同時についたり、消えたりすることがあるが、これはおそらくハードウェア上の問題だろう。

バッファをつけたり、インプットインピーダンスを下げてやれば、大丈夫だと思われる

めんどくさいからそんなことやらないけどね。

充電器は、あと少しプログラムを付け加えて、
トランジスタでスイッチしてやればOKだ。

先が見えてつまらないから、
充電器なんて作るのやめだ。


LIST		P=PIC16F877
INCLUDE		"P16F877.INC"

WTEMP	EQU	20H
STEMP	EQU	21H
LEDNUM	EQU	22H
DATAT	EQU	23H
DATAH	EQU	24H
DATAL	EQU	25H
TEMP	EQU	26H
TEMP2	EQU	27H
V1OFFSET	EQU	28H
V2OFFSET	EQU	29H
CNT		EQU	30H

	ORG	0
	GOTO	 MAIN

	ORG	04H
	GOTO	 INTR

	ORG	010H
MAIN
	MOVLW	030H
	MOVWF	T1CON

	BSF		STATUS,RP0
	BCF		STATUS,RP1

	BCF		INTCON,GIE
	BCF		INTCON,PEIE

	MOVLW	083H
	MOVWF	ADCON1
	MOVLW	01FH
	MOVWF	TRISA;input Vref and A/D

	MOVLW	081H
	MOVWF	PIE1

	CLRF	TRISB;output

	BCF		STATUS,RP0

	MOVLW	0H
	MOVWF	PORTB

	MOVLW	080H
	MOVWF	ADCON0

	MOVLW	0FEH
	MOVWF	TMR1L
	MOVLW	0DFH
	MOVWF	TMR1H

	BSF	INTCON,PEIE
	BSF	INTCON,GIE
	BSF	T1CON,TMR1ON

LOOP
	NOP
	NOP
	GOTO	 LOOP


INTR
	MOVWF	WTEMP
	SWAPF	STEMP,W
	BCF		STEMP,RP0
	MOVWF	STEMP

	BCF		T1CON,TMR1ON

	MOVLW	0FEH
	MOVWF	TMR1L
	MOVLW	0DFH
	MOVWF	TMR1H
	
	BCF		PIR1,TMR1IF

	CALL	VTESTER
	CALL	LEDPAT
	CALL	LEDON

	SWAPF	STEMP,W
	MOVWF	STATUS
	SWAPF	WTEMP,F
	SWAPF	WTEMP,W
	BSF		INTCON,GIE
	BSF		T1CON,TMR1ON
	RETFIE

LEDON
	MOVWF	PORTB
	RETURN

LEDPAT
	MOVF	LEDNUM,W
	ADDWF	PCL,F
	RETLW	01H
	RETLW	03H
	RETLW	07H
	RETLW	01FH
	RETLW	03FH
	RETLW	0FH
	RETLW	07FH
	RETLW	0FFH

VTESTER
	CLRF	LEDNUM

	MOVLW	081H
	MOVWF	ADCON0

	CALL	T20MSEC

	BSF		ADCON0,GO

PROG0
	BTFSC	ADCON0,GO
	GOTO	PROG0

	BCF		ADCON0,ADON

	BSF		STATUS,RP0
	MOVF	ADRESL,W
	BCF		STATUS,RP0
	MOVWF	DATAL

	MOVF	ADRESH,W
	MOVWF	DATAH


;	MOVF	DATAL,W
;	MOVWF	PORTB

	;debugging purpose
	;MOVLW	02H		;0000 0010 0010 0000
	;MOVWF	DATAH
	;MOVLW	023H
	;MOVWF	DATAL


GETDATA
	MOVF	DATAH,W
	MOVWF	DATAT

	BCF	STATUS,C
	RLF	DATAT,F
	RLF	DATAT,F
	RLF	DATAT,F
	RLF	DATAT,F

	MOVF	DATAL,W
	MOVWF	TEMP
	BCF	STATUS,C
	RRF	TEMP,F
	BCF	STATUS,C
	RRF	TEMP,F
	BCF	STATUS,C
	RRF	TEMP,F
	BCF	STATUS,C
	RRF	TEMP,W

	IORWF	DATAT,F
	MOVF	DATAT,W
	MOVWF	TEMP

;debugging purpose
;	MOVLW	0FFH
;	MOVWF	TEMP

;find num of led
;	INCF	LEDNUM,F
	MOVLW	01BH		;01CH
	MOVWF	V1OFFSET	
	MOVLW	04H
	MOVWF	V2OFFSET	

	BCF		STATUS,C

	;f-Wreg  carry set if f>Wreg
	MOVF	V1OFFSET,W
	SUBWF	TEMP,F
LEDNUMBER
	BTFSS	STATUS,C
	RETURN

	INCF	LEDNUM,F
	MOVLW	07H
	SUBWF	LEDNUM,W
	BTFSC	STATUS,C
	RETURN

	MOVF	V2OFFSET,W
	SUBWF	TEMP,F


	GOTO	LEDNUMBER


T20MSEC;
	MOVLW	02FH
	MOVWF	CNT
T20MSEC1
	DECFSZ	CNT,F
	GOTO	T20MSEC1
	RETURN
	RETURN


	END


>>次の記事: PICマイコンの10ビットA/Dコンバータのプログラム+回路図+LEDバー
>>前の記事: 電圧計PICプログラム デバック





PIC電圧計のモノ作り記事

Vol_reg_thumb
定電圧電源の製作、電圧表示付き(7セグメント3つ)
PIC電圧計の完成!(C言語バージョン+7セグメントLED)<br /> http://give-n-take.net/gat/user/show_diary/229 <br /...
続きを読む>>定電圧電源の製作、電圧表示付き(7セグメント3つ)
Posted by kyosuke at 04/10 2008

Vol_reg_seg_thumb
PIC電圧計の完成!(C言語バージョン+7セグメントLED)
PICマイコンの10ビットA/Dコンバータのプログラム+回路図+LEDバー<br /> http://toolible.net/monozukuri/articles/51<br ...
続きを読む>>PIC電圧計の完成!(C言語バージョン+7セグメントLED)
Posted by kyosuke at 04/02 2008

Vol_reg_thumb
PICマイコンの10ビットA/Dコンバータのプログラム+回路図+LEDバー
電圧計の完成!<br /> http://toolible.net/monozukuri/articles/21<br /> <br /> とか書いてあります...
続きを読む>>PICマイコンの10ビットA/Dコンバータのプログラム+回路図+LEDバー
Posted by kyosuke at 03/30 2008

Pictester_thumb
PIC電圧計の完成!(アセンブラバージョン)
現在のページです
Posted by kyosuke at 08/11 2007

No_image
電圧計PICプログラム デバック
さて、デバックする。<br /> <br /> 凡ミスを取り除いて、<br /> ビルトOK。<br /> <br /> RUNし...
続きを読む>>電圧計PICプログラム デバック
Posted by kyosuke at 08/09 2007

PIC電圧計 の14記事を見る