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コンパイラパッケージ |