おせわになります。
コンパイラのバージョンアップしてからか、共有体のメモリ配置でトラブルが起きているので相談させてください。
unsigned char とunsigned intを混合させた構造体を宣言した時に、合計8バイトで宣言しているはずが、unsigned char型の変数が2バイト分の領域が割り振られているらしく、共有体上で、他の変数とズレが発生してしまいます。具体的には、構造体を以下のように書いております。
union CAN_TX_DATA{ unsigned char send_tx_data[8]; //アドレス:0xfdfec ~ 0xfdff3 ・・・8領域確保されている struct{ unsigned char fowd_sw; //アドレス:0xfdfec ・・・先頭アドレスはおなじ unsigned int slot_data; //アドレス:0xfdfee ・・・0xfdfedにならず、0xfdecからの開始になっている????? unsigned char mode_data; //アドレス:0xfdff0 unsigned char dummy1; //アドレス:0xfdff1 unsigned char dummy2; //アドレス:0xfdff2 unsigned char dummy3; //アドレス:0xfdff3 unsigned char dummy4; //アドレス:0xfdff4 ・・・結果的に10領域確保され予定していたメモリを共有できていない }DATA; struct{ ・・・こちらは正常に配置されている。 unsigned int can_data01; unsigned int can_data23; unsigned int can_data45; unsigned int can_data67; }UINT;};
以上、どなたか心当たりがある方は、どうかお助けください・・・
CS+ for CA,CXのバージョンは、V4.02.00
ビルドツールは、CA78K0RのV1.72を使用しております。