初めまして light greeeeen です.初歩的な質問で恐縮ですが,よろしければご教授お願い致します.
私はRL78/G1D R5F11AGJ の簡易i2cを使用して9軸センサと通信するシステムを作りたいと思っております.
現在は初期段階として,Port12のP120から出力し,Lチカをさせようとしている段階です.
先日までCS+forCCを使用していたのですが,諸事情によりCS+ for CA,CXに変更したため,仕様の違いが分からず困っています.
for CCの時は
コード生成(建設ツール)→周辺機能→ポート機能 からP120を使用しないから出力に変更.
その後,コードを生成し,r_cg_main.c内のvoid main(void)に下記のコードを打ち込むことで動きました.
しかし,
for CCの時はiodefine.hがあったため,P12_bit.no0=0; や P12_bit.no0=1; と書くだけでP120の出力を変更できたのですが,
for CA,CX の場合それがどのファイルに当たるのかわかりません.
個人的にはr_cg_port.h が関係しているのかなと思い,下記のmain関数の「P12_bit.no0」を r_cg_port.h 内の
#define _FE_PM12_DEFAULT (0xFEU) /* PM12 default value */#define _FE_PMC12_DEFAULT (0xFEU) /* PMC12 default value */
に変えてビルドしてみましたが,今度はCCでいうところの「.no0」に当たる箇所が見つけられていないためかエラーになりました.
ハードウェアマニュアルやサンプルプログラムを見ながら試行錯誤しているのですが,項目が多くてどこを見ていいやら...いまいち要領を得ません.
ご教授いただけますと幸いです.
--------------------------------------------------------------------------------
void main(void){ R_MAIN_UserInit(); /* Start user code. Do not edit comment generated here */ while (1U) {
uint32_t time;
P12_bit.no0=0; for( time = 320000 ; time > 0; time-- ){ NOP(); }
P12_bit.no0=1; for( time = 320000 ; time > 0; time-- ){ NOP(); }
} /* End user code. Do not edit comment generated here */}
解決しました!!
r_cg_port.c の中にがっつり書いてました.
ctrl + f を用いて_FE_PM12_DEFAULTをアクティブ・プロジェクトに対して一括検索すればよかったんですね.
そうじゃなくても,r_cg_port.h があるんだからそりゃ r_cg_port.c もあるでしょって話ですね.
お騒がせしました!
チョコです。
>for CCの時はiodefine.hがあったため,P12_bit.no0=0; や P12_bit.no0=1; と書くだけでP120の出力を変更できたのですが,
>for CA,CX の場合それがどのファイルに当たるのかわかりません.
CA-78K0RではそのようなSFR等の情報はデバイスファイルの形で、定義されて組み込まれています。
ちなみに、CA78K0Rの場合には、ポートについては、"P12.0"のようにデバイスのSFR名称がそのまま使えていました。
CC-RLでは"数値.数値"の表現が浮動小数点と解釈され、エラーになったために、"_bit.no"の表記を定義して使っているだけです。(アセンブラ記述では、"P12.0"のような記述は可能です。)
以上
for CA,CX のコンパイラ CA-78K0R の場合は"."で表記・定義できていたものが,for CCのコンパイラ CC-RL では出来ないので "_bit.no" と表記するということですね.
分かりました!ありがとうございます!