GR-SAKURA
GR-KURUMI
GR-COTTON
GR-CITRUS
GR-PEACH
GR-KAEDE
GR-ADZUKI
GR-LYCHEE
GR-ROSE
GR-MANGO(*)
SNShield
Web Compiler
IDE for GR
TOPPERS関連
女子美コラボ
その他
※プロデューサミーティング中
作り方使い方資料
イベント関連
作品記事
体験記事
ライブラリ
ツール
その他・過去ファイル
オプションバイトへの設定も必要みたいですが、何かWDT使用例とか有りますか?
あぁ、もしかしてベクターテーブルのoptを書き換えればいい感じか。
AVR には WDT ライブラリが用意されていて Arduino からの利用も可能らしいですが
仕様はこれを丸パク参考にすれば良いのかな。
『RL78/G13 ユーザーズマニュアル ハードウェア編』の「第10章 ウォッチドッグ・タイマ」を見ると RL78/G13 のウォッチドッグ・タイマは 15kHz 誤差±15% の低速オンチップ・オシレータで動作し、タイマーがオーバーフローしてリセットが掛かるまでの時間を低速オンチップ・オシレータの 64, 128, 256, 512, 2048, 8192, 16384, 65536 いづれかの周期で発生するようオプション・バイトで設定するようなっており、AVR のようなライブラリ関数の形は難しいようです。
また、GR-KURUMI のライブラリでは gr_common/RLduino78/portable/e2studio/RL78/vector_table.c でオプションバイトの 1バイト目が 0xef となっており
const unsigned char Option_Bytes[] __attribute__ ((section (".opt"))) = { 0xef, 0xff, 0xe8, 0x85 };
WDTON(000c0H の ビット4)が 0 ということなのでこの辺りの設定も必要ですね。
とりあえず作ってみましたが、GR-KURUMI の起動後、setup() が実行されるのに 1秒近く掛かり、あんま短いウォッチドッグは使いものにならない感じです。
> GR-KURUMI の起動後、setup() が実行されるのに 1秒近く掛かり、
gr_common/RLduino78/cores/RLduino78_timer.c の中の init_system_clock() で、
for (i = 0; i < WAIT_XT1_CLOCK; i++) { NOP(); // XT1発振回路の安定化待ち }
としている箇所が極端に遅く、474ms の設定ではこの安定化待ち処理でウォッチドッグが働いてしまうようです。
NOP の代わりにウォッチドッグを叩く命令を入れることで短い時間の設定でもウォッチドッグが動作するようなりました。
XT1 の安定待ちに 1秒近く時間を取るのは間違ってる気がしますが、gr_common/include/RLduino78_mcu_depend.h での
#define WAIT_XT1_CLOCK 1850000
の根拠が知りたいですね。
『RX600、RX700シリーズサブクロック回路のデザインガイド』
https://www.renesas.com/ja-jp/doc/products/mpumcu/apn/rx/002/r01an1187jj0110_rx63n.pdf
若干条件が違うがやはり 1秒か。