覚え書きTOP

AVR TOP

Atmel studio 6 と Dragon で開発開始

 開発環境が良くないと触る気にならんのであります。
 自分の場合、ICE(デバッガ)と統合環境に体が慣らされてるんで、この辺がしっかり安定して動かないとアカン。
 統合環境は Atmel studio 6 (以後as6と略)が出たばっかりなんで、無料だしこれを使おう。
 デバッグアダプタはまともに買うと高いんで、AVR Dragon を使う。通販で確か5千円位で購入した。

 as6 にはCコンパイラやアセンブラが内蔵されてる。
 古いバージョンの Atmel studio みたいに細かいことを気にしなくても平気なのだ。やっぱり新しい物は良い物なのだ(笑)

<ご注意>
 Dragon のバッファは根性が無いとのことなので、ターゲットとの接続時には取扱注意。ここが詳しい。


2013/01/04
プロジェクト作成の手順

 フォルダ名に日本語が使えないのを忘れてた。
 コンパイル時にエラーにならずに、デバッグ時にエラーになる・・・それも「デバイスの接続を確認しろ」なんて出るから気が付かなかった。
 detail表示させたら、ELFファイルのロードエラーになってたんで、やっと気が付いたって話。
 くたびれた。

  1. プロジェクトの開始前にCPUのCKDIV8のチェックは外しておく。
     
  2. New project で新規作成。
    親フォルダを含め日本語は不可。日本語を使うとデバッグモードに入れなくなる。
      
  3. プロジェクトメニューからプロパティを選択して、DeviceタブでCPUを確認、ToolタブでDragonをdebugWIREで使うように指定。
    なおデバッグ時は最適化をNoneにして(ToolchainタブのOptimization)おいた方がやりやすい(デバッグ終了後に戻す)。
     
  4. ツールメニューから「Device programming」を選び、デバイスを確認。
      
  5. ISPの通信速度を1M程度に上げる ← 目的はこれなのだ。これでデバッグ時のFlashへの転送が速くなる。
     
  6. ステップ実行をする(DWENをチェックするかどうか聞いてくるようになった)。
     
  7. Dragonを外す(USBケーブルを抜く) → ターゲット電源OFF → ON → Dragonを接続する。
     
  8. Alt+F5でmain先頭にPCが来ることを確認・・・めでたしめでたし。



まずは新規作成じゃ。

 as6 を起動する・・・あれ、ビックリ! Visual studio 2010 まんま。
 普段から Visual studio を使ってるなら、なんも覚えることもなくそのまま使える。
 インストール時に Visual studio 用のプラグインを入れてるようで、要するに Visual studio だよ(笑)
 んじゃVS2010のつもりでプロジェクトを作ってみよっと。

2012/06/25 New project の作り方が分かったので修正した。
 初めてのプロジェクトは Tiny2313 をブレッドボード上で動かす。





 CPUを選択するとソースコードが表示される。
 で、そのままコンパイルすればOK。





 ソースで遊ぶ前にICEの選択をする。
 ライター及びICEとしてDragon を指示してやるだけ。






 んじゃ早速ライターをいじってみるか。
 フラッシュの書込み実験なり。
 ここでISPの通信速度に注意。
 高速すぎるとメモリのプログラミングやFuseの書込みでしくじるらしく、CPUの動作が変になるみたいだ。
 ま、分からないうちは遅めでやっておけば間違いない。





 今度は Fuse を書き換えてみた。詳細はこっち
 Fuse を書き換えないと ICE は動かないのだ。
 DWEN をチェックするとICEが動作できるんで、ステップ実行やブレークポイントを使えるようになる(その代わり Fuse の書き換えができなくなる)。

 AVRの記事を読んでると、あちこちに「Fuse ビットをいじるときは注意」って書いてあるけどさ、一個100円のCPUだから気にしない。
 念のために10個買ってあるし(^^;






 適当にコードを書いてICE動作を確認したんで、またFuseを書き換えてみたくなった。
 ここで
忘れずにやることあり!
下図のメニューを選んでICEモードから抜けること。これで DWEN のチェックが勝手に外れてISPでのアクセスが可能になる。




2013/02/17
 Service Pack 2 をあてたら、ちょい動作が変わったんで追記。
 新品のCPUを使い、まずはDeviceProgramingでCKDIV8を変更しようとしても上手く行かないことがある。
 で、以下の手順で解決した。





 その他
 ひっかっかったこと等を追記の予定。




 CKDIV8を外す
[WARNING] CKDIV8 is programmed and may interfere with debugging operation.
了解?
それとCKDIV8がチェックされてるときは250kでのアクセスはダメ。
デバッグ時だけじゃなくて、FuseやFlash書込のときも動作不良になる確率有り。
要するに CKDIV8 は最初に外しておくのが正解ってことじゃ。





 コメントの中の赤いアンダーラインがウザイ。
  で、あちこち探してたら外し方を書いてくれてました。こちら





 自動でカッコを追加されるのも邪魔くさいんで外す。





2012/08/03
 XPマシンにインストールしたら英語版になっちまった。
 言語の切り替えはここ。




2012/08/27
 デバッグに便利なIOポートの表示なんだけど、どっちがHでどっちがLか良く分からんの。
 塗り潰してあるのがHだね。





2012/09/01
 Fuseビットの詳細(328Pの場合)。 ここの下2/3辺り、ここにはビットの並びが出てる。




2012/09/27
 ブレークポイントがセットできなくなってしまった。
 逆アセンブル表示の画面ではブレークポイントをセットできるんだけど、Cのソースコードにセットできない現象が発生。
 「ビルド - ソリューションのクリーン」をやってからリビルドしたら解決。
 原因が分からなかったんで、サービスパック1を入れたりしたけど、この問題とは無関係だった。




2013/01/05
 Dragon2台を使うときの注意
 Dragonを2台持ってるんで、片方をISP専用、もう片方をHVPP専用にしている。
 で、この2台両方をISPで使うときは、ちょいとした注意が必要だ。
 CPUのDebugWIREを必ずOFFにしてから切り換える。つまり
Dragonを入れ替える前に デバッグメニューのDisable debugWIRE をやっておく
 こうしないとデバッグモードにもDeviceProgrammingにも入れなくなってしまい、かなり悩むよ。


2013/01/06
 コードが無視される
 最適化が効き過ぎてコードが無視されちまう。
 変数が見えないとかならともかく、関数その物が存在しないかのごとき振る舞い・・・ステップ実行もブレークポイントも効かないんね・・・どう言う最適化じゃ〜
 ま、律儀に volatile すれば良いんだろうけど。



2013/10/07
 拡張機能を使う
 AtmelStudio内の拡張機能を使ってみた。
 TerminalWindowをインストールして使ってみたけど、TerraTermと大差無いや。





AVR TOP

覚え書きTOP