2016-04-13 7 views
0

私のプロジェクトにはXC8コンパイラを使用してPIC16F88を使用します。PIC上の複数のPWMチャネル

私が達成しようとしているのは、4つのボタンで4つのLEDを制御することです。ボタンを押すと、対応するLEDのデューティサイクルが10%増加します。 RB0のボタンを押すと、RB4のLEDのデューティ・サイクルが増えます。 すべてのLEDは独立しているため、異なるデューティ・サイクルを持つことができます。

問題は、使用しているPICがRB0またはRB3(CCPMXビットを使用)でPWMモジュールを1つしか使用していないことです。

いくつかの研究の後、ソフトウェアPWMを実装して4つの異なるチャネルを使用することにしました。各チャネルは1つのデューティサイクルを制御しますが、見つかったほとんどのソースには、 複数のピンにPWMをミラーリングする方法はありますか?

私に手伝ってくれてありがとう。

答えて

1

ミラーリングはオプションではありません。

PWMは比較的簡単です。 PWM周波数(変更しない)とPWMデューティサイクル(0-100%の電圧範囲を得るために変更する必要があります)を設定する必要があります。必要なPWM、電圧ステップの分解能を決定する必要があります(たとえばPWMで構築され、8ビットで0〜255ステップ)。

最後に、PWM周波数* PWM分解能に基づいて割り込みを設定する必要があります。タイマISRルーチンでは、すべてのチャンネルの分解能カウントとPWM値をチェックする必要があります。解像度の値に達すると、解像度のカウントはリセットされなければなりません(また、0から再びカウントし始め、すべての出力もここでハイになります)。出力のPWM値に達すると、対応するピンをトグル(LOWにする)しなければなりません(また、分解能カウントリセットごとにHIGHにリセットする必要があります)。

これはこれを実行する1つの方法であり、タイマーは1つのみで、PICのリソースが少ないため、最も簡単です。

希望すると...

関連する問題