SVX日記

2004|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|08|09|10|11|

2004-08-15(Sun) アナログメータ基本動作確認

  今日は、とりあえず、アナログメータの針が動くところまで。昨日書いたコードには、バンクを0に戻すつもりで、戻していないというバグがあったので、ちょっと悩んでしまった。気づいてチョイと直したところアッサリ動いたのだが、CCPR1Lに値を書き込むだけという簡単なコードでPWM制御ができることには、改めて驚いた。今後は自製でPWM制御ルーチンを書くなんてやってられませんな。

  とりあえず、PCのシリアルポートに接続し、CPU使用率を表示させたりしてみたい……のだが、WindowsだとCPU使用率を得るだけでもひと苦労のようだ。なんとかググッて、Win2k上でCPU使用率を表示するGPL印のソースコードを見つけたところで、今日はおやすみである。ホントにGPL万歳である。

  画像の説明

						;	################################################################################
						;	#
						;	#	メイン処理
						;	#
MAIN						;	MAIN
						;	;1. PWM周期をPR2レジスタに書き込む
		bsf	STATUS, RP0		;			SET	RP0, (STATUS)		; バンク1へ
		movlw	0FFh			;			LD	A, 0FFh
		movwf	PR2			;			LD	(PR2), A		; PWM周期をFFに
		bcf	STATUS, RP0		;			RES	RP0, (STATUS)		; バンク0へ
						;	;2. PWM有効期間をCCPR1LとCCP1CON<5:4>に書き込む
		movlw	0h			;			LD	A, 0h
		movwf	CCPR1L			;			LD	(CCPR1L), A		; PWM有効期間に0をセット
						;	;		RES	4, (CCP1CON)
						;	;		RES	5, (CCP1CON)		; どうせ5.で0クリアしてしまう
						;	;3. TRISBをクリアし、CCP1を出力に設定
		bsf	STATUS, RP0		;			SET	RP0, (STATUS)		; バンク1へ
		bcf	TRISB, 2		;			RES	2, (TRISB)		; 今回はPORTBの2番をPWMする
		bcf	STATUS, RP0		;			RES	RP0, (STATUS)		; バンク0へ
						;	;4. T2CONに書き込み、TMR2プリスケーラを設定、Timer2を有効化する
		movlw	00000100b		;			LD	A, 00000100b
		movwf	T2CON			;			LD	(T2CON), A		; TMR2 ON & PRESCALER x 1
						;	;5. CCP1CONをPWMモードに設定する
		movlw	0Ch			;			LD	A, 0Ch
		movwf	CCP1CON			;			LD	(CCP1CON), A		; PWMモードに設定(分解能の下位2ビットを0固定)
						;	;Note: TRISBの2か3かは、コンフィギュレーションビットの12ビット目(CCPMX)による
						;	
MAIN1						;	MAIN1
		bsf	PORTB, monitorLED	;			SET	monitorLED, (PORTB)	; モニタLED ON
		movlw	010h			;			LD	A, 010h
		addwf	CCPR1L			;			ADD	(CCPR1L), A		; PWM有効期間を16(6%)加算
		movlw	10			;			LD	A, 10
		call	WAITnx01sm25us		;			CALL	WAITnx01sm25us		; 1秒待つ
						;	
		bcf	PORTB, monitorLED	;			RES	monitorLED, (PORTB)	; モニタLED OFF
		movlw	010h			;			LD	A, 010h
		addwf	CCPR1L			;			ADD	(CCPR1L), A		; PWM有効期間を16(6%)加算
		movlw	10			;			LD	A, 10
		call	WAITnx01sm25us		;			CALL	WAITnx01sm25us		; 1秒待つ
						;	
		goto	MAIN1			;			JP	MAIN1
						;