Renesas Synergy™

FAQ 1008221 : ユーザ・ポートはどのように設定できますか?

回答

次の例のように、volatile指定して、最適化を避けてください。


[ポート記述の手順例]

1. ポート・マクロ(型)の定義
----------------------------------------------------------------------
#define  DEFPORTB(addr)  (*((volatile unsigned char *)addr))     /* 8bit port */
#define  DEFPORTH(addr)  (*((volatile unsigned short *)addr))    /* 16bit port */
#define  DEFPORTW(addr)  (*((volatile unsigned int *)addr))      /* 32bit port */
----------------------------------------------------------------------

2. ポートの定義(例:PORT1 0x00100000 8bit)
----------------------------------------------------------------------
#define  PORT1  DEFPORTB(0x00100000)     /* 0x00100000    8bit port */
----------------------------------------------------------------------

3. ポートの使用
--------------------------------------------------
    {            
        PORT1 = 0xFF;  /* PORT1への書き込み */
        a = PORT1;     /* PORT1からの読み出し */
    }
--------------------------------------------------

4. Cコンパイラの出力コード
-----------------------------------
		...
	mov	1048576, r10
	#@BEGIN_VOLATILE
	st.b	r20, [r10]
	#@END_VOLATILE
	mov	1048576, r11
	#@BEGIN_VOLATILE
	ld.b	[r11], r12
	#@END_VOLATILE
		...
-----------------------------------



構造体を宣言し、その構造体変数を特定のセクションに割り当て、 リンク・ディレクティブで対応するポート・アドレスに割り当てることにより、 CA850の内蔵周辺I/Oレジスタと同様に“X.X” 形式のビット・アクセスができます。
ただし、1ビット/8バイト・アクセスがある場合、 ビット・フィールドとバイトの共用体にする必要があるので、 “X.X.X”形式になります。


変数のセクション割り当ては、#pragma sectionやセクション・ファイルで行ってください。

 

 

適用製品

V850用コンパイラパッケージ [CA850]
他にご質問がございましたら、リクエストを送信してください