16 ビット マイクロコントローラー用の C コードをいくつか作成しています。ターゲットでアプリケーションをデバッグすると、最終的に AddressError ISR が発生します。データ シートを読んだところ、奇数メモリ アドレスに配置された 16 ビット値を読み書きしようとすると、これが発生する可能性があると書かれています。それが何を意味するかは理解できると思いますが、正しくないようです。次のような構造体を作成したとしても、それは意味しません。
struct foo{
uint8_t thing1;
uint16_t thing2;
};
エラーなしでthing2に読み書きすることは決してできないでしょうか?そうでない場合、それはコンパイラが自動的に事 1 と事 2 の間に 8 ビットをパディングして、事 2 が偶数アドレスで適切に整列されることを意味しますか? その場合、アドレス エラーはどのように発生するのでしょうか。