- 追加された行はこの色です。
- 削除された行はこの色です。
閲覧総計:&counter(); (本日:&counter(today); 昨日:&counter(yesterday);)~
~
*1024分解能ハードPWM制御自作関数 [#ef01afa1]
MikroCに用意されているPWM関数はPWM分解能が256である。
しかし、PIC16系に組み込まれているハードウエアPWM機能は10ビット(1024分解能)
である。
1024分解能のPWM制御を実現する為に自作my_Pwm関数を作成したので紹介する。 06/11/26
注)16F628Aの場合、PWM信号はRB3から発信される。
関連自作my_Pwm関数
void my_Pwm_Init(void);
void my_Pwm_Change_Duty(unsigned int duty_ratio);
void my_Pwm_Start(void);
void my_Pwm_Stop(void);
|&attachref(,zoom,150x150,button){新しい写真添付};|&attachref(,zoom,150x150,button){新しい写真添付};|
/**
* PWM機能で発光ダイオードの明るさを徐々に変える
* PIC 16F628A
* 発信器:内臓4MHz
* 電源:乾電池3本
* RB3: LED (CCP出力)
* RB2: LED (照度比較用)
* Device Flags: _BODEN_OFF _BOREN_OFF _CP_OFF _PWRTE_ON _WDT_OFF
* _LVP_OFF _MCLRE_OFF _INTRC_OSC_NOCLKOUT
* 言語 MikroC v6.2
*/
void main(){ //メイン プログラム
unsigned short int i; //使用変数の定義
PORTB = 0b00000000; //PORTBの中身をきれいにする
TRISB = 0b00000010; //RB1は1:入力、他のPORTBは0:出力に設定
PWM_Init(5000); //PWMの初期化 (5KHz周期指定)
PORTB.F2 = 1; //照度比較用LED ON
PWM_Start(); //PWM機能スタート
do { //doとwhileの間を繰り返す
//LEDの明るさを徐々に変える
for (i = 0; i < 256; i++) {
PWM_Change_Duty(i); //PWMのDuty変更
Delay_ms(100); //100msec待つ
}
} while(1); //doとwhileの間を繰り返す
} //メイン プログラム終了
#comment