Renesas Synergy™

FAQ 1011540 : RL78コンパイラCC-RLを使用しています。割り込み関数で変数の値を書き換えたが値が反映されません。

Q: 質問

RL78コンパイラCC-RLを使用しています。割り込み関数で変数の値を書き換えたが値が反映されません。


A: 回答

通常関数と割り込み関数で参照している外部変数にはvolatile宣言を付加してください。

(例)
int data;
void func(int x)
{
 

data = x; /* <- 値をdataに代入後、割り込み関数でdata変数が書き換えられた場合、data変数の値は既にレジスタに格納されており、レジスタの値が使用されるため、割り込み関数で書き換えた値が反映されない場合があります */

  ・・・  
  if(data == 0)
  {
    ・・・
  }  
}    
volatile int data;
と宣言してください。

 

適用製品

e² studio
CS+ (旧 CubeSuite+)
RL78ファミリ用Cコンパイラパッケージ
他にご質問がございましたら、リクエストを送信してください