今PCに入っている環境はAtmelStudio6.0と、そいつ付属のAVRSimulatorなんですが、
デバッグの段階で引っかかったのでメモ。
例えば、こんなコードを書いたとしましょう。
while(1) { PORTA.OUTTGL = 0xFF; //PORTA_OUT = 0xFF ^ PORTA_OUT;でも可 }
で、whileの中にブレークポイントを打ってデバッグ実行すると、
whileの1周目では普通にポイントに引っかかって止まるのですが、
2周目以降止まらなくなります。
勿論コード的には問題無いので実機に書き込むと問題無く動きます。
どうもコンパイラの最適化を無しにすると問題無くデバッグできるようになるので
何かしらの最適化の結果起きる事象の様です・・・ めんどい・・・orz
ちなみに
PORTA_OUT = 0xFF ^ PORTA_OUT;
PORTA.OUTTGL = 0xFF;
この2つのコード、やってる事は同じですが、実行速度にかなりの開きがあって、
最適化O1、2MHzクロックで動作時、上のコードで出力される矩形波は208.7kHzであるのに対し、
下のコードでは260.8kHzの矩形波が出力されます。
変なコード書かずに用意されてる文を使えって事ですね。わかります。