昨日のプログラムの改良で サイン波の波形が綺麗に繋がるようになったけれども
よく考えると ある部分でタイマーを止めてるのと 無理やりカウントを0にしてる部分がある訳だから 細かい事を言うと PWMの1周期毎に 実際はタイマーを止めていた分の時間が加わる事になる
またPWMのキャリア周波数を上げれば上げるほど狂いも大きくなる
これを計算をするとキャリア周波数が12KHz時で 60Hzを作ったつもりが 実際には約55.4Hzになる計算になった
これは ちょっと面白くないので このタイマーを止めてる時間がどれくらいになるのか再度、測定してみると およそ140カウントなので
PWMの1周期を設定するCompare1aの値を はじめから140引いておく事にした
これで 60Hzに設定すれば ほぼ正確に60Hzで出力されるようになる
と思ったところで・・・・・
ちょっと待てよ!!
何の為にマイコン使ってんだ?
わざわざ この140カウントを計らなくても
マイコンに計算させて 何カウント引けば ぴったり60Hzになるのか出してくれるプログラムを作れば良いんだ!!
という事で
まずは簡単な周波数カウンターの機能をプログラムに入れてみると
出力してる周波数は54Hz
54Hzでは そのままだと ポンプがはっきりと弱くなる
そんな事で 周波数補正プログラムも作って組み込んでみると
これでCompare1aの値を177引いておけば 60Hzになってくれる
という事です
今日は ここまで!!