質問: マイコンのメインルーチン内でwhile(1)文を用いてループしたとき、正常な動作をしない事があります マイコンのメインルーチン内でwhile(1)文を用いてループしたとき、正常な動作をしない事があります。 使用しているマイコンはavrです。 具体的には 各種インクルードファイル int temp =0; //tempはタイマー割り込みによって加算される int main (void) { 初期設定 while(1) { if (temp >= 50) { 全割り込み禁止 led出力トグル temp =0; 全割り込み許可 } } } と記述するとwhileループ内のif分岐がうまく処理されない事があります。 この時whileループ内に1usのdelayを入れると正常に動作します。 具体的には int main (void) { 初期設定 while(1) { if (temp >= 50) { 全割り込み禁止 led出力トグル temp =0; 全割り込み許可 } _delay_us(1); } } のように記述すれば問題なく動きます。 このような症状の原因としては何が考えられますでしょうか?
回答: 何が「正常な動作」で, 具体的にはどう「うまく処理されない」ことがあるんですか?