• 追加された行はこの色です。
  • 削除された行はこの色です。
#freeze
 閲覧総計:&counter();  (本日:&counter(today);  昨日:&counter(yesterday);)~
 ~
 *PWM分解能をLCDに表示(24FJ64) [#sa0e18d3]
 
 24FJ64GA002でのLCD表示の応用として、PWMの設定周期と、その時のPWM分解能を
 LCDに表示するプログラムを作成した。 08/03/17
 
 PWMの所望の周期を決定すると、それに伴いPWMの分解能が決定する。
 MikroC dsPICでは、Pwm_Init()関数に所望のPWM周期を設定すると、戻り値でPWM分解能
 (period)を戻してくれる機能が追加された。
 設定したPWMの周期(Hz)と、その時のPWM分解能をLCDに表示するプログラムを作成した。
 PICクロック: 内蔵8MHz
 
 |&attachref(P1010613.JPG,zoom,150x150,button){新しい写真添付};|&attachref(P1010612.JPG,zoom,150x150,button){新しい写真添付};|&attachref(P1010614.JPG,zoom,150x150,button){新しい写真添付};|
 
  /**
  * 24F64の稼働テスト LCDの稼働確認
  *
  * PIC24FJ64GA002 450円
  * http://akizukidenshi.com/catalog/items2.php?q=%22I-02000%22&s=score&p=1&r=1&page=
  * LCD: SC1602BS-B(-SO-GS-K) 550円
  * http://akizukidenshi.com/catalog/items2.php?p=1&q="P-00040"
  * LED: RB5
  *
  *Clock: 8.0MHz 内蔵発振器使用
  *電源:乾電池2本(3V)
  *Device Flags:
  *_IESO_OFF _FNOSC_FRC _FCKSM_CSDCMD _OSCIOFNC_OFF _POSCMOD_NONE
  *_JTAGEN_OFF _GCP_OFF _GWRP_OFF _BKBUG_OFF _COE_OFF _ICS_PGx1 _FWDTEN_OFF
  *
  *_IESO_OFF 2速度スタートアップ無効
  *_FNOSC_FRC クロックは内蔵オシレータを利用(8MHz)
  *_FCKSM_CSDCMD 動作中のクロック切り替え&監視OFF
  *_OSCIOFNC_OFF RA3はI/Oとして利用 _POSCMOD_NONE 主発信機無効
  *_JTAGEN_OFF  JTAG無効    _GCP_OFF  コードプロテクト無効
  *_GWRP_OFF  プログラムメモリ書込み禁止 _BKBUG_OFF デバッグモードにリセット
  *_COE_OFF  Clip-onエミュレーション無効
  *_ICS_PGx1  ICSP書き込みにPGC1/PGD1を使う FWDTEN_OFF  ウォチドック無効
  *
  * MikroC dsPIC v4.0.0.0
  * コンパイルサイズ: 2,468Byte (6,000Byte以下なら無料利用)
  */
  void main()
  {
      unsigned int cycle1 = 30000; //PWM周期 200Hz〜30KHz
      unsigned int pwm_period1; //PWM分解能
      char s_cycle1[7];
      char s_pwm_period1[7];
  
      PORTB  = 0b0000000000000000; //PortBの中身ををきれいにする
      TRISB  = 0b0000000000000000; //PortB 16個全て0:出力に設定
      ADPCFG = 0b1111111111111111; //全ピンをデジタルで使用
      //RP6ピンにOC1機能(PWM出力)18(=0b10010)を割付
      RPOUTR3bits.RP6R4 = 1;
      RPOUTR3bits.RP6R3 = 0;
      RPOUTR3bits.RP6R2 = 0;
      RPOUTR3bits.RP6R1 = 1;
      RPOUTR3bits.RP6R0 = 0;
  
      //PWMのチャージポンプでLCDに5V電源を供給
      //参考ページ:http://www8.plala.or.jp/InHisTime/page021.html#LABO-020
      pwm_period1 = Pwm_Init(cycle1, 1, 1, 2); //PWM周期を設定
      Pwm_Set_Duty(pwm_period1 / 2, 1); //PWM Duty50%に設定
      Pwm_Start(1); //PWMスタート
      Delay_ms(100); //チャージポンプ充電に100ミリ秒(=0.1秒)待つ
  
      //Lcd_Custom_Config(*data_port, db3, db2, db1, db0, *ctrl_port, rs, rw, en)
      Lcd_Custom_Config(&PORTB, 15, 14, 13, 12, &PORTB, 11, 10, 9);
      Lcd_Custom_Cmd(LCD_CURSOR_OFF);
      
      IntToStr(cycle1, s_cycle1); //数値を文字列に変換
      IntToStr(pwm_period1 + 1, s_pwm_period1); //数値を文字列に変換
      
      Lcd_Custom_Out(1, 1, "PWMシュウキ");
      Lcd_Custom_Out(1, 8, s_cycle1);
      Lcd_Custom_Out(1, 15, "Hz");
      
      Lcd_Custom_Out(2, 1, "PWMブンカイノウ");
      Lcd_Custom_Out(2, 11, s_pwm_period1);
      
      LATBbits.LATB5 = 1; //稼働確認用LED ON
  
      while (1)
      {
      }
  }
 
 ~
 ★この情報は役に立ちましたか?
 #vote(はい[4],普通[2],いいえ[2])
 #vote(はい[5],普通[3],いいえ[3])
 
 #comment_nospam