2016年09月09日

Bootloader

Arduino 互換機のCPU にBootloader を書き込めば Arduino IDE からスケッチを書き込むことが出来ます。前回、JTAGICE3 でデバッグしているので Bootloader を書き込んでみます。肝心のBootloader はダウンロードしたArduino IDE の下にあります。Hex ファイルを選択します。
...\arduino-1.6.XX\hardware\arduino\avr\bootloaders\optiboot\optiboot_atmega328.hex
(XX にはバージョン番号の数字が入ります。ダウンロードしたバージョンに合わせてください。)

メニューよりツール → Device Programming で Memories を選択し、画面右端の[...] よりHEX ファイルを指定し、Program ボタンを押すと直ちに書き込みが行われます。
Hex.jpg

次に Fuses bit の値を
EXTENDED:0xFD,
HIGH : 0xD6,
LOW : 0xFF
にセットし、Program します。
FuseBit.jpg

さらに Lock bits の値を LOCKBIT:0xCF に設定して Program します。
LockBit.jpg

あとはジャンパーピンを設定して USB ケーブルを接続すると Arduino IDE からスケッチを書き込むことが出来ます。
Arduino IDE のツールよりシリアルポートを設定する必要があります。前回接続した Arduino UNO とは ドライバーが異なるためです。
Write_Boot.jpg
posted by white at 18:07| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2016年09月06日

AVR のデバッグ

aki_s.jpg

折角、JTAG を接続しているのでデバッグして見たいと思います。
プログラムの任意の場所で停止が可能となります。
まず、Fuse 設定でデバッグを可能とします。
(フューズを書き込みます。一旦、書き込むと ツール → Device Programming ではアクセスできなくなります。別の方法で Fuse を変更します。)
At7_11.jpg

次に、メニューのプロジェクト→GccApplication1のプロパティ(Alt+F7)にて接続しているデバッガーとインターフェイスを指定します。
At7_12.jpg

メニューの Start Debugging and Break (Alt+F5) を選択すると main の最初で停止します。
At7_13.jpg

あとは停止したいところに Break Point をセットすることが出来ます。(行の左端をダブルクリックすれば赤マークが設定される。)
例えば、タイマー割り込み内で停止させ、その時の変数値をチェックします。
At7_TimerDebug.jpg

なお、デバッグが終了した時は Disable debugWIRE and Close を選択します。Fuse を読み込むと DWEN のチェックが消えています。
At7_16.jpg

デバッグ開始時に Cycle Powerのメッセージがでるタイミングがあります。画面の指示に従って、CPUの電源を ON → OFF → ON した後、Start Debugging and Break (Alt+F5)すれば開始されます。
CyclePower.jpg

Fuse を読めないタイミングがありますが、デバッグ → Attach to Target をクリックすると読めることがあります。

なお、Fuseにアクセスする場合、Auto read のチェックは外しておくと混乱しなくてすみます。チェックがあると画面を変更した時に常に状態を更新しようと読み込みますので、あれ!
さっき変更したのにと思うことがあります(チェックマークだけで Program していないともとの状態に戻ってしまいます。)

よく見ると、main.c ファイルの名前が異なっている。確か、Atmel Studio Version 6 ではこのように main.c では無く、GccAplicationX.c となっていた。(X には 1〜の数字が入る)
At7_4_1.jpg
posted by white at 11:33| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2016年09月05日

Atmel Studio 7

今回はArduino IDE 以外で ATmega328 にプログラムを書き込んでみます。基板はArduinoと互換の基板(基板のみ150円)が秋月電子より販売されています。この基板にCPU や周辺部品(キットが販売されています)を半田付けしてArduino 互換機を作ります。
K-04590.jpg
CPU はATmega328Pを使用します。通常のCPUのためこのままではArduino IDEを接続してもプログラムは書き込めません。Arduino IDEでプログラムを書き込むにはCPU に Bootloader が事前に書き込まれている必要があります。
詳しくは https://synapse.kyoto/tips/bootloader/page001.html を参考にしてください。

プログラムの作成、書き込みにAtmel Studio 7とJTAGICE3(現在はATMEL-ICE-BASICにアップグレードしている。)
Atmel-ICE_angle.jpg

を使用します。
 Atmel Studio 7 はAteml のホームページ http://www.atmel.com/ja/jp/tools/ATMELSTUDIO.aspx へ行きユーザー登録すると、Atmel Software Download のメールが来ますので指示に従って登録すればダウンロードできます。
 ダウンロードする場合は「Atmel Studio 7.0 (build 1006) offline installer」をお勧めします、ファイルサイズは大きいですが、一旦ダウンロードするとネット接続なしでインストール可能です。
 ダウンロード後は。as-installer-7.0.1006-full.exeをクリックするとインストールが始まります。あとはNext(またはInstall)をクリックするだけでインストール可能です。USB ドライバーもインストールされます。

プログラムの開始
Atmel Studio 7の起動
(マイクロソフト社のVisual Studio をベースにコンパイラが Atmel 用のGCC となっています。8bit, 32bit用のCPU に対応)New project... を選択し、新規作成を行います。
At7_1.jpg

GCC C 実行用を選択し保存するフォルダーを指定します。
At7_2.jpg

CPU を選択します。
At7_3.jpg

暫くすると雛形が作成されます。これに新たにプログラムを追加していきます。
At7_4.jpg

標準では行番号が表示されていないので行番号を表示させます。
メニューよりツール → オプション テキストエディター → テキスト形式 行番号にチェックを入れます。
At7_5.jpg

main.h ファイルを追加する場合はソリューションエクスプローラーのプロジェクト名を右クリックし
追加→新しい項目 を選択し、
At7_6.jpg

ファイル種別とファイル名を指定します。
At7_7.jpg

タイマー割り込みを使用するため
同様にTimer0.c Timer0.h を追加していきます。

プログラムをCPUに書き込みます。
ツール → Device Programming で書き込み画面を表示させ[Apply] ボタンをクリックします。
memories タブで書き込むプログラムを確認して書き込[Program]ボタンをクリックすると書き込みが開始されます。
At7_ProgWrite.jpg

書き込み後、すぐにプログラムが走ます。(でも、LED の点滅間隔がやけに長く感じます。

Fuse 設定を確認すると
At7_FirstFuse.jpg

CKDIV8 にチェックマークがついており。この為クロックが1/8 になっています。チェックを外して再度書き込みます。
At7_2ndFuse.jpg

これでプログラムの作成から書き込みまでがおわりました。
ソースを置いておきます。Atmel_LED_20160905.zip

次回はデバッグ方法を書いてみます。
posted by white at 17:25| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。