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から動作を制御することがありますので、不安が残ります。
チョコです。
>チェコさんの言うような事でしたら、もしかしたらパワーオンリセットと不正命令の二重リセットが掛かっていたら、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のリセット・モードに設定してみてください。