blog家電メーカーで働いているmeideruのブログです。技術系・ガジェット系の話を書いています。出てくる具体例は全てXC8で記してあります。使用するレジスタ12F683でPWM制御するために使うレジスタは以下の通り。OUTPUT(データシートより)以下でそれぞれ4つのレジスタについて説明します。各レジスタのビットの解説は省略してあるので、上でリンクしてあるサイトを参考にしてください。OUTPUTのPeriod)を決定するレジスタです。PERIOD(データシートより)Toscは周期のことでPICのクロック数の逆数で求められます。Valueはプリスケーラのことです。プリスケールとは簡単に説明するとタイマのカウントを増やすためのものです。あとで説明するT2CONレジスタで設定します。PWMの周期はPR2を代入するだけで決定できます。200、プリスケーラは1として計算してみましょう。T2CONレジスタT2CONレジスタはTMR2のポストスケール、TMR2の有効無効、TMR2のプリスケールを決定するレジスタです。(T2CONレジスタの各ビットについては上のサイトを参考にしてください。)TMR2はタイマのことで、PWMを実行するためには使う必要があります。CCP1CONレジスタCCP1CONレジスタはデューティの下位2ビット(上位8ビットはCCPR1Lで設定)、CCPモードを設定するためのレジスタです。デューティは10ビットで設定されますが、12F683の特殊レジスタSFRは8ビットであるため入りきりません。デューティの上位8ビットはCCPR1Lに、下位2ビットはCCP1CONに設定します。CCPR1Lレジスタ1つ上で説明した通り、CCPR1Lレジスタはデューティの上位8ビットを設定します。WIDTH(データシートより)上の画像はデューティの長さの計算式です。CCPR1L:CCP1CON<5:4>というのは「CCPR1LとCCP1CONの4ビット目、5ビット目を順に並べた値」という意味です。デューティの10ビットを表します。RATIO(データシートより)上の画像はデューティ比の計算式です。上の2つのデータシートに基づいて具体例をあげます。CCPを80として上位8ビットをCCPR1Lに、下位2ビットをCCPR1Lに入れます。サンプルコードサンプルコードを書きます。1秒ごとにLEDの明るさが切り替わるプログラムです。画像の画像だけアップします笑。ビッグマックセット」を食べた(^O^)/RSSプロフィール新卒2年目の社会人。blog家電メーカーで働いているmeideruのブログです。技術系・ガジェット系の話を書いています。