AVRマイコン入門|開発環境|TinyやATmegaを使って

当サイトにはアフィリエイト広告が表示されます。

※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と大差無いや。

購入リンク

¥34,241 (2023/01/30 04:50時点 | Amazon調べ)
\楽天ポイント4倍セール!/
楽天市場で探す
\ポイント5%還元!/
Yahooで探す
スポンサーリンク
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


興味があるところを読む