こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

-広告-

締切り済みの質問

組み込みマイコンの誤動作について

ある組み込みマイコン(ASSP)を使っています。AD変換と、コンパレータが入っていて、コンパレータは閾値以上の電圧が入ると割り込みをかけてくれます。

そのマイコンで誤動作が見つかり、AD変換値のレジスタにアクセスしているとき、コンパレータからの割り込み要求があると、マイコン自身がエラーが発生したと誤判定してプログラムをとめてしまいます。

コンパレータは電流を電圧に変えた信号が入るようになっていて、一定以上の電流が流れたら、スイッチ(FET)を切るため=保護のため使っているので、それをやめることはできません。

メーカーはマイコンを設計しなおすのはお金がかかるから、AD変換値を読んでいるときは、コンパレータを動作させない(=保護ができない)ようにして使ってくれといいます。

AD変換も電源電圧を読んでいてこれまた保護のために使っています。

もともと、そのコンパレータで保護もできるというのがウリであったのですが、メーカー・日本の販売商社の見解として、マイコンは不具合のまま(保護できないタイミングがある状態で)使ってくれというのですが(日本の販売商社がリクエストをとめている可能性もあります)、海外メーカーのマイコンというのはそういうものでしょうか?

ちなみにこのマイコンはすでに売られている車にも搭載されているものです。

みなさんのご経験と「こんな風に回避またはメーカーに働きかけた」といったことがあったら教えていただけませんでしょうか?

よろしくお願いいたします。

投稿日時 - 2014-03-14 22:07:51

QNo.8514016

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

6人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(4)

ANo.4

ADのレジスタは非分断連続アクセスしないといけないのではないですか?
(例えば8ビットマイコンでADレジスタが16ビットなんて組み合わせ)

そうであればメーカーの言うとおり「操作している間割り込み禁止にする」のが当たり前だと思います。
コンパレータ割り込み条件が発生してから数クロックの遅延も許されないのなら、上流設計レベルで間違えていますね。

投稿日時 - 2014-03-20 15:19:20

補足

確かに、変数破壊防止のために、AD値をバッファ変数に退避させるときに、よく割り込みとかAD変換を禁止にしています。割り込みが途中で入って、バッファ変数破壊にならないためです。
しかし、今回の場合は、もとのAD値がの入っているレジスタが、マイコン自身の割り込みによって破壊されてしまいます。

AD値を読むのがAD変換完了割り込にあるして、コンパレータ割り込みのほうが優先度が高いので、同時に発生しても、優先順位に従って、コンパレータ割り込みの処理とレジスタの更新をしてから、AD完了割り込みの処理をしてくれればよいのですし、ユーザープログラムはそうなっているのですが、マイコンの中では実際には1つのレジスタにリードとライトが非同期で同時に行われているのです。

マイコンは2チップ構成で、CPUとアナログ部分はユーザーのさわれない通信でやっていて、そのレジスタの値が壊されることによって、チップ間の通信エラーになってCPUが勝手にとまってしまうのです。

変数破壊防止のために、割り込みを禁止したりはしますが、マイコンがマイコン自身の処理でレジスタ値破壊を起こして止まってしまう何であるのかなという感じです。1チップ構成なら、通信がないので、CPU停止までいかないかもしれませんが。

投稿日時 - 2014-03-31 00:51:58

ANo.3

>「その2」はマイコンメーカーから提示されたのですが、保護機能を切ってしまうまたは遅れてしまうことになるので、難しいです。

割り込み禁止→ADレジスタ読み出し→割り込み許可 の3命令で実行できますけど。
これで間に合わないほどクリティカルなのですか?
もしそうであれば、コンパレータ割り込みより優先順位の高い割り込みを使用できない事になります。

コンパレータの応答時間のほうが気になりそうです。
そもそも、異常事象の発生から保護が完了するまでに許される時間はいくらなのですか?
これにはアナログ回路の応答時間も含みます。

投稿日時 - 2014-03-17 09:51:45

補足

お察しのとおり、時間にして数μ秒ですが、この間にどのくらい電流が上がってしまうかによります。

ただ、設計思想としてコンパレータ割り込みをとめてしまう時間が存在してしまうことを許してくれるかです。

投稿日時 - 2014-03-31 00:29:15

ANo.2

修正にはお金がかかります。
修正の為にはエンジニアを割り当てなければならないし、そのエンジニアがするはずだった仕事が止まってしまいます。
メーカーがマイコンの修正に応じてくれないのであればそのまま使うしかないです。

実際にやってみなければ効果が有るかは分からないので、アイデアだけですが

その1.AD変換の読み取りをDMAで行う。(ソフトで読まなければエラーにならない可能性がある)
その2.AD変換を読み取る間は割り込み禁止にする。(割り込みは禁止解除後に発生する)
その3.コンパレータを外付けにする。

コンパレータの安いものなら10円ぐらいで購入できます。
http://www.digikey.jp/product-detail/ja/AP331AWRG-7/AP331AWRGDITR-ND/2095586

投稿日時 - 2014-03-16 09:16:32

補足

ありがとうございます。
AD読み込みより、割り込みが原因としてのウエイトが重いようで・・・
しかし、「その1」は確認してみます。
「その2」はマイコンメーカーから提示されたのですが、保護機能を切ってしまうまたは遅れてしまうことになるので、難しいです。
「その3」も考えて見ますが、10円アップを許してくれるかどうか(量産になると価格管理が厳しいのです)

このマイコンは、すでに量産車へ使われている実績があってそれを当てにしていたので残念です。
(すでに売られているマイコンと車はどういう扱いになるのか)

投稿日時 - 2014-03-16 18:01:08

ANo.1

膨大なオカネがかかるから、騒がないと動いてくれないと思います。
20年位前のIntelのペンティアムプロセッサのリコール事件も、
個別ユーザーがというより、世間的に騒がれたことが全数リコールにつながったようです。

参考URL:http://ja.wikipedia.org/wiki/Pentium_FDIV_%E3%83%90%E3%82%B0

投稿日時 - 2014-03-15 03:06:43

補足

ありがとうございます。
ペンティアムのことは少し覚えています。
民生品にもリコールがあるんですね。
やはり声の大きさなのでしょうか。

マイコンメーカーの言われるとおり修正するならば、すでに売られてしまった車についているマイコンのソフトも直さなければならないので、自動車メーカーの判断によってはその車はリコールになるのでしょうか。
(ちなみに、その車はリコールで有名になったあのメーカーの車です)

投稿日時 - 2014-03-16 17:37:52

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-