• 追加された行はこの色です。
  • 削除された行はこの色です。
 閲覧総計:&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