RL78/G13と78K0R/KE3-AでRESETとRESFの動きが異なる

78K0R/KE3-AのファームをRL78/G13に移植してみて、RESET周りの動きが異なっていて困っています。

1, RL78の方の電源を入れた時、RESFレジスターのTRAPビットが1になっている。他のビットは0。

 ハードリセットを掛けた時やVddのみの入り切りでは、RESFレジスターは全て0。

 GNDとVddの両方を入り切りしたときに(同時ではなく、GNDとVddの入り切りに時間差があっても)、TRAPビットが1になります。

 78K0R/KE3-Aの場合はファームを書き換えた直後に電源を入れた時にTRAPビットが1になりますが、その後電源を入り切りしてもTRAPビットが1になる事はありませんでした。

 

 上記の78K0R/KE3-AとRL78/G13の動作は再現性があります。

  RESFレジスターの読み込み場所は、各機能の初期設定を行う前のファームの先頭で読み込んでおり、メインループの外側です。

 RL78のこの動作を回避する方法はありませんか? 78K0R/KE3-Aと同じ動きで良いのですが

   

2, 以下の現象は常に起きるのではなく、起きたり起きなかったりします。

 RL78/G13の-RESET端子をLowにしたまま,電源の入り切りを行うと、RL78/G13が動かなくなる。再度動かすにはファームを書き換えなければならない。

 78K0R/KE3-Aではこの現象が見られませんでした。

 他のCPUから動作を制御することがありますので、不安が残ります。

  • ハルヒさん
    >RL78/G13の-RESET端子をLowにしたまま,電源の入り切りを行うと、RL78/G13が動かなくなる。再度動かすにはファ>ームを書き換えなければならない。
    ということでフラッシュ・メモリが消えているもしくは書き換わっているのではと疑いますが
    TOOL0というような端子がモード信号になっていますが調べられましたか
    TOOL0端子,RESET端子の制御でフラッシュ・メモリ・プログラミング・モードに遷移しますので注意です
  • IKUZOさん、返信ありがとうございます。

    >フラッシュ・メモリが消えているもしくは書き換わっているのではと疑います
    はい、こちらを疑っていました。
    どうしてそうなるのか疑問でしたが、
    E1とか無しで実機で確認したのですが、フラッシュ・メモリ・プログラミング・モードに遷移してたら、
    辻妻が会います。

    ただ、どうしてRL78では起きたのか? 78K0Rと同じ回路なのですので、そこらへんが疑問です。

  • ハルヒさん、こんにちは。NoMaYと申します。

    以下の部分ですが、VDDを先に繋いでGNDをその後で繋ぐのですか?私の場合は(というか一般的には?)、その手順は何かマイコンを壊してしまう危険性が気になってやらないと思うのです。(マイコン側の回路全体が他とはアイソレートされていれば大丈夫なのでしょうけれども、、、)

    GNDを先に繋いでVDDをその後で繋ぐ、というのでは何か都合が悪いことがあるのですか?(この順番が一般的だと思うのです。) 動きが異なるという話以前の話ですが気になりましたので、、、

    >  ハードリセットを掛けた時やVddのみの入り切りでは、RESFレジスターは全て0。
    >  GNDとVddの両方を入り切りしたときに(同時ではなく、GNDとVddの入り切りに時間差があっても)、TRAPビットが1になります。

  • NoMayさん、こんにちは

    イヤイヤ、VddをGNDより先に繋ぐってことはしませんよ。

    コネクター等を用いれば、VDDとGNDはほぼ同じタイミングで接続できますが。
    此処ではCPUの動きを確認するため、電源を切るときはVddを先に切り、数秒後にGNDを切る。
    電源を入れる時はGNDを先に繋ぎ、数秒後にVDDを繋ぐことを試みました。

    仰るように、コネクターで電源の入り切りをすると、挿入の仕方によってはVDDが先に繋がってしまうためかと、GNDとVddの入り切りに時間差を付けてみたのです。

    電源が暴れているなら、RESFレジスターのlVIRFビットが立つ方納得いくのですが・・・
  • ハルヒさん、こんにちは。NoMaYです。

    そういうことですと、以下の違いというのは、こういうことですか? ちなみに、プログラムが意図せず書き換わっているかどうかは、期待されるプログラムイメージと同等のHEXファイルを作成して、RFPでベリファイしてみれば確認出来ると思います。試してみてはどうでしょうか?それから、そもそも、78K0R/KE3-Aの場合にファームを書き換えた直後に電源を入れた時にTRAPビットが1になることからして、何かおかしいですよね、、、

    >  ハードリセットを掛けた時やVddのみの入り切りでは、RESFレジスターは全て0。
    >  GNDとVddの両方を入り切りしたときに(同時ではなく、GNDとVddの入り切りに時間差があっても)、TRAPビットが1になります。

    前者:

    (1) 電源側とGNDは繋いだまま、電源側とVDDのみ接続を切った後で再度接続する

    後者:

    (1) 電源側とVDDの接続を切る
    (2) 電源側とGNDの接続を切る
    (3) 電源側とGNDを接続する
    (4) 電源側とVDDを接続する

  • ハルヒさん、こんにちは。NoMaYです。

    ところで、タイトルにあるWDTEに関しては何があるのでしょうか?(もしタイトルの書き間違いならば、タイトルも後からでも修正出来ますよ。)

  • チョコです。
    78K0R/KE3-AとRL78/G13では、オプション・バイトの構成が異なっています。(フラッシュのモード内蔵高速クロックの周波数の設定が追加されている。)ここらの変更は問題ないでしょうか?
    電源電圧とクロック周波数の関係で暴走して、書かれていないフラッシュの値(0xFF)を命令としてフェッチすることで、不正命令でのリセットとなったのではないでしょうか。
  • NoMaY様
    「RESFレジスターのTRAPビットが1」の件についてでしたら、CPU内部のレジスターの振る舞いですのでベリファイは意味がないと思いますし、
    「-RESET端子をLowにしたまま,電源の入り切り」の件でしたら、IKUZO さんの仮説がしっくりします。

    前者、後者はその通りです。

     

     

    題名の間違い指摘有難うございます。

  • チョコ様

    クロックとの関係も怪しいとは思っていたのですが、なぜそうなるか判らなくて、
    78K0R/KE3-Aの時は外部クロックでしたので水晶発振の安定待ち時間があり、RL78/G13では内部発振を使用していますのでその差があるかも。

    チェコさんの言うような事でしたら、もしかしたらパワーオンリセットと不正命令の二重リセットが掛かっていたら、RESFレジスターのTRAPビットが1になると思いますし、
    単純にCPU内のRESFレジスターのTRAPビットに該当するウェハー上のコンデンサーの容量が他より小さめなので、電源立ち上げ時は閾値が曖昧になるのかなと考えていました。
  • ハルヒさん
    もしかするとRL78/G13のボードが要求を満たしていないのかもしれないのでとりあえず移植をする前に最初の空のmain関数のみをテスト作成してボードの検証をなさったらいかかでしょうか