« 公道レース | トップページ | ふと気づくと »

2024年4月 1日 (月)

タイマーペリフェラルでPWM波形生成

マイコンのタイマーでPWM波形を生成する、ってのは
よくある話なんだけど。

注意しいないといけなのは、このタイマーって2種類あって、
内部に大小比較機(マグニチュードコンパレーター)を持っていて
常時、タイマーカウンターとレジスタの値を比較して
PWM波形を出力するタイプ(stm32のTIMとか)と、

大小比較機を持たず、2つのレジスタのコンペアマッチ
だけで動作して、それぞれが出力の立ち上がりエッジと
立下りエッジ(と、カウンタリセット)
を生成しているタイプのもの
(ATTINYとか)があること

-------

前者はいわゆる、のこぎり波とコンパレータで
動作するタイプの波形生成器のデジタル版で、
特に特別なことをしなくても0~100%の
波形生成ができる

後者は、原理から分かる通り、
立ち上がり、立下りが有ることが動作の
前提なので、デューティ0%や100%とかの
波形の変化が無くなる状態は
特殊な状況になって、
そこだけ特殊な別処理を書く必要がある

動作原理を理解してよくよく考えないと、
難しいバグを内包するんだけど、
これがなかなか難しく、
みんな面倒なことは考えたくないので
いやらしいシステムがよく誕生している....

------

じっくり考えると見えてくるけど、
コンペアマッチで動作する方は
どうしも生成できない波形パターンが
有ったりする。

極端な例だと、1サイクル毎に
0%と100%の波形を交互に出す
なんてのは、出力が難しい、
というか、そうそう出来ないはず

この辺見えてくると、そもそも
どういう風に使うものなのか?
が見えてくる。

------

そりゃまあ、マグニチュードコンパレーター
があれば常に大小比較しているので、
どんなタイミングでレジスタ更新しても
ちゃんと動くし、こっちのほうが便利なんだけど

そもそもマグニチュードコンパレーターは
多ビットになると、ロジックの規模も大きいし
動作スピードもそんなに上げられない

使う側がちゃんとできるんなら、
コンペアマッチで動作するやつのほうが
色々エコシステムだ

-------

そもそも、PWM使う所で、
デューティ0%や100%なんてのが
どうしても必要、なんてことに成るのは
そこまで多くないはず....

それは、対象がサチってるって状況を
示唆するので。

特殊な状況での話、電源OFFとかでなくて、
シームレスに0%とかが必要になる、
ってのは、なんかシステム的に
よく考えてみる、って必要が
あるのかもしれない

-------

と、いうわけで、マイコンのタイマー
ペリフェラルでのPWMは、
0%.100%を使うには、ひと手間かかる
設計のものが普通にありますよ、
って話

マイコンのタイマーって意外と使う人を
選ぶんだよね...

でもまあ、”ちゃんと” 動かせれば
結構、使い出があるように設計されて
いるものなので、各人の研鑽に期待、
という所だろうか

| |

« 公道レース | トップページ | ふと気づくと »

コメント

コメントを書く



(ウェブ上には掲載しません)




« 公道レース | トップページ | ふと気づくと »