Sahara's WebLog

日記のような、備忘録のような、うらみつらみのような、自慢のような…。

PIC10F322 3 LED Blinking 2

PIC10F322でLチカの第2弾

せっかくだからPWMも使ってみる。

RA0はPWM1を使ってデューティー比50%の約38kHzのパルス。
RA1は__delay__msを使ったループで300ms間隔のパルス。
RA2はTimer0の割り込みを使ったやはり約38kHzのパルス。

実は赤外線LEDを駆動してリモコンで遊ぼうかと思っているので約38kHzとしてある。
38kHzで点滅しながらON/OFFさせる必要があるので、PIC10F322の機能ではやっぱりPWMを利用することになるか。
最近知ったその他の機能はまだどう使えるか良く分からない。
pic10f322_tmr1_pwm_38khz_02

pic10f322_tmr1_pwm_38khz_01
PR2の決め方をもう一度復習しておく。
式は
PWM Period = [(pr2) + 1] x 4 x Tosc x (TMR2 Prescale Value)
Tosc = 1/Fosc
という、データシートに載っているもの。
PWM Period = 1/38000
Fosc = 16000000
TMR2 Prescale Value = 1
を代入して計算すると、
PR2 = 105.26
となるので、105にしておこう。
Duty Cycleは
Duty Cycle Ratio = (PWM1DCH:PWM1DCL<7:6>)/[4 x (PR2 + 1)]
Duty Cycle = 50
とすると、PWM1DCH:PWM1DCL<7:6> = 0b11001010 となるので
PWM1DCH = 0b110010
PWM1DCL<7:6> = 0b10
となる。
測定してみると37.8kHzとなって、まず問題ない値に仕上がっている。
pic10f322_tmr1_pwm_38khz_03

このエントリーをはてなブックマークに追加

Posted under: PIC10F322


コメントを残す

メールアドレスが公開されることはありません。

Time limit is exhausted. Please reload CAPTCHA.