[H8-ML(4341)] RE:Message for h8
From: "masanobu suzuki" <signas@xxxxxxxxxxxxxxx>
Date: 2004年01月22日(木)14時31分22秒
> > 3)メインルーチンのWhile文内でパルス幅用のGRAの更新が
> >  どこにもないのでパルス幅が変化しない。
>
> このGRAの更新の仕方は、
> ITU0.GRA = 0
> でいいのでしょうか?

PWMモードは、マニュアル頁10-48のように2つの方法があります。
どちらを使っても構いませんが、例えば上の図のように出力させたい
場合は、
 ・GRAにはPWMの繰り返し周期を設定します。例えば、分周をφ/8
  で20msecの周期にしたければ、16MHZ/8*20msec=40000を
  GRAに設定します。(厳密には更に40000-1とする)
  この値は、通常は変化させる必要がないので、初期化で1回だ
  け設定すればOKです。
  また、GRAのカウンタクリア条件をGRAのコンペアマッチでクリア
  しておくことも忘れないで下さい。(プログラムでは落ちています)

 ・次にGRBの値によってパルス幅が決まります。例えばGRB=20000
  とすれば、GRAの半分になりますから10msec幅のパルスが、繰り
  返し周期20msecで常に出力されます。
  尚、GRBの値を0としないこと、更にGRB>GRAとすると、コンペア
  マッチが発生しませんから、パルスはでなくなります。

従って、この場合はGRBの値を書き換えれば、それに応じたパルス幅
が出力されることになりますから、加速度センサから得られたデータcnt0
をGRBに与えれば良いことになります。ですから、この書き込みをメイン
ルーチンで行うなら、石山さんの場合はWhile文のループ内に無ければ
ならないことになります。

マニュアルの下の図のように出力したい場合もGRAとGRBを逆にして
考えれば良いのですが、注意するのはGRA=GRB-cnt0としないと、パ
ルス幅の長短が逆転します。

投稿されたプログラムでは、更に以下の点を修正しないとうまくいきません。

1)インプットキャプチャ割り込みの設定で、IMFBも許可していますが、
 この割り込みは発生しませんし、該当する割り込みルーチンが存在
 しないため、ノイズ等で割り込みが発生すると暴走します。
 パルスの両エッジで割り込みを許可する場合は、GRAのインプット
 キャプチャですからIMFAフラグしか使いません。

2)メインルーチンの } が落ちています。

こんな説明でわかりますか?
答えを書くのは簡単ですが、苦労して動いたときの喜びを奪うことになり
ますので・・・・

鈴木(正)
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.564 / Virus Database: 356 - Release Date: 2004/01/19

スレッド概略
[4293(R)](起点)
 └[4340(U)]
   └[表示中]
     └[4342(1)]


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


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