

ある組み込みマイコン(ASSP)を使っています。AD変換と、コンパレータが入っていて、コンパレータは閾値以上の電圧が入ると割り込みをかけてくれます。
そのマイコンで誤動作が見つかり、AD変換値のレジスタにアクセスしているとき、コンパレータからの割り込み要求があると、マイコン自身がエラーが発生したと誤判定してプログラムをとめてしまいます。
コンパレータは電流を電圧に変えた信号が入るようになっていて、一定以上の電流が流れたら、スイッチ(FET)を切るため=保護のため使っているので、それをやめることはできません。
メーカーはマイコンを設計しなおすのはお金がかかるから、AD変換値を読んでいるときは、コンパレータを動作させない(=保護ができない)ようにして使ってくれといいます。
AD変換も電源電圧を読んでいてこれまた保護のために使っています。
もともと、そのコンパレータで保護もできるというのがウリであったのですが、メーカー・日本の販売商社の見解として、マイコンは不具合のまま(保護できないタイミングがある状態で)使ってくれというのですが(日本の販売商社がリクエストをとめている可能性もあります)、海外メーカーのマイコンというのはそういうものでしょうか?
ちなみにこのマイコンはすでに売られている車にも搭載されているものです。
みなさんのご経験と「こんな風に回避またはメーカーに働きかけた」といったことがあったら教えていただけませんでしょうか?
よろしくお願いいたします。
No.4ベストアンサー
- 回答日時:
ADのレジスタは非分断連続アクセスしないといけないのではないですか?
(例えば8ビットマイコンでADレジスタが16ビットなんて組み合わせ)
そうであればメーカーの言うとおり「操作している間割り込み禁止にする」のが当たり前だと思います。
コンパレータ割り込み条件が発生してから数クロックの遅延も許されないのなら、上流設計レベルで間違えていますね。
この回答への補足
確かに、変数破壊防止のために、AD値をバッファ変数に退避させるときに、よく割り込みとかAD変換を禁止にしています。割り込みが途中で入って、バッファ変数破壊にならないためです。
しかし、今回の場合は、もとのAD値がの入っているレジスタが、マイコン自身の割り込みによって破壊されてしまいます。
AD値を読むのがAD変換完了割り込にあるして、コンパレータ割り込みのほうが優先度が高いので、同時に発生しても、優先順位に従って、コンパレータ割り込みの処理とレジスタの更新をしてから、AD完了割り込みの処理をしてくれればよいのですし、ユーザープログラムはそうなっているのですが、マイコンの中では実際には1つのレジスタにリードとライトが非同期で同時に行われているのです。
マイコンは2チップ構成で、CPUとアナログ部分はユーザーのさわれない通信でやっていて、そのレジスタの値が壊されることによって、チップ間の通信エラーになってCPUが勝手にとまってしまうのです。
変数破壊防止のために、割り込みを禁止したりはしますが、マイコンがマイコン自身の処理でレジスタ値破壊を起こして止まってしまう何であるのかなという感じです。1チップ構成なら、通信がないので、CPU停止までいかないかもしれませんが。
No.3
- 回答日時:
>「その2」はマイコンメーカーから提示されたのですが、保護機能を切ってしまうまたは遅れてしまうことになるので、難しいです。
割り込み禁止→ADレジスタ読み出し→割り込み許可 の3命令で実行できますけど。
これで間に合わないほどクリティカルなのですか?
もしそうであれば、コンパレータ割り込みより優先順位の高い割り込みを使用できない事になります。
コンパレータの応答時間のほうが気になりそうです。
そもそも、異常事象の発生から保護が完了するまでに許される時間はいくらなのですか?
これにはアナログ回路の応答時間も含みます。
この回答への補足
お察しのとおり、時間にして数μ秒ですが、この間にどのくらい電流が上がってしまうかによります。
ただ、設計思想としてコンパレータ割り込みをとめてしまう時間が存在してしまうことを許してくれるかです。
No.2
- 回答日時:
修正にはお金がかかります。
修正の為にはエンジニアを割り当てなければならないし、そのエンジニアがするはずだった仕事が止まってしまいます。
メーカーがマイコンの修正に応じてくれないのであればそのまま使うしかないです。
実際にやってみなければ効果が有るかは分からないので、アイデアだけですが
その1.AD変換の読み取りをDMAで行う。(ソフトで読まなければエラーにならない可能性がある)
その2.AD変換を読み取る間は割り込み禁止にする。(割り込みは禁止解除後に発生する)
その3.コンパレータを外付けにする。
コンパレータの安いものなら10円ぐらいで購入できます。
http://www.digikey.jp/product-detail/ja/AP331AWR …
この回答への補足
ありがとうございます。
AD読み込みより、割り込みが原因としてのウエイトが重いようで・・・
しかし、「その1」は確認してみます。
「その2」はマイコンメーカーから提示されたのですが、保護機能を切ってしまうまたは遅れてしまうことになるので、難しいです。
「その3」も考えて見ますが、10円アップを許してくれるかどうか(量産になると価格管理が厳しいのです)
このマイコンは、すでに量産車へ使われている実績があってそれを当てにしていたので残念です。
(すでに売られているマイコンと車はどういう扱いになるのか)
No.1
- 回答日時:
膨大なオカネがかかるから、騒がないと動いてくれないと思います。
20年位前のIntelのペンティアムプロセッサのリコール事件も、
個別ユーザーがというより、世間的に騒がれたことが全数リコールにつながったようです。
参考URL:http://ja.wikipedia.org/wiki/Pentium_FDIV_%E3%83 …
この回答への補足
ありがとうございます。
ペンティアムのことは少し覚えています。
民生品にもリコールがあるんですね。
やはり声の大きさなのでしょうか。
マイコンメーカーの言われるとおり修正するならば、すでに売られてしまった車についているマイコンのソフトも直さなければならないので、自動車メーカーの判断によってはその車はリコールになるのでしょうか。
(ちなみに、その車はリコールで有名になったあのメーカーの車です)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- ドライブ・ストレージ SSDを追加したら昔のHDDがおかしくなった 4 2023/03/23 13:25
- 工学 1つのタクトスイッチで複数の並列回路を閉じ、アースにつなげることができるスイッチはありますか。 2 2022/08/06 10:38
- 扇風機・冷風機・サーキュレーター 扇風機の回路について、AC100Vをトランスを使わず、マイコンを駆動させることはよくありますか? 4 2022/08/11 04:25
- その他(ビジネス・キャリア) 交換部品、修理部品を使って製品開発をして販売すると違法ですか? 5 2022/12/22 01:34
- その他(生活家電) 太陽光発電リフォーム工事キャンペーンに完全に引っかかりました。 4 2023/03/03 16:49
- バッテリー・充電器・電池 自作太陽光発電の電流の安定化 6 2023/04/09 11:14
- その他(自然科学) LEDの接続について 2 2022/09/16 22:18
- その他(スマートフォン・携帯電話・VR) SIMカードをこのまま使い、中国製以外のスマホを新しく替い買える、SIMカードの挿入は自力 3 2023/01/25 18:39
- その他(コンピューター・テクノロジー) PIC16F1シリーズマイコンのNCO機能について 1 2023/04/18 08:41
- クラフト・工作 電子工作のキットを購入して工作をしているときに、途中で何度も作業を止めてマイコンとかを眺めることを楽 4 2022/04/10 15:57
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語によるウェイト
-
0xffffとは?
-
8ビットのデータの、先頭ビット...
-
ライン数とステップ数の違いは?
-
アセンブリ言語の質問のコト
-
レジストってなんですか?
-
PICC(HI-TECH SoftWare)によるI...
-
ビットシフトってどんな時使うの?
-
アセンブリ言語について
-
C言語で128bitの2進数のビット...
-
CASLとフラグレジスタ
-
CASIOのポケコンZ-1GRのアセン...
-
03分22秒36のような時間の単位...
-
文字参照は10進数と16進数では...
-
特殊な演算
-
命令について
-
【H8マイコン】HEWで埋め込みア...
-
アセンブラからC言語に変換する...
-
アセンブラのコマンドについて
-
アセンブラ言語で質問です。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
arduinoで信号間の時間を計測し...
-
PICでパルス数をカウントする方法
-
入力回数のカウントをする方法
-
C言語によるウェイト
-
H8マイコンでのカウントタイマ...
-
H8/3052 ディップスイッチについて
-
シリアル通信のデータ受信につ...
-
PICでスピードメーターを作...
-
RTCの通信方法(I2C、S...
-
16 bit timerで1秒を計る
-
Nios II 5.1IDEでの7セグメント...
-
PICの入出力切り替えの時間がプ...
-
PICでパルス数をカウントし、カ...
-
pic16f88のことで
-
LCDへの命令
-
C言語のプログラミングについて
-
Z80 タイマーの記憶方法について
-
Sleep関数について
-
0xffffとは?
-
8ビットのデータの、先頭ビット...
おすすめ情報