前回はCPUに命令をして、LEDをチカチカさせました。
ただ、このやり方だとLEDを増やしたりすると、
CPUへ命令する内容を増やさないといけません。
では、CPUへの命令を極端に減らして同じ、もしくはそれ以上の事をさせるにはどうしたらよいでしょう?
そこで!
PSoC5LPの強靭な柔軟性を活用することで可能にしましょう。
問題は「一定周期でON
と OFF」を繰り返すという事
そんな機能を持つコンポーネント(部品)があればいいんです。
そこで、PWMと言うのを使います。
PWMと聞くとmbedやarduinoを使った事のある人だと
「LEDをフワフワ光らせるときに使った」 とか
「モーター動かす時に使った」とか
そんなのだと、思います。
しかし、PWMそのものを理解して使っているわけではないでしょう。
PWMと言うのは、平たく言って
「基準となるon
offの周期を数えて、別のon offを出力する」
と言うただそれだけの機能なんです。
もちろんCPUに任せることもできますが
それでは、他にもCPUに任せたい
プログラムが止まってしまうんです。
プログラムが止まってしまうんです。
PWMは
基準のon off 、 数える部品 、 回数を比べる部品
この3つで出来ています。
わかりやすく、2bitのPWMを描いてみました。
基準となるon offをクロックって言って
CPUも含めてこのクロックを基準に動いています。
on offのセットを数える部品をカウンターと言って
今回は2ビットなので、4回数えたら、「0」になる部品です。
数を比べる部品をコンパレータと言って
設定した数とカウンターの数を比べて
設定された数を超えるとoff ⇒ on になる部品となっています。
今回はカウンターの数と比べるのを
カウンターの数が2回以上の時(緑)と3回以上(オレンジ)の時を書きました。
よく言うデューティー比と言うのは
全体の回数と数える回数の比のことなんですね。
ね!実は単純。
この3つを組み合わせて、LEDやモーターに
適切な on とoff を送っているだけなんです。
たとえば、遅いクロックに出来たり、数える回数が増やせれば・・・
LEDのチカチカにも応用できると思いません???
次回、実際にPWMを使ってほぼ書かないで、LEDをチカチカさせましょう!
0 件のコメント:
コメントを投稿