• 締切済み

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

kabasanの回答

  • kabasan
  • ベストアンサー率44% (264/588)
回答No.4

ADのレジスタは非分断連続アクセスしないといけないのではないですか? (例えば8ビットマイコンでADレジスタが16ビットなんて組み合わせ) そうであればメーカーの言うとおり「操作している間割り込み禁止にする」のが当たり前だと思います。 コンパレータ割り込み条件が発生してから数クロックの遅延も許されないのなら、上流設計レベルで間違えていますね。

R360-2000
質問者

補足

確かに、変数破壊防止のために、AD値をバッファ変数に退避させるときに、よく割り込みとかAD変換を禁止にしています。割り込みが途中で入って、バッファ変数破壊にならないためです。 しかし、今回の場合は、もとのAD値がの入っているレジスタが、マイコン自身の割り込みによって破壊されてしまいます。 AD値を読むのがAD変換完了割り込にあるして、コンパレータ割り込みのほうが優先度が高いので、同時に発生しても、優先順位に従って、コンパレータ割り込みの処理とレジスタの更新をしてから、AD完了割り込みの処理をしてくれればよいのですし、ユーザープログラムはそうなっているのですが、マイコンの中では実際には1つのレジスタにリードとライトが非同期で同時に行われているのです。 マイコンは2チップ構成で、CPUとアナログ部分はユーザーのさわれない通信でやっていて、そのレジスタの値が壊されることによって、チップ間の通信エラーになってCPUが勝手にとまってしまうのです。 変数破壊防止のために、割り込みを禁止したりはしますが、マイコンがマイコン自身の処理でレジスタ値破壊を起こして止まってしまう何であるのかなという感じです。1チップ構成なら、通信がないので、CPU停止までいかないかもしれませんが。

関連するQ&A

  • 1Vで動作するマイコン

    電圧1Vで動作するマイコンってありますでしょうか。 ・電源、I/O電圧とも1V ・速度は数MHz以上あれば理想的ですが、もっと遅くてもかまわない。 ・C言語でプログラムできる ・1個から(多くても数十個単位)で手に入る(個人では買えなくても商社を通して買えればいいですが) ・フラッシュROM(何度も書き直せる) ・ライタが簡単に手に入る(or簡単な回路で書き込める) ・PCと簡単につなげる。(UARTとかがあればいいです。)  (超理想的には)USBとかでつながって、しかもマイコン上にレギュレータ(or DC-DCコンバータ)ものってて、USBバスパワーから1Vも作れる、とか都合がいいものがあるといいんですが。。 まあ、条件を全部満たしていなくても、とりあえず、1Vで動作するマイコンで使いやすそうなのがある、という情報だけで結構です。 よろしくお願いします。

  • 電流遮断回路2

    以前,下のリンクで 「電流がだんだんと下がっていく系で,電流値がある値以下(例えば3mA程)になったときに電源を切る回路を作りたい」 という質問をしたものです. http://oshiete1.goo.ne.jp/qa4092810.html リンクのANo.9でのtanceさんの考えていただいた回路を早速自作してみたのはいいのですが,どうもうまく動作しませんでした.抵抗値の組み合わせがわるいのかな・・・などと考えて,色々試してみたのですがどうもうまくいきません. コンパレータで電流値を比較してある値になったらFETで切ると,という予定だったのですが,コンパレータの数値が2vほどしかでず,FETもうまく作動しないのです. 打開策として回路シュミレータ(Circuit-Maker 6.0 Student)を使ってコンパレータの動作確認からボトムアップ的に回路の確認・設計を行っていますがやはりFETの動作がうまくいかず困っています.コンパレータのoutputをFETのGateにコンパレータの出力が入れば,sourceからdrainに流れる電流がONになる(N型FETなので)だと思ったのですが・・・ 何でも良いので,よろしければ知恵を貸していただけないでしょうかm(_ _)m

  • FETの動作

    Pch-MOSFETの使い方がいまいちわかりません。 3.3V動作のマイコンで5Vの電圧を負荷にかけたいのですが、 マイコン--->FET(G) 5V----->FET(S) 負荷----->FET(D) と接続し、3.3VのON-OFF(マイコン制御)でFETのON-OFFができたり するものなのでしょうか? FETのデータシートにゲートしきい値電圧(VGS(th))が2Vとかありますが これはG-S間電圧が2V以上でONするとか2V以下でOFFするとかいう 意味なんでしょうか? という以前にこんな接続で動くかいっ!! って見当ハズレなことを言うてるかもしれませんが・・・ 教えて下さい。よろしくお願いします。

  • オペアンプの動作電圧に幅をもたせるにはどうすれば

    個別部品で簡易的なオペアンプを作ってみようと考えています。 差動増幅などで構成されていると思うのですが、どうすれば動作電圧に幅をもたせることができるのかがよくわかりません。 うろ覚えですが、FETの定電流源でツェナーダイオードを動作させ基準電圧を作り、そこからカレントミラー等で各回路に定電流を供給する、というようなオペアンプの等価回路を見たことがあるような気がします。 こういった定電流源が動作電圧に幅を持たせるポイントなのでしょうか? どうかよろしくお願いします。

  • FETの駆動電圧

    回路設計初心者なので、詳しい方教えてください。 FETのデータシートで、駆動電圧が、2.5Vのと4Vの物がありますが、良くわかりません。 FETのゲートを動かす電圧と考えてよいのでしょうか? 社内の昔作った回路図では、3.3VのマイコンでFETを動かしている物があるのですが、 そのFETは2.5Vの駆動電圧の物を使ってました。 今回、5V動作のマイコンでFETを駆動したいのですが、 5Vの場合は、4V駆動のFETを使えばよいのでしょうか? また、2.5Vの電圧の物でも、5Vのマイコンで動作させることが出来るのでしょうか? ポイントを教えていただけると嬉しいです。

  • AVR ISR(ANALOG_COMP_vect

    AVRマイコンのISR(ANALOG_COMP_vect についての質問です。 このISR(ANALOG_COMP_vectはAVRに内蔵されているコンパレータの 入力電圧が基準電圧を上回ったときに実行される割り込みなのでしょうか。

  • 最大電圧5Vのアナログ信号を最大電圧3.3Vに変換したいのですが

    3.3V動作のマイコンでAD変換をするために 最大電圧5Vのアナログ信号を最大電圧3.3Vに変換したいのですが どのような回路を組めばいいのでしょうか。

  • コンパレータ(オペアンプ)の定格電流

    コンパレータのメーカ仕様書を読んでいると、電圧に対する制限は記載されているのですが、電流制限は記載されていません。コンパレータ(オペアンプ)では、入力・出力の電流制限が無いのは何故でしょうか?

  • ステッピングモーターの過電流検出方法

    ステッピングモーター(2相・ユニポーラ)で過負荷を検出したいのですがコイルに流れる電流量の増加を検出すればよいのではないかと思いますがどのようにすると良いでしょうか? おおよそで電流を電圧変化に変換しコンパレータで検出できるかなと考えていますがどういう形で電流を取り出し、電圧変換すればよいでしょうか? よろしく御願いします。

  • MOS-FETの使い方 2

    OV~8Vの直流電圧の変化をLEDの光に置き換え、CdSの抵抗値を変化させる下図のような回路を製作しています。 電圧の変化はMOS-FETを使って電流に変換しているのですが、MOS-FETの閾値が2Vほどあるので入力電圧が0V~2Vのときの電圧の変化をLEDに反映させることが出来ずに困っています。 数日前にもここでアドバイスして頂きゲート電圧を閾値分シフトする、つまり入力電圧が0VのときVgsに2Vかかるようにすればよいということが分かっているのですが、実際にやってみるとうまくいかず具体的な方法がよく理解できていなかったようです。 できればオペアンプは使わずになるべくシンプルな方法で済ませたいのですが、どなたかアドバイスお願いします。 ちなみにVinはオペアンプ4558の出力です。(http://kazukiakiyoshi.cocolog-nifty.com/photos/schem/image1.jpg)