Atmel (AVR) Programming

Atmel のATmega328P 用のプログラムを作成します。


 対象となる基板は Arduino 互換基板です。

 

 秋月電子より購入し、自分で部品実装、半田付けをおこないます。
 (http://akizukidenshi.com/catalog/g/gK-04590/ へのリンク

 CPUはATmega328P に交換します。


 L チカ( LED チカチカ点滅 ) プログラム

Atmel Studio を使用しますので、割り込みを使ってLED を点滅させます。

 ( 以下、画面をクリックすれば拡大表示されます。)

プロジェクトの作成



まず、New Project.. をクリックし、新しいプロジェクトを作成します。


テンプレート で C/C++ を指定し、
GCC C Excutable Project を選択します。
場所は任意に作成してください。また、名前は気は入ったものをつけます。


 CPU の選択画面です。今回は使用するATmega328Pを選択します。


 雛形が出来上がります。


 CPU の初期化ルーチンを記述します。
 (#include Time0.h が記述されていますが、タイマールーチンで、後で追加します。)


タイマー用のソースプログラムは別のファイルに記述しますので
タイマー用ソースを追加します。


まず、プロジェクトのプロパテイを表示します。


 メニューのプロジェクト(P)をクリックすると新しい項目の追加 (W) をクリックします。


 File のタイプで C File を選択し、名前は、Timer0.c とします。

 最初に雛形が作成されますので、処理内容を追加していきます。

 同様に GccApplication1.h, Timer0.h も追加して下さい。


 メニューのビルド GccApplication1 のビルドをクリックすれば コンパイル & リンクが実行されます。
 Visual Studio を使用していますが、make は nmake では無く、GCC の make です。
 Debug フォルダーに実行ファイルが出来上がっています。


 プログラムの書き込み

 プログラムを書き込みは JTAG ICE 3 を利用します。
基板とJTAG ICE 3 を接続した様子。

Fuse 設定をを誤ると、デバッグ不可、書き込み不可となるので、
事前に良く理解し、予備のCPU を用意することをお薦めします。
(QFP タイプの CPU だと剥がし、再半田付けが必要になってしまいます。)


 コーディング終了したプログラムを基板のCPU に書き込みます。

まず、初期状態のFuse 状態を見てみます。


 メニュー → DeviceProgramming とクリックします。


Tool の接続、CPU を確認して Apply をクリックします。





 プログラムの書き込み


Memories を選択し、書き込みファイルを確認して
Program を書き込みます。

書き込み後、プログラムが動作開始します。

........ でも、LED はチカチカするけど、時間間隔がおかしい!??

そうー。Fuse 設定を見ると、内部発信、Clock は1/8にされている。
クロックの設定が間違っている。
以下に修正し書き込む
 変更直後は緑色のチェックマークが黄色に変わる。

ソース一式

戻る

Home