[H8-ML(2247)] Re: 16ビットタイマについて教えてください
From: KODERA Masaru <mkodera@xxxxxxxxxxxxxxx>
Date: 2002年09月28日(土)14時02分50秒

こんにちわ 小寺です。早速のご回答ありがとうございます。

廣田 さんwrote...
 | 確認ですが、この質問で「サイン波形(50/60Hz)」と言うところは
 |関係ない事ですね? 問題は20kのPWMの波形の乱れだけ? ご質問に
 |主題と関係ない語句が出てくると混乱してしまいます。

確かにサイン波形(50/60Hz)は、関係ありません。ご指摘のように
20kのPWMの波形の乱れだけです。ただパルスワイズがH'0C〜H'F5と
広くなっている事です。

 |タイマVと有りますが、タイマZの間違いと思います。

その通りです。初めは、タイマVだけでしたがハード側で
20kの50%PWMも必要になったためタイマZを使用しました。
タイマVでも波形の乱れは、ありましたか...

 |周期設定にGRAを使い、この周期は50us(20KHz)固定。
 |パルスワイズを変えるのに使っているレジスタはGRB,GRC。

パルスワイズはGRCで、50%PWMは、GRBを使用しています。
50%PWMは、問題なく出ています。

 | なぜならば、コンペアマッチ時の割り込みから書き換えまでのソフト実行に
 |よる遅延時間が有るから、このタイミングで書き換えれば、コンペアマッチと
 |レジスタ書き換えの競合が起きることはないからです。

ご想像されたようにGRAのコンペアマッチの割込みを使用してGRCの書換を
行っています。
タイマVの割込み優先順位がA/Dよりも下でA/D割込み処理後にタイマVの
割込みが入るためコンペアマッチとレジスタ書換の競合が発生している
のではないかと思っています。

 |「割り込みが発生してから、最大35usの遅延で書き換えられる」と「50%
 |位のところでの発生が一番多い」と有りますが、50usの半分25usと35usの
 |遅延と言うのが近いので疑わしいですね。

パルスワイズ幅が広いので発生しやすいと考えています。

 |バッファが働いていないように見えるのではないでしょうか?

ハードマニュアルの通りGRBとGRDをバッファ動作にしてソフト上から
GRDを変更してもPWMは、現れずGRDの出力ポートから信号が出ました。

 | また、書き換えタイミングをGRC,GRBのコンペアマッチの必ず後にしたい
 |ならこれらの割り込みも許可して、各々の割り込みタイミングで書き換える
 |ようにすれば、コンペアマッチと書き換えの競合は発生しないはずです。

書込みタイミングは、A/Dの中で処理したかったのですがうまく出力され
なかったので色々試しているうちに現在は、コンペアマッチAの割込みを
使用しています。

 | 20MHzのクロックのCPUを使っているのですからGRAのコンペアマッチ割り込み
 |から数マイクロ秒以内に次のGRC,GRBの値を書き込むことができるのでは?
 |と思います。 割り込み処理の優先度を見直す必要もあるかもしれません。 

割込みの優先順位を変えれるのであれば、変えたいのですがたとえ変えても
A/D割込み中にコンペアマッチA割り込みが発生した場合は、後処理と
なるため結果は、同じとなるような気がします。

 |可能なら、処理シーケンスを見直し、
 | 割り込み->データ入力->だらだら演算処理->演算処理結果書き込み。
 |ではなく、
 | 割り込み->以前の演算処理結果を書き込み->データ入力->だらだら演算処理->
 |  ->演算処理結果を記憶。
 |とするのも一手です。 

現状は、テスト中のため 割込み->デーブルからサイン波データ取得->書込み
となっております。


wakky@xxxxxxxxxxxxxxxxxxx さんwrote...
 |(1)A/D割込みの中では、FIFO にデータを登録するだけ。
 |(2)表(割込み以外)の部分で、RMS の計算を行う。
 |って方針でコーディングするといいかもしれません。

確かにRMSの計算は、時間がかかります。入力電圧・出力電圧・出力電流
電力の計算を割込み中に行っています。過去に製作したソフトを
なるべく流用したいがため現状に至っております。

 |でも、割込み周期が速すぎて ICE ではデバッグできないかもしれません。

確かに早すぎてデバッグできていません。

 |って書いてて思いついたんですけど、出荷状態(ICE無し、内蔵 FLASH-ROM 上で
 |動作)で動かすと、ちゃんと動いたりして(^^;)

悲しいことにFLASH-ROM上で発見されたためあたふたしております。


Fumio Yamanaka さんwrote...
 |比較処理と更新までは他の割込みを禁止しないと上手くいきません、

そこまでは考慮していませんでした。試してみます。

 |こう考えると廣田さんも指摘されてる様にGRC,GRBのコンペアマッチ割込み
 |処理を最優先にし、割込みの先頭で更新される方法がいいかもしれません
 |またタイミング的に問題無ければGRCかGRBの遅い方の割り込みだけを
 |使って更新したほうがGRC,GRB割込みの競合による問題を回避出来るので
 |良いと思います。

最優先にする方法を色々考えたのですが、50%PWMの立上がりエッジを
空いているIRQポートに入力して処理させようとも考えましたが、
最終手段と考えています。
何か優先順位を上げる方法で良い案があれば教えてください。

色々とありがとうございました。

____________________
ダイトパワートロン株式会社
501-6331 岐阜県羽島市堀津町横手2-109
開発設計課 小寺 勝
TEL:058-398-5122  FAX:058-398-2043
URL:http://www.powertron.co.jp/
E-mail:mkodera@xxxxxxxxxxxxxxx
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
スレッド概略
[2241(R)](起点)
 └[2244(U)]
   └[表示中]
     └[2248(1)]


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


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