始めまして。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書き込みに必要な時間が短いので、書き込み中に電源が落ちて、書き込み中のアドレス制御が壊れて一瞬不正なアドレス(たまたまロックビットのアドレス)に変化していたのかもしれません。
電源の落ち方などで状況が変化するので、再現性はほとんどないかもしれません。
その個体で1回しか発生しておらず、別の機器でも発生していないので、イレギュラーな事象だとは思うのですが。。。