ないブログに表示されています。新しい記事を書く事で広告が消えます。twittell.net要望が多いのがPWMのプログラム。(Tue)という訳で、全く脈略もないままに16F19XX、HITECコンパイラでのPWMの作動方法について書くことになりました。PWMについての説明やらなんやらはもう以前の記事で再々やっているような気がいたしますので、ここでは省略させて頂きます。いう訳で今回はプログラムのお話を。因みに今回の記事はデータシートが手元にあることを前提としていますので、レジスタの中の詳しい紹介等は行いません。PWMを行なうにはタイマーの設定が必要です。これは要するに波の周期を決定するために使われるもので、一般には慣例としてタイマー2が使われるようですね。別に1でなければどのタイマーでも大丈夫なはずです。タイマーの設定をするレジスタはT2CONレジスタ。今回は特に何か指定することもなかったのでEnable、つまりタイマーを有効にする設定のみを行なっています。あと重要なのが、PR2レジスタで、この値でPWMの周期を決めます。この値はある計算値を基にして求められるのですが、わざわざ求めなくても、データシートにPRレジスタの値と主なPWM周期の表が載っていたりします。いうことで今回はこの表に基づいて0xFFとしました。これだと周波数は31.25kHzになりますね。因みに計算式もその表の付近に載っています。こんな感じであっけなくタイマーの設定は終了。タイマーのレジスタについてはまた別途の記事で詳しく説明します。PICではPWMはCCPとかECCPというモジュール内に含まれている機能ですので、このCCPのレジスタを利用してPWMの設定を行います。CCP2CON、今回はCCP2を使うのでこのレジスタを使います。このレジスタはビット7-6:拡張PWMの設定ビット5-4:デューティ比の最下位2ビットビット3-0:モードの選択となっています。今回は拡張に興味が無いので7-6は00、デューティ比はこのPICの場合、最高10ビットで設定出来るようなので、下位ビット分がこんなところで設定できます。下位ビットっていうと1か2の違いですから、正直どうでもいい。どっちも00でいいでしょう。3-0は当然PWMの設定になりますね。ECCPの場合はアクティブハイがどうたらと書いてありますが、どちらもアクティブハイでないと後々面倒なので全部アクティブハイになる1100でいいでしょう。こんな感じでPWMの初期設定は終了です。あとはCCPR2Lレジスタで上位8ビット分のデューティ比をプログラム内で設定してやれば後は勝手にモジュールの方が波形を出力してくれます。そのあたりはちょっと注意が必要です。この値ってよく考えるとPRがFFだと分母は10進数で1024になりますよね。単純に1024段階と思って頂ければ何も考えることは無いかと思います。PWMのプログラムはこんな感じ。細かいレジスタ等の紹介はまた別途で行いたいと思います。いう訳で今日は最後に適当なプログラムを乗っけて終了です。このプログラム動いたっけかなぁ・・・?もしかしたらPICのヘッダをhtcかそこら辺にしないと動かないかもしれません。Comment(0)Comments※コメントは内容確認後に手動で公開するようにしております。反映までしばらくお待ちください。BlogGcraudCIAOで行っチャオwithHIMIKOご注文はロボットですか?当サイトはリンクフリーです。最新記事RadiumProduction(01/01)リチウムバッテリー規制にやられた話(08/19)SSL対応しました。(06/24)サーバをGoogleCloud上に移設した話。(02/12)噂によると平成が終わるらしいので、今後についてのお知らせを。(12/08)夏コミ出ません。(07/24)ラーメン飯テロ女装ピザ大会お疲れ様でした。(04/02)和歌山があるなら和歌川もあるのかなって思って調べてたら本当にあった顔してる(03/28)コミックマーケットで技術系サークルを出そうのコーナー(01/20)「らじぷろ」コミケ参加終了していました。(12/30)コミケ準備できました。頒布物紹介その1(12/23)冬コミサークル参加します。(11/02)RCJJ名古屋世界大会お疲れ様です。自己紹介:初めまして。某大学の情報学科に入りました。生活を送るのが今年の夢です。めーるradiumproduction☆yahoo.co.jp※☆を@に変更して下さい。