User Tools

Site Tools


Sidebar

製作物
燃焼系
自動車ターボ流用ジェットエンジン
空き缶パルスジェットエンジン

弱電系
半導体式γ線検出器
半導体式α線検出器
AVRプログラム集

強電系
オーディオフライバックトランス
テスラコイル1号機(PWM式)
テスラコイル2号機(DRSSTC)
テスラコイル3号機(DRSSTC)
TIG溶接機
バッテリー溶接機1号機
バッテリー溶接機2号機
HeNeレーザー
ZVSドライバ

化学系
塩化銅エッチング

その他
雑多な物、便利な技など
FETの死亡診断
表面実装部品の取り外し
ICのシリコンダイの取り出し
バッテリー溶接
放射性鉱物探し
工具の消磁
特性不明なコア材の特性調べ
携帯の温度センサーの騙し方



過去のBlog記事一覧

他サイトへのリンク

管理人の連絡先など
管理人のYoutube
管理人のTwitter

blogspace:atmelstudio6.0とxmegaのデバッグ_outtgl

AtmelStudio6.0とXmegaのデバッグ(OUTTGL)

今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の矩形波が出力されます。
変なコード書かずに用意されてる文を使えって事ですね。わかります。

blogspace/atmelstudio6.0とxmegaのデバッグ_outtgl.txt · Last modified: 2014/03/03 17:36 by hirosi