閲覧総計:&counter(); (本日:&counter(today); 昨日:&counter(yesterday);) *発光ダイオード(LED)の明るさを変える(PWM) [#c2f1029b] PIC内蔵の「PWM(Pulse Width Modulation)機能」を利用した簡単なプログラムを作成し、 12F683の「PWM制御」機能の利用法、稼働を確認しました。 07/02/03 注)12F683の場合、PWM信号はGP2から発信される。 関連MikroC関数 void Pwm_Init(unsigned long freq); void Pwm_Change_Duty(unsigned short duty_ratio); void Pwm_Start(void); void Pwm_Stop(void); &attachref(,zoom,150x150,button){新しい写真添付}; /** * 24F64の稼働テスト PWMの使用方法 * * PIC24FJ64GA002 * LED: RB15 * *Clock: 8.0MHz 内蔵発振器使用 *電源:乾電池2本(3.0V) *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 */ void main() { unsigned int pwm_period1, i; PORTB = 0b0000000000000000; //PortBの中身ををきれいにする TRISB = 0b0000000000000000; //PortB 16個全て0:出力に設定 //RP15ピンにOC1機能(PWM出力)18(=0b10010)を割付 RPOUTR7bits.RP15R4 = 1; RPOUTR7bits.RP15R3 = 0; RPOUTR7bits.RP15R2 = 0; RPOUTR7bits.RP15R1 = 1; RPOUTR7bits.RP15R0 = 0; pwm_period1 = Pwm_Init(5000, 1, 1, 2); LATBbits.LATB14 = 1; //照度比較用LED ON Pwm_Start(1); while(1) { for(i = 0; i < pwm_period1; i++) { Pwm_Set_Duty(i, 1); //LEDの明るさを徐々に変える Delay_ms(20); //0.02秒(=20ミリ秒)待つ } } } ~ ~ ★この情報は役に立ちましたか? #vote(はい[5],いいえ[0]) #comment