チョコです。
RL78/L12のデモボード(YRPBRL78L12)を入手したので、ちょっといじってみました。
プログラムは以下のURLからダウンロードして、インストールしました。
http://japan.renesas.com/support/downloads/download_results/C1000000-C9999999/other/yrpbrl78l12_gui.jsp
デモプログラム(GUI)は比較的簡単に動作させることができました。何かいじってみようとしましたが、情報がありませんでした。そこで、ヨーロッパのサイトを覗きましたが、e2studio関係だけしかないようでした。
そこで、このボードを日頃使い慣れたCS+の環境で使えるようにしてみました。
接続は簡単で、デモボードのUSBコネクタを使って接続し、SW4とSW5をOCD側に切り替え、CS+の"使用するデバッグ・ツール"を"RL78 EZ Emulator"にするだけです。これで、接続は完了です。次に動作させるプログラムが必要になりますが、幸いにして、RL78/L12のサンプルプログラムの「RL78/L12 LCD 表示(時計編) CC-RL」が同じLCDパネルを使っていたので、これを流用することにします。同じLCDパネルを使っても接続が異なるので、そこを変更します。r_main.cとr_cg_userdefine.hで以下の書き換えを行います。(コード生成も変更しています。)
SEG21 → SEG19SEG22 → SEG20SEG23 → SEG21SEG24 → SEG22SEG25 → SEG23SEG26 → SEG24SEG27 → SEG25SEG28 → SEG26SEG31 → SEG27
これ以外にも、ポートも変更します。(修正結果はプロジェクトを参照してください。)P14 → P32 (UP)P142 → P31 (DOWN)
これで、サンプルプログラムがデモボードで動作します。このような変更したプロジェクトを添付しておきます。
GUIのデモプログラムに比べると寂しいですが、CS+の環境に移植したので、あとは自由に手を加えてください。
コード生成結果が気になるところを思い出したので、コード生成結果を少しいじりました。
問題の箇所は、r_cg_cgc.cのサブシステムクロック(32.768kHz)の発振安定待ち部分です。
16ビットの変数w_countで160回ループしているのですが、これでは全く時間が足りません。
CC-RLで出力されたオブジェクトをシミュレータで逆アセンブルして表示すると1回のループで
10クロック程度しかかかりません。これを160回ループしても80μsにもならないので、発振
安定待ちとは言えません。16ビット変数では65536回ループしても30ms程度です。。
そこで、" volatile uint32_t w_count;"と32ビットに変更しました。これで、1ループも
倍くらいになります。これで、1,000,000回もループさせれば1秒程度にはなります。これなら
発振安定時間としては大丈夫でしょう。(この部分はコード生成する度に書き戻されるので、
ループ回数は即値で指定し、r_cg_cgc.cだけを変更するのが楽でしょう。)
コード生成の担当には以前からクレームをつけていたのですが、いまだにおかしいままです。
夏頃の次のバージョンを期待しましょう。 → 鈴木さんよろしくお願いします。