メニュー
▼ アクセス(地図)
▼ Windowsアプリ開発 ▼ マイコン開発 ▼ CGI・PHP制作 |
▼ サイトマップ(全投稿記事)
▼ タイトル(画像一覧) ▼ 事業内容 |

お問い合わせメールフォームが開きます。
2017年07月06日
12F1501 RGB LED制御
マイクロチップ社の8ピンマイコン・PIC12F1501はPWM出力を4ポート持っているため、簡単なDCモータ制御やRGB-LED制御に適しています。
今回は下記のような感じでRGBの3色LEDの調光を制御してみました。

各ポートのPWM出力の波形のキャプチャ。 PWM周期:16kHz(62.5usec)
PWM設定は、タイマ2とPWMxCON、PWMxDCx で行います。
// Timer2
T2CON = 0b00000100; // FOSC(16MHz)/4=4MHz
PR2 = 250-1; // PWM 周期=4MHz/250=16kHz
// PWM1~3
PWM1CON = 0b11000000 ; // PWM1機能使用
PWM1DCH = 0 ; // Duty初期 0%
PWM1DCL = 0 ;
PWM2CON = 0b11000000 ; // PWM2機能使用
PWM2DCH = 0 ; // Duty初期 0%
PWM2DCL = 0 ;
PWM3CON = 0b11000000 ; // PWM3機能使用
PWM3DCH = 0 ; // Duty初期 0%
PWM3DCL = 0 ;
ドキュメント参照すると
PWM 周期 = (PR2 + 1) x 4 x TOSC x (TMR2 Prescale Value)
パルス幅 = PWMxDCH:PWMxDCL<7:6> x TOSC x (TMR2 Prescale Value)
ただし TOSC = 1/FOSC
と書かれています。
PWM周期はパルス幅のクロックに対して4分周されているので
PWMxDCH = (PR2 + 1)
PWMxDCL = 0b00******
とした時に、PWM 100%となるようです。