今回はプログラミングを始める最初の作業である、ファイルの作成とマイコンのFuse設定のお話をします。
まずは、デスクトップかスタートメニュのアイコンから「Atmel Studio 7」を起動させます。
起動したら、「ファイル」メニューの「新規作成」、「プロジェクト」をクリックして、ファイル作成画面へと進みます。
ここで、プログラムの種類を選びます。AVRマイコンのプログラミングでは「Executable Project」を選択します。Executable project
にもC言語とC++言語の2つから選べます。必要に応じて選択をしてください。(通常はC言語の範囲のプログラミングが多いと思いますが、C++言語にしてもC言語の機能は基本的に使えるので特に気にしなければどちらでもよいです。)また、この時下部の「名前」のボックスにファイル名を、「場所」のボックスにはファイルの保存先を設定します。
次に、使用するマイコンの種類を選択します。今回は「ATmega328P」を使用するので、「ATmega328P」を選択します。選ぶときには、上部のプルダウンメニューから「ATmega」を選択すると、選択肢が減って選びやすくなります。または、次の右上の検索欄に「328」と入れて検索すると下図のように絞り込みができます。
基本的には、検索をした方が速いと思います。使用するマイコンが選べたら右下の「Ok」をクリックしてファイルの作成を完了させます。
上部のツールバーから、図の↑でしめした、雷っぽいアイコンの「Device programing」をクリックして、マイコンへの書き込み画面を表示させます。
まずは、左上の「Tool」のプルダウンメニューから「STK500 COM*」(*にはCOM番号が入ります)を選びます。次に、「Device」のプルダウンメニューから使用するマイコン(今回は「ATmega328P」)を選択します。そして、その右側の「Apply」ボタンをクリックしてデバイスへの接続を開始します。(厳密には接続が開始されるのは、次のステップ)
左側のメニューから「Fuses」(図の←)をクリックしてFUSE設定を開きます。この時にエラーが出た場合は、マイコンが正しく接続できていないので、各種設定や回路の確認を行ってください。
FUSE設定を開くとこのような感じの画面になります。画像はArduino UNOのFUSE設定になります。Arduinoとしてマイコンを使う場合は基本的にはこの設定にしてください。一応、各設定の紹介をしておきます。なお、各設定の「.」の前はFUSEバイトの名前を指しており、後は設定の名前です。
BODLEVEL:マイコンに印加される電圧が下がった時に、マイコンをリセットする設定です。ここで設定された電圧を下回ると、マイコンがリセットされます。設定電圧は”1.8V”,”2.7V”,”4.3V”と”電圧低下によるリセットなし”です。Arduinoでは”2.7V”に設定されています。
RSTDISABLE:マイコンのリセットピン(atmega328Pの場合PC6)の無効化の設定です。チェックをオンにすると、リセットピンは通常のポートとして使用できます。この際にリセットを行うには、低電圧リセットか電源をONにし直す必要があります。書き込み時などに不都合が生じるので、基本的にチェックは入れないでください。
DWEN:デバッグ機能を有効化する設定です。デバッガーがないとデバッグができないので、当ブログでは使用しません。うっかりチェックを入れるとISP通信ができなり、通常の書き込み機では書き込みが不能になるので注意してください。
SPIEN:直列プログラミング(ISPによる書き込み)を許可する設定です。無効にするとISPでの書き込みができなくなり、通常の書き込み機では書き込みができなくなるので注意してください。
WDTON:ウォッチドッグタイマを常時有効化する設定です。
EESAVE:チップの消去時のEEPROMの内容を保護する設定です。
BOOTSZ:ブートローダの容量の設定です。選択肢は“256word”,”521word”,”1024word”,”2048word”です。
BOOTRST:起動時にブートローダなどを使用するかどうかの設定です。Arduinoの場合はチェックを入れないと、書き込みなどができなくなります。
CKDIV8:システムクロックを水晶からのクロックの1/8にする機能です。
CKOUT:システムクロックを外部にピン(atmega328pの場合PB0)に取り出す機能です。
SUT_CKSEL:起動時間とクロックの種別を選択します。外部に接続する水晶の有無やクロック数、電源の起動時間などに合わせて設定を行います。Arduinoの場合はAtmel Studioの一番下に出てくる、”(外部)低電力クリスタル発振器の8~16MHz,
起動遅延時間が16k×CK リセットからの負荷遅延14×CK+65ms (外部クリスタル発振子、低速上昇電源)”でAtmel Studio上の表記では”Ext.
Crystal Osc. 8.0- MHz;Start-up time PWMDWN/RESET:16K CK/14
CK + 65ms”に設定されています。Arduinoとして使用しない場合でも8MHz以上の水晶やセラロックを使用する場合はこの設定を使用すればよいでしょう。外部クロックを使用しない場合は、くれぐれも外部クロック関連の設定にしないように気を付けてください。外部に水晶を使用しないとマイコンが使えなくなります。詳しい設定は、ATmega328PデータシートP28~31を参照してください。
FUSE設定はこんな感じです、基本的に設定変更をするのは、”BOODLEBEL”,”CKDIV8”,”SUT_CKSEL”の3つでArduinoとして使う場合など、必要がある場合は”BOOTSZ”,”BOOTRST”も変更すればよいでしょう。ここの設定は下手に触るとマイコンが使えなくなるので慎重に行ってください。
Arduinoとして使わない場合で特に事情がない場合は、初期状態から”BODLEBEL”を2.7V 、”CKDIV8”のチェックを外す、”SUT_CKSEK”を一番下の"Ext Crystal 8MHz 65ms”にしておけばいいと思います。(下の画像参照)
ちなみに、マイコンの種類が変わると、FUSE設定が多少変わるので、ATmega328(とその系統)を使わない場合はマイコンのデータシートのヒューズビットの設定を確認して設定を行ってください。よくわからない設定の変更は慎重に!(よくわからない設定の変更は控えておくのが安全です)
最後に参考程度に、FUSE設定のデータシートの抜粋を置いておきます。既定の設定などはここを参考にしてください。
次回からは本格的に、マイコンのプログラムに入っていって、最終的に音楽などを演奏できるようにしていきます。