RL78とCS+で気が付いた、細かいことのメモです。
※ルネサスは例によって「リンク切れまくり」です(リダイレクトする気が無いようです)。ご容赦願います。
ルネサス内で文章番号で検索してみてください。
CS+の最初の一歩
CS+のコード生成と生成されたAPI関数の使い方が分かる。
コード生成プラグイン学習ガイド API関数のリファレンス
CPUの機能の動画(分かりやすく短く簡潔に纏まってるので目を通しておくとお得)。
RL78ワークショップ
リンク
- CS+のコード生成が使える対応マイコン一覧(ページ下の方)
- RL78/G14 CPUマニュアル R01UH0186JJ0330 RL78概要
- CS+ ビルドツール操作編 R20UT3284JJ0102:リンクオプションの説明があるP26~(HEW風のセクション指定方法の記載有り)
- CS+ RL78 デバッグツール編 R20UT3629JJ0100
- CC-RL マニュアル R20UT3123JJ0103:コンパイラのマニュアル(全ライブラリ関数の説明、アセンブラ/セクション/スタートアップの説明もある)
- RL78 全資料:ルネサスにあるRL78絡みの全資料一覧
- RL78 サンプルソース カフェルネ:I2CとUARTのソースがたっぷり
あれこれ・・・随時追加
- RL78は動作電圧範囲2.4~5.5Vと広い。IOLは20mA(IOHは10mA)、4V以上であれば40mAのIOL(IOHは20mA)のポートもある。シリアル通信用のポートはオープンドレインだ。なお未使用端子は「入力+内部プルアップ」すれば省電力になる。
- 秋月R5F10Yでは3.5V以上を入れないとROMが焼けない。この制約があるので3.3VタイプのFT232を使う時は要注意(ROM焼きの時だけE1の電圧をONにするなど)。
- CPUの選択を間違えるとロード時に起動時にフラッシュROMを消去しろ(E1202855)が出る。
- 納品時にはWDTを設定してからRFPで焼き直す(E1ナシで動かないことがある)。
- デバッグしようとすると逆アセンブルの画面しか出てこない(ソースコードが出ない)ことがある。ネットワーク上のパスでコード生成をするとこうなる。WORKGROUPを公開してると、間違ってそっちのパスからアクセスし、その状態でコード生成すると症状が発生する。
最低限の配線
VSS、VDD、RESET+プルアップ抵抗(G10では自動的に内部プルアップされるので不要)の3本で取り敢えず動く。
未使用端子は「入力+内部プルアップ」すれば省電力になる。
CC-RLでのGPIOのBITの触り方
P7_bit.no6 = 1; // P76 Out
なおiodefine.hがソースとして出てくるようになった。
RFP(フラッシュ・プログラマ)を使う
CS+と一緒にインストールした「ルネサス・フラッシュ・プログラマ」の無料版。
使うCPUの選択を間違えると、スタートボタンを押したときに「E1002006 シグネチャ・リード・エラー」ってのが出る。
「あんた、CPUを選び間違えてるよ」って出してくれれば直ぐに分かるものをわざわざ偉そうに難しくしやがって・・・このヘッポコ役人 (^^;
安定して焼ける。とても結構です。
設定するのは電源程度かな?
※RFPで焼いてからE1でデバッグしようとすると「IDコードが間違っています。(C06202202)」が出る。解決法はこのページの下の方。
この関数のコール元はどこ?
コールスタックの表示方法を見付けた。
かなり便利なスマート・マニュアル
CS+V6で追加された機能で、コード生成で自動生成されたコードを確認・改造する時にチョー便利。
マウスをレジスタ名に持って行くとマニュアルの該当ページが表示される(自分の場合はフローティングにしてサブディスプレイに表示してる)。
いちいちPDFのマニュアルを検索して開く必要が無い。
おお~これは便利。日本語マニュアルだし、ルネサスも最近は大分良いな~
IDコードが間違っています(C06202202)
RFPでフラッシュを焼いてから、CS+でデバッグしようとすると、このエラーが出る。
E1の「起動時にフラッシュROMを消去する=”はい”」にすれば解決(この指定はE1接続後は”いいえ”に戻るので、必要なら毎回指定する)。
FAQにこのエラーの出る原因がコチャコチャ書いてあるけど、知りたいのは「どうやればデバッグを再開できるのか」ってことなのよ。
WDTでSTOP解除
ここに説明あり。
WDTのタイムアウトでSTOPから目覚める方法。
※WDTのカウンタは電気を食わないんで、省電力作戦では何かと便利です。
コード生成を以下のように設定する。
①WDTを使用する
②HALT/STOP中もWDTカウンタを進める
③割込みを許可
これでSTOP中もWDTカウンタが進み、タイムアウトするとSTOPから抜けてくる。
ただしCPUリセットは発生しない。つまりWDTリセットはSTOP中は無効であるってことみたい。
DTCってなに?
RL78は型番によってDMACかDTCの二種類のデータ転送装置を持ってる(ルネサスは、SPIをCSI、MOSIをSDO、MISOをSDIなどと勝手に名前を変えてるから分かりにくいんだけど、DMACとDTCは微妙に差があるんで要注意)。
んま、ぶっちゃけて言えば「DMACと比べてDTCは高機能だけど低速」ってことみたい。
DMACとDTCの違い ざっと知りたければここに動画有り
コメント