プロが教えるわが家の防犯対策術!

マイコンを使ってPWM調光でLEDの点灯実験をしております。暗くした時のチラツキ等殆ど解決したのですが、最後に1点解決出来ない事があります。それは、電源SWをONした時に一瞬LEDが明るく点くのです。これを解決する方法をご存知の方がおられましたら、お教えいただきたいと思います。どうぞ宜しくお願いいたします。

A 回答 (2件)

おそらくはタイマの書き込み方法、リセット方法が間違っているのでしょう。


具体的なマイコンの種類、回路、使用言語が不明なため正確なことがいえませんのが。
それは電源を入れて最初から、二度目以降で問題点の区分けができます。
ただ、タイマをポートに接続したままタイマ動作フラグをON-OFFしているのだと仮定し、
その後のリセット動作などで挙動が変動する場合があります。

・最初からの場合(もしくは最初だけ)
最初からの場合、ポートが開いた瞬間にタイマーが起動・接続されていない可能性と
(タイマーが起動する前に何らかの処理を行っているため、ON時間が増加など)
タイマー起動後にフラグ書き込みしてる→ON時間が変化があります。
(比較レジスタの書き込みの時間を見てみてください。
 レジスタ書き込みがPWMのMAX値後に更新されるものがあります。
 この場合一度PWMの最大値まで点灯(または消灯)するまでカウンタが回るため点灯時間が増加します。)

このため、PWMのタイマ起動前にレジスタを書き込むことが必要です。
逆を言えばしていないと上記のようなことが起こります。
(コンパイラで修正されるものもあるようですが。)

・二度目の場合
一度タイマを回した後、リセットしている場合が当てはまります。
比較レジスタ、タイマレジスタの更新はされてますが
タイマカウンタ、またはフラグレジスタがリセットされていない可能性があります。

PWMの出力フラグが強制変更できるものがあります。
そのためタイマレジスタのPWM動作許可をリセットしても出力が生きてる場合もあります。
出力フラグがない場合はフラグレジスタがリセットされていない場合も。
また、カウンタが動いたままでフラグがクリアされてる場合も同様です。
(一度やったことがあります。)

・ぶっちゃけあら探しが面倒な場合
どうしても動作できない場合、一回タイマオーバーフラグ(MAX値のフラグ)まで回し、
それをトリガとしてタイマ出力とポートを接続してはいかがでしょうか。
かなり外道な方法であるとは思いますが。
    • good
    • 0
この回答へのお礼

有難うございました。ソフトの対応で解決いたしました。

お礼日時:2009/09/26 14:49

マイコンを使った制御でよくある事例です。


電源on時に入出力ポートがHighインピーダンスになるから発生します。解決方法は幾つかあります。
LEDドライブ回路が不明ですが推定の条件で回答します。

1.ポートの出力とLEDドライバ間にプルダウン用の抵抗を追加して、ポートがHighの時も入力がLowと見なせる値を付けます。
(LEDドライバ側の入力インピーダンスの5~10倍程度の抵抗値となります。)
2.LEDドライバの駆動極性を逆にして、電源on時にLEDが点灯しない極性にします。
(LEDドライバを2段にして、ポートの出力極性を逆にプログラムする必要があります。)

#1.の方法が簡単ですが、LEDドライバ側の構成に依っては2.もあります。
 

この回答への補足

早速のご回答有難うございます。CPUのPWM出力をLEDドライバーのデジタルトランジスタに入力しております。回答の1番の方法はすでに実験済みですが、
改善は認められませんでした。プルダウン抵抗の定数が高すぎたのかも分かりません(実験時は10KΩ)。再度抵抗の定数を低くして試してみたいと思います。

補足日時:2009/09/12 21:13
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!