[H8-ML(3445)] Re:PWM出力の方法
From: "Masanobu Suzuki" <signas@xxxxxxxxxxxxxxx>
Date: 2003年06月24日(火)21時44分25秒
横から失礼します。

白川さん>
>CH1、CH2で時間を変えているのはおっしゃるとおりで6個のその時間
>に応じたPWM信号を作りたいからです。

3048FはITUが5CHありますから、素直にPWMモードで使えば一番簡単かと
思いますが、6CHだと不足しまう、あるいはITUを他の用途に使っているため
このような方法を考えつかれたのかな?と思います。

制御対象が市販のラジコンのサーボであれば、パルスを与える周期は
概ね20msecに1回で、これ以下の周期にしてもモータの発熱が多くなり
逆に30msec程度では応答性や平均トルクが多少悪化します。
また、この周期は必ずしも正確に20msecでなくても実用的には問題ない
はずです。ただ、最近のディジタルサーボではちょっと断言できませんが。

そこで、こんな方法ではどうでしょう?

使用するITUは1CHのみで、ITUの出力を時分割で6ケのサーボに振り
分ける方法です。
ハード的には、ITU出力(TIOCA端子)の先に6ケのANDゲートを用意して、
使っていない適当なI/O出力を使って、6ケのANDゲートの一つを選択します。
選択されたゲートの一つからはPWM信号がサーボに与えられます。
パルス幅は約1.5msec±0.4msecです。

使用するITUのGRBの周期を3〜4msecにします。
6x3=18msec or 6x4msec=24msecで6個のサーボへサイクリックに指令
パルスを与えることができます。

次にGRBのコンペアマッチ割り込みを許可しておきます。
これで、この周期で割り込みが入ります。

そして、この割り込みルーチンのなかで、出力先の切り替え、及び、
その出力先に対応したPWMのパルス幅をGRAに書き込んでやり、カウント
を許可します。
但し、GRAに書き込む値はGRBより小さな値です。(取り説10-48参照)

先に投稿されたソースの方法では、CPUがITUのステータスフラグを常時
ポーリングしなければならず、他の処理を殆どすることができないため
もったいない使い方かと思います。なるべく割り込みを使う方法が、寧ろ
簡単にできます。

鈴木(正)




スレッド概略
[3441(R)](起点)
 └[表示中]
   └[3452(1)]


投稿順に移動
[←前の記事へ(P)]
[→次の記事へ(N)]


リスト表示へ
[このスレッド(T)]
[本記事の前後(L)]