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から動作を制御することがありますので、不安が残ります。

Parents
  • チョコです。
    78K0R/KE3-AとRL78/G13では、オプション・バイトの構成が異なっています。(フラッシュのモード内蔵高速クロックの周波数の設定が追加されている。)ここらの変更は問題ないでしょうか?
    電源電圧とクロック周波数の関係で暴走して、書かれていないフラッシュの値(0xFF)を命令としてフェッチすることで、不正命令でのリセットとなったのではないでしょうか。
  • チョコ様

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

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

    >チェコさんの言うような事でしたら、もしかしたらパワーオンリセットと不正命令の二重リセットが掛かっていたら、RESFレジスターのTRAPビットが1になると思いますし、

    >単純にCPU内のRESFレジスターのTRAPビットに該当するウェハー上のコンデンサーの容量が他より小さめなので、電源立ち上げ時は閾値が曖昧になるのかなと考えていました。

     

    何か誤解があるようです。G13のマニュアルには、「PORリセットでRESFは全てクリアされます。」と明記されています。

     

     

    PORが解除された段階では、RESFは0x00です。問題はその段階でのクロック周波数です。オプションバイト(000C2H番地)でどのように設定されているかです。

    RL78はPORでの起動電源電圧(1.55V)は動作可能電源電圧(LVモードでの4MHz動作の1.6V以上)より若干低くなっています。LSモードやHSモードなら、さらに差が広がります。

    ここらは、フラッシュの動作モードなので、まともにフラッシュからデータが読めない可能性が高くなります。そうなると0xFFを命令コードとして読出し不正命令リセットになる可能性が高くなります。

    これを避けるには、とりあえず、オプションバイトの000C1HでLVDを2.7Vのリセット・モードに設定してみてください。

  • チョコです。

    その後、どうなったかが分からないので、ダメ押しします。
    TRAPリセットはCPUが起動して、命令を実行しようとした段階でのリセットです。
    PORはその前の段階でのリセットです。これが同時に発生することはありません。
    オプション・バイトをよく確認してください。
Reply
  • チョコです。

    その後、どうなったかが分からないので、ダメ押しします。
    TRAPリセットはCPUが起動して、命令を実行しようとした段階でのリセットです。
    PORはその前の段階でのリセットです。これが同時に発生することはありません。
    オプション・バイトをよく確認してください。
Children
No Data