※Arduinoやmbedの記事ではありません。
AVRをCとアセンブラで開発、JTAGICEでデバッグ。
CPUはTiny2313・ATmega328・ATmega1284など。
ラジコンで使う比例制御方式のサーボを動かす記事があります。
AVRはArduinoに使われてますが、ここではJTAGICEと共にC言語やアセンブラで直接コーディングしています。
Atmel studio 7とJTAGICEを組み合わせた環境で、Arduinoが動くそうです。英語 日本語
・ハードはArduino
・ライブラリもArduino用をIMPORT
「Arduinoのハードとライブラリを利用してJTAGICEでデバッグ」
Arduinoの最大の弱点(貧弱なデバッグ環境)をカバーしてAVRも生き返る。
μVision+mbedが高性能だけど、Tiny13や4313で済むならAVRの出番です。
はじめに
IDEはAtmel studio 7、Windows10に新規にインストールしました(問題無く動作しています)。
Atmel studioは6 → 7と新しくなって、使い方が少し簡単になった。
ただDragonが動かない。二台持ってるどっちも動かず。
JTAGICEは動きます。
JTAGICE3
JTAGICE3を購入したときの記事です。
Digi-keyで1万円。詳しい説明はこちら。
8bitのAVRしか触らないんで、5千円のDragonがあれば全然要らない。
JTAGICE3は高圧プログラミングが出来ないがJTAGが使える。
JTAGで使うとDragonより早いのでかなり快適。
蓋を開けたところ。
おまけでついてきたコネクタ。
ISPとJTAGとaWireとかなんとか色んなデバッグIFに対応してる。
1ピンをマジックで赤く塗っておいた。
こんな感じで使ってます(I2CでMLX90614BAAの動作確認をしてるところ)。
使い方はDragonと全く一緒。
Atemel Studio 7で使ってるが、速度がDragonより速い。
JTAGICE3とmega1284pをJTAGで接続してみた。詳細はこちら。
うむむ~なかなか快適。
ISP接続よりもずっと速度が速くて、待たされる時間が短い・・・これはデバッグサイクルでは結構大事だ。
デバッグ環境のチェック
なにはともあれデバッグ環境が動くことを確認します。
この確認が終わってからコーディングに入ります。
なおAtmel studio 7ではDragonが動かないので、記事にしていません。
まずはプロパティーのToolで”debugWIRE”を選択する。
クロックを確認(Tools – Device programming – Fuses)。
内蔵OSCならこんな感じ。
外付けのXtalならこんな感じ。
Xtalの周波数によるけど、恐らく16MHzとかだろうから電圧は5Vが必要。
適当にコードを書いたらビルド。
続いてステップ実行のボタンを押す。
これが出たら「YES」をクリックし・・・
ここでターゲットCPUの電源をOnOffする。
それからOKをクリック。
そうすると無事にデバッグが始まる。
デバッグモードから抜けるときはここから。
ここから抜けないとISPが無効になりROM焼きが出来なくなる(要するにDWENのチェックが外れる)。
ところがこうスムースに行くとは限らない。
特に朝の一発目はこれが必ず出る。
これが出ちゃうと、電源をOnOffしようがUSBを抜き差ししようが金輪際デバッグ出来なくなる。
もしこれが出ちゃったら、ここでコードをROMに焼いてやる。
その他
CKDIV8を外す
[WARNING] CKDIV8 is programmed and may interfere with debugging operation.
了解?
それとCKDIV8がチェックされてるときは250kでのアクセスはダメ。
デバッグ時だけじゃなくて、FuseやFlash書込のときも動作不良になる確率有り。
要するに CKDIV8 は最初に外しておくのが正解ってことじゃ。
コメントの中の赤いアンダーラインがウザイ
で、あちこち探してたら外し方を書いてくれてました。こちら。
自動でカッコを追加されるのも邪魔くさいんで外す
言語の切り替え
塗り潰してあるのがH
デバッグに便利なIOポートの表示なんだけど、どっちがHでどっちがLか良く分からんの。
塗り潰してあるのがHだね。
コードが無視される
最適化が効き過ぎてコードが無視されちまう。
変数が見えないとかならともかく、関数その物が存在しないかのごとき振る舞い・・・ステップ実行もブレークポイントも効かないんね・・・どう言う最適化じゃ~
ま、律儀に volatile すれば良いんだろうけど。
拡張機能を使う
AtmelStudio内の拡張機能を使ってみた。
TerminalWindowをインストールして使ってみたけど、TerraTermと大差無いや。
コメント