2番目のビデオでは、基本的なカウンターを使用した設計を紹介します。PWMを統合する方法と設計を構成する方法について学習します。
前のビデオでは、メイン ループで、各関数間で遅延を使用してLEDピンを駆動していました。これは貴重なリソースを無駄に消費するため、一般的には悪いスタイルです。LEDのオン/オフを切り替えるより良い方法は、PWM (パルス幅変調)、タイマー、カウンターを使用することです。
まず、基本的なカウンターを設計しましょう。基本カウンターのデータシートを開くと、基本カウンターは2ビットから32ビットのカウンターまでプログラム可能であることがわかります。カウンターの出力はバスです。バスのどのビットがLEDを駆動するかを選択できます。
私たちのプロジェクトでは、シンプルな2ビット カウンターが設計されています。つまり、4つの値は00、01、10、11で、その後00にロールオーバーします。プッシュ ボタンが入力クロックに接続され、LEDピンがカウンターのビット0に接続されている場合、ボタンが押されるたびにLEDが切り替わります。ユーザーがボタンを2回押してLEDを切り替えるようにしたい場合は、バスのライン1に接続するだけです。その場合、記述するコードはありません。したがって、マイクロコントローラをコンパイルしてフラッシュするだけで、LEDが切り替わります。
前回と同様に、スイッチ ボタンの代わりに、LEDを1 Hzで点滅させたいと思います。そのため、スイッチ ボタンの代わりに、クロック コンポーネントが基本カウンターのクロック入力に接続されます。デフォルトのクロックは48MHzで、最大65536で分割できます。したがって、10ビットカウンターとライン9に接続された赤色LEDを使用して1kHzクロックを構成することが可能です。2 10 = 1,024の場合、LEDは約1ヘルツで点滅します。 繰り返しますが、Cコードを書く必要はなく、マイクロコントローラをコンパイルしてプログラムするだけです。
より複雑で多用途なコンポーネントは、タイマー カウンターPWMコンポーネントを表すTCPWMです。PWMとして設定してみましょう。計算を簡単にするために、クロックは32kHz、PWMの周期は32,000カウント、PWMの比較は16,000に設定されます。TCPWMコンポーネントのライン出力は赤色LEDに接続されています。カウンター値が0と比較値の間にあるときはLEDはオフになり、カウンター値が比較値と期間値の間にあるときはLEDはオンになります。
今回は、1行のCコードが必要です。TCPWMコンポーネントはPWMという名前で、プロジェクトをビルドするとAPIが生成されます。APIに関するすべての情報はデータシートに記載されています。PWMを実行するには、関数PWM_Start() を呼び出す必要があります。 このプログラムをコンパイルすると、LEDが1 Hzで点滅します。周波数または比率を変更するには、周期と比較レジスタの値を変更するだけです。