M16C/65C データフラッシュのロックビットが意図せず立ってしまった

始めまして。M16C/65Cのデータフラッシュに関して質問します。

M16C/65Cを使用し、DCモータを回転させる機器を作成しています。

耐久テストをするために、ADに外部から信号を入力して一定期間ごとにオンオフさせ、
モータが停止しているタイミングで動作時間をデータフラッシュに書き込むプログラムを作成しました。

機器を5台作成して、E8aを使用しFDTでプログラムを書き込み、テストを行っていました。
途中1台について、ADに信号を入力する治具が故障(可変抵抗器が破損)して停止したため、治具を修理して再開させましたが、データフラッシュに時間が書き込まれなくなっていることが分かりました。
調べてみると、データフラッシュのロックビットが立っていました。

ロックビットは通常、フラッシュROMにプログラムを書き込む際に設定する物だと思うのですが、外的要因で書き換わってしまうようなことが起こり得るのでしょうか?

  • こんにちは

    M16Cは詳しくないのですが、教えて下さい。

    ロックビットが立っていたとは、データフラッシュからリードロックビットのフローを実行してFMR16を読み出すと0(ロック)となっていたということでしょうか?

    それとも1(非ロック)となっていたのでしょうか?

  • わわいです。

    電源ラインにスパイクノイズが乗っていないか調べてみましょう。

    モータを駆動している、ということで、いかにも乗ってそうな感じですねー

    CPUなりフラッシュメモリなりの定格から外れた使い方をしていれば、何が起きても不思議はないってことですね

    まーしかし、電源のスパイクってのは、ふつーのオシロをふつーに繋いでふつーに見ても、見ることができなかったりするんで難しいところですが。

  • どーにも原因追求できなかった場合は、モーターありの環境とナシの環境で、それぞれ耐久試験やって変化があるか見ますかね。どっちでも発生するならモーター以外に原因がある、と。

  • インターフェース回路に手を入れて不具合が発生するようになったのだから、インターフェース回路の入出力のチェックでは?

    マイコンは外部電源でコントロールされていると言うことですよね?例えば、0~1Vはモータが回る。2~3Vでモータを停止してフラッシュに動作時間を書き込み行く。適当な時間をの後に再びADCは1V以下になってモータが再び回る。

    ①モータが回り始める際にロックビットを操作していませんか?フラッシュの操作が間に合わないのでは?

    ②外部電源が電圧を変える際に、瞬間的に0Vになるような事はありませんか?瞬断が無視できなくなっている可能性もあります。

    ③修理の際に接続を外したと予想するので、接続ミスが予想されます。

  • ケイイチNさん

    まさに、フラッシュ書き込み中に電源を落としたりしていませんか?

    ロックビットはデータよりも0書き込みに必要な時間が短いので、書き込み中に電源が落ちて、書き込み中のアドレス制御が壊れて一瞬不正なアドレス(たまたまロックビットのアドレス)に変化していたのかもしれません。

    電源の落ち方などで状況が変化するので、再現性はほとんどないかもしれません。

  • E8aとFDTを使用して状態を確認したところ、ビットが立っているのが確認できました。

  • その個体で1回しか発生しておらず、別の機器でも発生していないので、イレギュラーな事象だとは思うのですが。。。

  • 全く再現しないので気味が悪いところです。

    ただ、製造しているのがコンシューマー製品なんですが、稼働時間等を記録するような機能を組み込んだ場合、ユーザーがいつ電源を落とすかわからないので、書き込み最中に電源が落とされる可能性があると思います。そうなるとこの様な事象が起こることがあり得るということなのでしょうか。だとすると何らかの回避策を考える必要がありそうです。

  • マイコンの乗った基板とは別の電源基板からモーターとマイコン基板にそれぞれ24Vと5Vを供給して、モータはPWMで制御していています。ADは電圧を直接操作するのではなくPWMの幅を決めるのに使っています。(ソフトが専門なので回路についてはあまり詳しく説明できなくて済みません)

    可変抵抗器を物理的に動作させる耐久試験器があったのでそれを接続していたのですが、試験機自体が壊れてしまって(抵抗器が破損)おかしくなりました。抵抗器が壊れるときに変なノイズの様なものが発生して、書き込み動作中のマイコンに悪さををしたのかもしれません。

  • うーん、その「耐久試験器」ってのを、ナニやってどう壊れたかにも寄るでしょうか。

    シンプルに考えるなら可変抵抗の両端に電源GNDでセンターがAD入力接続でしょうけど、例えば落下破損等であれば、瞬間に可変抵抗器の両端の接続線が短絡する可能性もある、でしょうか。となれば通常は、可変抵抗器の接続電源はマイコン電源と同じ電源ソースを用いていると思われますので、瞬間停電状態が発生したとも考えられます。という状況が発生し得るなら、どういう挙動が起きても不思議ではないかと。

    と、これくらい妄想と嘘が言えれば、上長は納得してくれるのではないでしょうか?あとは当初予定通りの台数と時間でエージングが完了したなら、製品出荷でいいんじゃないかなー。なんか動作仕様を聞いてると、フラッシュの書き換え寿命回数の方が気になりましたけど。仕様書では1万回までって書かれてる?1日に10回モーター止まるとして3年?

    電源が不安であれば、電源監視ICとかを外付けで4.5vくらいにして出力をマイコン割り込み端子に入力し、マイコン電源のみ逆流防止のうえ大きいCを抱かせといて、割り込み入った瞬間にCの電荷だけで2.7vまで降下する間にデータフラッシュ操作を即停止する、といった構成になるですかね?詳しくないですが。。