●初めてのCプログラミング編」アップしました。2010.08.08
01. はじめに
マイコンを使う簡単な制御が必要で、古くからお世話になった方からのお願いで?自分でやらなくては行けない感じが漂っている。
下記は、私個人のお仕事用の専用HPですが、2009年からフリーランス・デベロッパーとしてお仕事を受けています。
www.kitanosawa-agency.com (きたのさわエージェンシー)
地元に来たら、宿代とおいしい食事をごちそうするという内容でした。(要するにタダで頼むという話です..^_^;)
題材は「ボタンを押したら綺麗なメロディーが流れて + 綺麗なRGBフルカラーLEDの点灯」(綺麗といのが引っかかるのですが...)
自分はハード設計が少々でソフト開発はほぼゼロ、デバッガでポートのON-OFF確認して電球が光るとかモーターが回る等を試験する程度、
それも15年ぐらい前となり現在は隠居状態、年のせいか物忘れもひどく過程を含めしっかりメモを兼ねてこのHPに書き留めます。
それにしても、何故かHPネタになるところあたりが何時ものパターンで趣味とボランティアの世界です。
最終目的は?
私のPCはMacBook ProでOSXで開発可能か調べると、多方面で情報が得られましたが、
今回はOSXの別バーティーションのBOOTCAMPに入れたWindows Vista(64bit)をParallels Desktop5で動作させてみました。
結果として全く問題なくサクサク動作します、とても便利な世の中となりました。
またWindows PCも1台所有してます、これもWindows Vista(64bit)で同じですがこちらも同等の環境にします。
Mac PC & Windows専用PCの、どちらでも動作させる環境が前提です。
a. PCへソフト開発環境を構築(IED(統合開発環境)Integrated Development Environment/アセンブラ/Cコンパイラ)
b. 書込みライタを用意、のちに数台必要になる感じなので、安価に自作したいと考えている。
c. 書き込みライタ用のパソコン側ソフトも必要です。当然GUI操作が出来る物です。
d. ターゲットボードの回路設計を行います。実験はユニバーサル基板で目的の回路を組みます。
e. C言語でソフト作成、書込みライタでターゲットボードのマイコンにプログラムを書き込み、デバッグします(これが一番大変?)
f. 最終的な回路図からプリント基板の設計を行いデバッグ後に完成。
02. どのマイコンを採用するのか(R8C/Tiny , H8 , PIC , AVR)
実は既に所有している開発環境がそろったR8C/Tinyマイコン(ルネサステクノロジー社)で行う予定、頭の体操になる程度で忘れかけていたソフトを立ち上げたり、
評価ボードをつなげたりと作業開始。
最新のルネサス無料開発環境をバージョンアップしてインストール、その間にWebからチップの最新情報を入手など、一見手慣れた流れで事を進める。
ところがターゲットとしたR8C/Tinyチップは、ほぼ入手出来ない事が判明、所有のE7書き込み機もなんだか使えるのか怪しい感じ...
こりゃぁPICあたりが無難かなぁと思い調べると、こちらも世代交代で何やらにぎやか、以前から同じくコンパイラは無料ではなさそう。
そしてトドメがWeb記事の
「いますぐPICをやめてAVRに移行すべき10の理由」
目を通すと「なるほど!」と納得してしまう。「PICほど変態なアーキテクチャじゃない」などとも書いてある。
知人の開発者がPICは使いたくない、使いたくないとTwitterが流行る数年前から「つぶやいて」いたのを思い出す。
03. AVRがいい感じ (何と20ピンで1個100円)
AVRの名前は知っていました。Atmel社のRISCベースの8bitワンチップコントローラでほぼ命令を1クロックで実行し、
1MHzあたりの計算量は1MIPSに達する。1996年頃の発表と他のワンチップマイコンと比較しても最も新しい部類です。
AVRという名前はチップを設計したAlf Egil Bogen と Vegard Wollanの名前と、RISC から取られているとの事。

AVRの開発環境はコンパイラを含みすべて無料、書き込みライタは100円でも出来る程度簡単でオンボード書き込みが当然の様に可能。
電子オルゴールの開発について詳しいサイトがAVRだったので決定打となりました、Webでの情報もまあまあ期待出来そうです。(笑)
チップの入手状況は、
秋月電子通商で単価を調べると20ピンDIPで@100円、さらに18個以上だと1個90円とさらにお買い得。
AVRマイコン ATTINY2313-20PU(U=鉛フリーとなんだか地球に優しい感じ)
90S2313の後継AVR/最大動作周波数:20MHz/フラッシュ:2Kバイト/RAM:128バイト/EEPROM:128バイト
ピン数の多い物も@200円からと激安感。
AVRマイコン ATMEGA8-16PU(U=鉛フリー)28ピンDIP(幅狭タイプ)
最大動作周波数:16MHz/フラッシュ:2Kx8バイト/RAM:1kx8バイト/EEPROM:512x8バイト
<コラム1> AT90S2313とは旧モデル
AVRの情報でAT90S2313というチップ名が多い。
ATTINY2313はAT90S2313の後継品種で内部クロック機能が追加され、出荷時の設定は内部OSC使用8MHzになっている。
置き換える場合はヒューズビットの設定の変更が必要(後項説明)
現在販売されている様々なマイコンの中で後発ですが、それでも歴史はありすでに製造中止や後継品種も出てます。
PICマイコンの盛り上がりが「予定以上(異常)」として、AVRマイコンの盛り上がりもなかなかではないでしょうか?
90Sシリーズ(初期のラインナップで廃品傾向が強い?)
90S1200
90S2313 > 20ピン DIP 後継品が ATTyny3213
90S4433 > 28ピン DIP
90S8515 > i8051互換を狙った40ピン系
90S4434 > 40ピン DIP
90S8535 > 40ピン DIP
Megaシリーズ(大容量化、I/O拡張)
Mega1280/2560 > 20ピン DIP
Mega8/48/88/168/328 > 28ピン DIP
Mega161/162 > i8051互換を狙った40ピン系
Mega163/323
Mega169/329/649
Mega8515 > i8051互換を狙った40ピン系
Mega8535
Mega16/32
Mega64/128 > 比較的新しいラインナップ
Tinyシリーズ(高機能化・低消費電力化・低電圧対応)
tiny2313 《今回手始めにこれを使います》私が使った正式型番はATTyny3213-20PUです
tiny11
tiny12
tiny13
tiny15
tiny26
8ピンから64ピンパッケージまであるようです。
04. 無料の開発環境について
Webで調べると無償で入手できるAVR StudioとWinAVR(gcc)というパッケージをインストールして、
アセンブラとC言語が使える環境が出来上がり利用者が多い様です。と言うよりそれがスタンダードという感じです。
a. AVR Studio4 Atmel純正の開発環境(アセンブラだけ)(2010.06 現在のバージョンは4)
b. WinAVR フリーのCコンパイラなどのパッケージ (2010.01.10 現在のバージョン)
軽く簡素にならWinAVR、しっかりならAVR Studio4でしょうか、実はどちらもGUIな総合環境で開発が可能ですが、両方のインストールします。
※必ずWinAVR→AVR Studioの順でインストールという情報があり、どちらでもうまく行きましたが、その手順の方が良いのかもしれません。
05. AVR Studioをインストール
始めに本家Atmel社のHPを見てみる http://www.atmel.com/
すると
AVRは8bit以外に16bitや32bitもあるみたい。 http://www.atmel.com/products/AVR/xmega.asp?family_id=607&source=home
早速開発環境
AVR Studio 4をダウンロード(無償提供に感謝します)http://www.atmel.com/dyn/products/tools_v2.asp?family_id=607

少々登録が必要ですが、ササッと登録してゲット
サービスパックが同じくSP1ならびにSP2がアップされていたのでこれも同時にゲット、こちらは登録はいらない。

2010.08.07現在、SP3もリリースされていますので、そちらも含め最新にしておく方が良いでしょう。
無造作に「はい>はい>インストール」してみる。それからSP1とSP2とSP3も続けてインストール
次のアイコンを早速起動してみる。アイコンが見当たらない場合は
スタート > すべてのプログラム > Atmel AVR Tools > AVR Studio 4 を右クリック >
送る >ディスクトップ(ショートカットを作成)で出来上がります。

※下記は日本語化したあとの画面です。最初は英語版です。

※ インストール時のエラーの場合はここを参照
インストール先はWindowsVista(64bit)なのでProgram FilesではなくProgramFiles(x86)を指定してみた。
C:/Program Files(x86)/Atmel が作られ「AVR Tools」というフォルダに沢山のファイルが作られる。
その中のフォルダのAVRStudio.exeを試しに実行してみる。
メニューの日本語化
総合開発環境であるAVR Studio 4が起動する、驚いた英語バージョンです(笑) 次のサイトから
日本語化1.1.EXEをダウンロード(作者に本当に感謝します)

AVRStudio日本語化1.1.EXEを次のディレクトリにコピーして実行するだけ。/Program Files(x86)/Atmel/AVR Tools/AvrStudio4
これで無事日本語表記になった。
2010.08.07現在、SP3に対応した新バージョンもリリースされていますので、そちらも含め最新にしておく方が良いでしょう。
06. Cコンパイラ(WinAVR)をインストール
本家HPのダウンロードから、次のファイルをゲット
WinAVR-20100110-install.exe (2010.06現在のバージョン)

無造作に「はい>はい>インストール」してみる。
デフォルトでは C:\WinAVR-20100110 という場所にフォルダが作られてインストールされます。
私はそこを C:\ProgramFiles(x86)\WinAVR-20100110 という場所を指定してインストールしましたが、
結果から先に言うとどちらでも良いみたいです。結局インストール先は C:/Program Files(x86)/ ではなく、いきなりC:\WinAVR-20100110 に行った。


次の様なダイアログが出たら「許可(A)」を選択。

▶ ここで、コンパイラがインストールされているか大雑把に確認。
前項でインストールしたAvrStudio4起動します。

ダイアログの「新規プロジェクト作成」をクリックしてみます。
プロジェクト型の枠の中に次の2っがあればインストールはうまく行っているでしょう。
1. Atmel AVR Assemblr
2. AVR GCC
キャンセルして終了します。
<コラム2> WinAVRだけでも開発は可能
ちなみにWinAVRだけで、AVR Studio4をインストールしなくてもC言語での本格的な開発は出来てしまいます。
実は、このWinAVRをインストールするとエディタを含む開発環境が一通り揃うのです、いわゆるIED(統合開発環境)である先のAVR
Studio4ほどではないにしろ、これからC言語を勉強するには十分をかなり超えた?環境でもありますし、
素晴らしいのはわかるが、巨大で複雑なIEDを嫌う方も多いのも事実でWebからもAVR StudioからWinAVRへ移行して、
必要な時だけAVR Studioを使うというケースもある様です。
今回はAVR Studio 4 をメインで使いますので必要ないのですが、せっかくなのでインストール後、次を試しに実行してみましょう。
C:/WinAVR-20100110/pn/pn.exe

を実行するとProgrammer's Notepadというエディターが起動します。 http://www.pnotepad.org/


このソフトはWindows標準で多機能なNotepadの基本機能の上に、コードアウトライン、ドッキングツールバー、タグ、インタラクティブエラー検索、
出力されたエラーをクリックするとそれを生成したコードへジャンプ、
簡易検索、シンタックスハイライト、xmlファイル経由でエクスポートできるカスタマイズ可能なインターフェースが付け加えれます。
WinAVRはProgrammer's Notepadでうまく総合環境となってまとまっているようです。
実際、AVR Studio4をインストールしなくてもこれと後述の「書き込みライタソフト」だけでも開発は完結します。
個人的には、このWinAVRのシンプルさが気に入りましたが、手始めに参考にしたサイトがAVR Studioだったのでこれから始めます。
※ちょっと日本語のコメントがうまく表示されませんが、メニューの環境設定でフォントを日本語フォントに指定で可能になります。
メニューの日本語化
これも英語バージョンです、今後使う予定は現時点でありませんが、何かの時の為にインストールしておきましょう。
次のサイトから
pn日本語化1.2.EXEをダウンロード(作者に本当に感謝します)
pn日本語化1.1.EXEを次のディレクトリにコピーして実行するだけ。
/Program Files(x86)/Atmel/AVR Tools/AvrStudio4
これで無事日本語表記になりました。
07. プログラム書き込みライタについて
プロクラムを作成する下準備は整いました。次に必要になってくるのはプログラムの書き込みライタです。
実際はC言語で作成したソースプログラムをコンパイル(ビルド)して出来たHEX形式ファイルを、
プログラム書き込みソフトで書き込みライタに転送してターゲットボードへ転送動作させます。
AVRには便利な機能として ISP In-SystemProgrammerと呼ばれるオンボード書き込み機能があります。
この機能を使うと6本の配線だけで、書込みが可能で、この方法が主流の様ですしUSBからの一定の容量の電源も供給されるので、
ターゲットボードの電源を用意しなくても即LEDを点灯等の実験が可能です。
プログラムの書き込みライタは、おおよそ次のタイプがあります。
a. PCとの接続はプリンタポート(D-SUB25ピンコネクタ)に取付けるタイプが3種類
(01)コネクタに抵抗数本でOK!という世界一簡単な書き込み機。
(02)上記にバッファICを1−2個取付けて安定機能強化した書き込み機。
(03)上記にさらに「書込み用のプログラムが書かれたAVRマイコン搭載」の書き込み機。(フルスペック?)
b. PCとの接続はRS232Cでターゲットボード(*2)へ6ピン端子でオンボードで書き込むタイプ
(04)「書込み用のプログラムが書かれたAVRマイコン搭載」の書き込み機。
(05)「プログラムが書かれていないAVRマイコンに書き込みプログラムを書き込める」書き込み機(すごい!)
c. PCとの接続はUSBでターゲットボード(*2)へ6ピン端子でオンボードで書き込むタイプ
(06)「書込み用のプログラムが書かれたAVRマイコン搭載」の書き込み機。(市販品完成品に多い)
(07)「プログラムが書かれていないAVRマイコンに書き込みプログラムを書き込める」書き込み機(すごい!)
実際の所手短にまとめると、主流はやはりUSBで、その他はAVRの出始めに広く普及した方式となっている様です。
またUSBの場合パソコンからDC5V電源も引き出せる為、書込みライタやターゲットボードに電源が容量の範囲で供給出来るため、別電源が必要ないという事がさらに便利です。
d. 純正の書込み機もちゃんと3種類あります
(08)ATMEL純正AVR-ISP mkII AVR ISP In-System Programmer(USB接続) 4000円程度とお買い得
(09)AR-ISP AVR ISP In-System Programmer(COMポート)
(10)ATMEL純正STK500 パラレルライタ機能があり、ISPライタにはできないヒューズビットの書き換えが可能
e. 次のライタも小型で安価なため人気がある様です
(11)共立電子(デジット) AVRWRT 低価格2100円のUSB接続型AVRライタ
私も始めはこの2100円を購入しようと思いましたが、次項説明のHIDaspxという書込みライタの情報に驚き試してみたくなりました。
タイプは
(07)で、いずれにしろ必要なツールを白紙状態から制作出来ると事なのでAVRを入手してチャレンジしてみました。
面倒な方は迷わず
ATMEL純正AVR-ISP mkII または 共立電子(デジット)AVRWRTの購入をお勧めしす(笑)
<コラム3> 要注意ヒューズビットの書き換え
実はプリンタポートのライタも1台所有していた方が良いとの情報も多いです。
それはヒューズビット書き換えなど高電圧パラレルプログラミングが出来ないとリセット出来ないそうです、
間違ってAVRマイコンに何度も書き込んだりしていると、外部クリスタルを付けずにヒューズビットを外部設定にしてしまい、書き込めなくなるそうです。
この場合このライタが無ければ初期値に戻す事は出来なくなり、かなりの人が後に制作したとの情報が多いです。
逆に気がつかず「壊れた?」とお蔵入りになっている正常なデバイスも沢山あるのではと言われています。
<コラム4> 鶏と卵について
AVRの書込み機の話題で、本やWebで良く議論される「鶏と卵」ですが、AVRに限らずマイコン開発では古今東西議論されてきた話題です。
これは「書き込みライタ」を動作させる為にプログラムを書き込んだマイコンが必要という話で、結論を言うと通常はこれが容易に出来ないのです。
しかし、私が今回AVRを使ってみようかなと思うきっかけが、この「鶏と卵」を解決する方法を複数考えだされているという情報でした。
08. 書込みライタHIDaspxとは
千秋ゼミ(千秋広幸という方が公開しているAVR書き込みライタで、大学の先生の様です)
http://www-ice.yamagata-cit.ac.jp/ken/senshu/sitedev/
HIDaspx(エイチ・アイ・ディー アスペックス)と呼ぶそうです。
様々な書込みライタが紹介されているなかで、さらにUSBドライバも必要なく、Windows,Linux,Macで利用可能というすばらしいライタがある事が判明、
鶏と卵の問題も解決しており、何も書き込んでいなAVRにライター用のプログラムを書き込んで、
すべて自作可能というハードウェアとファームウェア一式の総称をHIDaspxと呼びます。
回路はハードウェア(ATtiny2313を中心にした回路)にファームウェア(HIDaspxのmain-12.hex)を書き込んだものにPC側サポートソフトウェア一式を含み、
AVRマイコン用のライタ機能だけではなく、USB経由のI/O制御インタフェースとしても利用できる優れものです。
そのためチップのPD2端子の接続方法により2種類の動作が可能です。
a. AVRライタモード…PD2とGNDを接続しない。
b. USB-IOモード…PD2とGNDを接続する。(入出力8ポート、入力3ポートが使用可能)
ソフトやPDFドキュメントが一式セットで圧縮され公開されています。どんどん更新しています。
hidspx-2010-0602.zip(2010.06.20 現在)
早速制作に入りますが、流れは次の通りです。
a. 下記の基板にのせる「ファームウエアプログラムを書き込んだAVRマイコン」を、何も無い状態からプログラムを書き込める基板を制作。
※ とにかくこれが画期的で驚きました、TOOL開発され得た多くの方々に感謝します。
b. USB接続の「書込みライタ本体」基板を制作、今回は書き込みライタとして最低限の機能を持った物をユニバーサル基板で作ります。
c. 「ファームウエアプログラムを書き込んだAVRマイコン」を「書込みライタ本体」の基板に取付けます。
d. 流れとしてはこれで完成です。あとは書込みソフトを動作させ確認するだけです。(後述)
e. そのうち余裕が出てきたら、ヒューズビット書き換え用のパラレルポート用の書込みライタを作る事でしょう。
09. 鶏と卵問題を解決する書込み機の制作
今回一番おもしろいかもしれないのがこの部分で、本来の書き込みライタの基板を作る前に、さらに簡単な基板を1枚作らなくてはいけません。
ちょっと以前なら、諸先輩はパラレルポート用の書込みライタを作った様です。
この基板は正直1回程度しか使いませんので、作り方は凝る必要もありませんが、ご自由にラフに製作をお楽しみ下さい。
部品リスト
00. ユニバーサル基板(部品をのせる面積が5cmx5cm程度もあれば十分)
01. 20P ICソケット
02. 抵抗 3.3KΩ
03. 抵抗 10KΩ
04. 抵抗 33KΩ
05. 抵抗 330Ω
06. 12MHz クリスタル
07. 22PF セラミックコンデンサ 2個
08. プッシュスイッチ
09. D-SUB 9Pコネクタ(オス側)
10. 0.1uF セラミックコンデンサ
11. 0.01uF セラミックコンデンサ
12. LED(小型赤色)
13. 単三電池1.5V 2個
14. 電池ホルダ 単三2個用
15. AVRマイコン(ATTINY2313)
16. AWG24(0.3mm)程度の線材が少々

回路図のダウンロード ▶avr_egg_writer_logic.pdf 表示/印刷には水魚堂のBschが必要です。
回路図を印刷して、配線した部分を順に、赤マーカー等で回路図に線を引いて行きます、全部に線が引けたら完成ということになります。
出来上がったら良く確認します。

<コラム5> コネクタのオスとメスの意味は
RS232Cのコネクタですが、パソコン側に接続する配線のコネクタはオスとなります。
基板側は配線を直接半田付けします。
つまりパソコン側はメスコネクタが付いている事になります。
一昔のパソコンには標準で9ピンのオスメス両方のコネクタに、さらに25ピンのRS232Cコネクタも付いていました。
ところで何故オスコネクタかというと、出っ張っているからです男という意味です、反対はメスで女という意味でそんな所からです。

「オンタ」と「メンタ」とも言う人がいますね、関西弁という噂も
ところで、オスコネクタですが結果的にはオスコネクタ本体は確かにオス構造ですが、取付けられているピンはメスだったりします。
当然逆に、メスコネクタ側のピンは飛び出たオスピンと、ややこしい話となります。
RS232Cのコネクタが無いパソコンの場合は
次はパソコン側に、出来上がったこのボードを接続しますが(この時点ではマイコンも電池も未接続です)RS232Cのコネクタが無いパソコンも多いと思います。
そこで登場がUSBをシリアルのRS232C信号へ変換するケーブルで、私は次の商品を使っています。
USBシリアル変換ケーブル(@950円)メーカー GLORYMARK 秋月電子通商
USBとシリアル(RS-232-C)を変換するケーブルで、これにより今時のRS232CコネクタのないパソコンのUSBポートから9PINのRS232Cコネクタに変換します。
マイコン開発者は1本は持っているのではないでしょうかね、何かとお世話になります。

既にドライバーソフトも紛失していましたが、変換チップにprolific社のPL-2303を使用していますので、そちらから最新版が入手出来ます。
プロリフィックテクノロジー社
http://www.prolific.com.tw/jp/company.asp
PL-2303 Software and Drivers
http://www.prolific.com.tw/jp/downloads.asp?ID=31
PL2303_Prolific_DriverInstaller_v1210.zip(2010.06.20 現在)ダウンロードすると、恐ろしいほど長いファイル名です(笑)
_IO Cable_PL-2303_Drivers -Generic_Windows_allinone_PL2303_Prolific_DriverInstaller_v1210
※ あまり長いフィル名だと解凍ソフトによっては正常に処理出来ない場合があるそうです。
私は解凍用のソフトに+Lhacaを使用させて頂いています(作者に感謝)

解凍すると普通長さ程度のフィアル名でした(笑)


無造作に「はい>はい>インストール」してみる。
私はMacBook ProのOSXで、Parallels Desktop 5というソフトの仮想環境でWindowsVista(64bit)を動作させています。
USBシリアル変換ケーブルをMacにつなぎWindowsにて接続認識がされているかを確認します。
<コラム6> USB−シリアルケーブルのCOMポートの確認方法
パソコンと機器が通信できない時、COMポートが異なっているケースが多数ございますので、ご確認くださいますようお願いいたします。
スタートメニューからコントロールパネル>システムとメンテナンス>システム>システムの詳細設定(ダイアログ左側)>システムのプロパテイ>が表示されます、
ここでハードウェアのタブをクリック、デバイスマネージャーをクリックします。
まぁ要するに「デバイスマネージャー」を表示してくださいという事です。

ポート(COMとLPT)をクリックします
Prolific USB-to-Serial COMM Port(COM....)が見えます。ここの数字がCOMポートの番号になります。
Prolific USB-to-Serial COMM Port(COM....)をクリックすると
Prolific USB-to-Serial COMM Port(COM....)のプロパテイが表示されます。

ポートの設定で
ビット/秒 : 19200 / データビット :8 / パリティ : なし / ストップビット : 1 / フロー制御 : なし
次に「...詳細設定」を選択
COMポート番号 :COM1

以上に設定しておきます。
10. 書込みライタ用のソフトをインストール
次はこの書き込みライタ基板専用の、書込みソフトの準備です
hidspx-2010-0602.LZHをディスクトップに解答するとhidspx-2010-0602というフォルダが出来ます。
※hidspx-2010-0602 というフォルダですが、最新バージョンではその都度名前が変わる様ですので、
その際にはそのフォルダ名に差し替えて解釈してください、場合によりフォルダの名前や構成も替わるかもしれません。

始めに hidspx-2010-0602/bin/ の中にある次のファイルをディスクトップにコピーします。hidspx.exe (書込みのメインプログラム)

次に
hidspx-2010-0602/bin/firmware/ の中にある次の2ファイルをディスクトップにコピーします。
egg-write.bat (書込み実行用の自動起動バッチフアイル)
main-12.hex (AVRマイコンへ書き込むプログラム本体)

これで、次の3ファイルがディスクトップに用意されました。

次にライタに何も書き込まれていないAVRマイコンを向きを間違わないで差し込みます。
さらに電池を入れるとLEDが点灯するはずです。
egg-write.bat をクリックします。

もしここで「ユーザーアカウントの制御」と表示されたら、ここを参照
次のコマンドプロンプト画面に表示されますので、書込みライタ基板のプッシュスイッチをしっかり1回押してからキーボードのEnterキーを押します。
電池も忘れずに接続します

すると、いかにも書き込んでいるぞ〜!という画面が表示され
「書き込み完了しました」で終了します。これでタマゴが出来上がりました。

※ シリアルポート番号はデフォルトでCOM1でなくてはいけません。
※ インストール時のエラーの場合はここを参照、特権レベルのスイッチを有効にします。

パソコンから煙がモクモクと上がったらすぐに電源を抜いてください(冗談なんですけど..)
うまく書き込めたかは、後でわかります。
11. 書込みライタ基板の制作
ここでやっと本命の「USB接続仕様の書き込みライタ」の回路基板を作成します。
実際に作ったのがこれです。58mm x 28mm程度に収まりました。
ターゲットボードとの接続コネクタも1本製作します、ケーブルは約200mmとしました。

書き込みライタとターゲットボードとの接続は通常Atmel メーカー純正のISP(In System Programming?)書き込みを行うための
インターフェースとなるコネクタ(6pin)を使いますが、一般では中々見かけない6極のフラットケーブル用のヘッダが使われています。
自作するユーザーらからも、そのコネクタの入手が困難なため少々不評です。
次がそのコネクタでありそのピンアサインです。
1:MISO:出力(AVR→PC) 2:VCC:電源 3:SCK:クロック(PC→AVR) 4:MOSI:入力(PC→AVR) 5:/RES:リセット 6:GND:グラウンド
▼メーカー純正はちょっと入手は困難で特殊な2.54mmピッチの6ピンコネクタ(このタイプの10ピンはパーツ屋で良く見かけます)

手軽に使えるピンコネクタと配置に変更
そこで私は汎用の1列の2.54mmピッチのヘッダーピン端子を書き込みライタ並びに接続するターゲットボードに取付けて、接続しています。
下記がその接続するハーネスです。汎用品のヘッダーピンメスピン端子にフラットケーブルで200m程度の配線を使い作成しています。
1:RES#:リセット 2:VCC:電源 3:GND:グラウンド 4:MOSI:入力(PC→AVR) 5:MISO:出力(AVR→PC) 6:SCK:クロック(PC→AVR)
※ターゲットボードとの接続は、丁度このハーネスを1回ねじる様な感じで取付けられます《注意》
その接続方式を配慮した書き込みライタの回路図が次です。 HIDaspxのライタ書き込み部分だけにシンプルに絞り込みました。

回路図のダウンロード ▶ avr_writer_main_logic.ce3 表示/印刷には水魚堂のBschが必要です。
部品リスト
00. ユニバーサル基板(部品をのせる面積が5cmx5cm程度もあれば十分)
01. CN3 20P ICソケット
02. R1 抵抗 10KΩ
03. R2,4 抵抗 75Ω(または68Ω)
04. R3 抵抗 33KΩ
05. R5,10 抵抗 330Ω
06. R6.7.8.9 抵抗100Ω(または120Ω)
07. X1 12MHz クリスタル
08. C2,C3 22PF セラミックコンデンサ
09. CN1 USB-MINI-B コネクタ
10. CN2 2.54mm 6Pヘッダピン (本来は2列の6ピンを使いますが、ストレートピンで代替えします)
11. C4 0.1uF セラミックコンデンサ
12. C1 47uF 16V 電解コンデンサ(または33uF)
13. D3 LED 小型赤色(黄)
14. D4 LED 小型緑色
15. F1 ポリスイッチ 10V100mA以上 レイケム社製
16. U1 AVRマイコン(ATTINY2313-20PU)先のファームウエアを書き込んだ物です。
17. D1,2 ツエナーダイオード 3.6V ※私は最小3.4V-最大3.6VのHA4A1-Eを使いました。
18. 配線 AWG24(0.3mm)程度の線材が少々/錫メッキ線少々/ポリウレタン線少々
<コラム7> 自作でUSB使用は誤配線等のPC側の破損が心配、USBハブがお薦めです。
本基板には回路保護用に、ポリスイッチを搭載しています。ポリスイッチは自己復帰型のヒューズの様な素子で、
100mA以上の負荷や電源ショート時に一旦オープン状態になり、パソコンやターゲットボードの破損を最低限に削減します。
しかしそれで防げない場合も十分にあります。
そこでおすすめなのが、外部電源付き(ACアダプタ)のUSBハブです。
4ポートもあれば十分過ぎるぐらいで、万が一自分が組んだ基板の間違い等でショート事故を引き起こしても、PC側まで破損させる可能性はさらに低くなります。
動作試験
01.
書き込みライタの組み立て後、配線を良くチエックします。
テスターの導通チエックモード(ブザーがおすすめ)でICの10ピンと20ピンにテスターを当てます、導通していないことを確認。
02.
始めマイコンを入れないでUSBケーブルをつなぎます、この状態で基板に電源がすでに供給されます。
先ほどと同じく今度はテスターのDC電圧(V)モードにします、ここでICソケットの20ピンにテスターのプラス側、10ピンにテスターのマイナス側を当て、
DC4.8V程度からDC5V程度であれば正常です。他の電圧ならすぐにUSBケーブルコネクタを外し、頭を冷やしてよく確認しましょう。
幸い回路にポリスイッチ保護素子が内蔵されているのでパソコン側を壊す様な事はあまり無いと思いますが、慎重に良く確認してから通電しましょう。
万が一のために先項の<コラム7>を良くご覧下さい。
03.
電圧が正常なら、一度USBケーブルを抜き、マイコン(ファームウエア書込み済み)を取付けます。
基板をUSBケーブルでパソコンに挿入すると黄色のLEDが1箇所点灯します。(他の色を使っている場合はそのカラーで光ります)
このLEDはマイコンのプログラムが動作していなくては点灯しませんので、概ね動作している事が判明します。第1関門突破という所でしょうか。
04.
次にパソコン側が書込みライタを認識しているかを調べます。
デバイスマネージャに「ヒューマンインターフェースデバイス」という項目があるの確認し、クリックするとHID 標準デバイスと表示されます。
第2関門突破という所でしょうか。
12. ターゲットボードの制作
いよいよ、ターゲットボードを作ります、このボードに何も書き込まれていないAVRマイコンを取付けてISP接続で書き込みライタでプログラムを転送して実行します。
次のボードが簡単に製作したスイッチ1個とLED1個使ったターゲットボードというか、試験ボードです。
プログラムでLEDを点滅させるという簡単な動作で、プログラム開発のおおよその流れを確認します。
本来LEDが1個(回路図のD1)で十分ですが、実際は今後の汎用実験のために回路図の様に3個とか4個複数のLEDがあったほうが良いでしょう。

※ 写真はその後の実験でコンデンサ2個内蔵型セラミック発信器(10MHz)が取付けられていますが、無くても内部発振回路1MHzにより動作します。

回路図のダウンロード avr_target_test_01.ce3 表示/印刷には水魚堂のBschが必要です。
部品リスト
00. PCB ユニバーサル基板(部品をのせる面積が5cmx5cm程度もあれば十分)
01. CN3 20P ICソケット
02. R6.7.8.9 330Ωから1.5KΩ程度の抵抗
03. X1
10MHz クリスタルまたはセラロック(コンデンサ付き)
04. C2,C3 22PF セラミックコンデンサ(クリスタルの場合必要)
05. CN2
2.54mm 6Pヘッダピン(本来は2列の6ピンを使いますが、ストレートピンで代替えします)
06. 4C 0.1uF セラミックコンデンサ
07. D3 LED 小型赤色
08. F1 プッシュスイッチ
09. U1 AVRマイコン(ATTINY2313-20PU)
10. 配線
AWG24(0.3mm)程度の線材が少々/錫メッキ線少々/ポリウレタン線少々
組み立て後、配線を良くチエックします。
テスターの導通チエックモード(ブザーがおすすめ)でICの10ピンと20ピンにテスターを当てます、導通していないことを確認。
ターゲット基板をISP接続ケーブルで書込みライタ接続しますが、始めは書き込みライタのUSBケーブルをPC側から抜いておきます。
テスターの導通チエックモード(ブザーがおすすめ)で書込みライタのマイコンの10ピンとターゲット基板の10ピンにテスターを当て、導通している事を確認。
同じく20ピン同士も導通している事を確認。
書き込みライタにUSBケーブルをでパソコンに挿入すると、書き込みライタLEDが1箇所点灯します。第3関門突破という所でしょうか。

先ほどと同じく今度はテスターのDC電圧(V)モードにします、ここでターゲット基板のICソケットの20ピンにテスターのプラス側、10ピンにテスター
のマイナス側を当てます、DC4.8V程度からDC5V程度であれば正常です。他の電圧ならすぐにUSBケーブルコネクタを外し、頭を冷やしてよく確認しましょう。
電圧が正常なら、一度USBケーブルを抜き、マイコン(何も書き込まれていないもの)を取付けます。
ここでUSBケーブルをPCに接続すると、すべての基板に電源がすでに供給されます。もちろん書き込みライタLEDが1箇所点灯します。
13. パソコン側でターゲットボードのマイコン認識しているかを調べます。
前項の「10. 書込みライタ用のソフトをインストール」で行った、hidspx-2010-0602.LZHをディスクトップに解凍すると
-2010-0602というフォルダが出来ましたが、この中の
hidspx-2010-0602/bin/ の中にある次のファイルをディスクトップにコピーします。
hidspx-GUI.exe (書込みのメインプログラム)
その書き込みライタ用のソフト hidspx-GUI.exe をクリックすると次の様なダイアログがどちらか?表示されます。


または次のダイアログ表示されます。

解説すると、このソフトは単体では実は動作しません。実はダイアログ左下の赤枠部分に秘密?があります。
実はもう一つの親ソフトであるhidspx.exeが必要です。
そうです前項の「09. 鶏と卵問題を解決する書込み機の制作」で使ったソフトでもあります。

この二つの関係は
bin/hidspx.exe(書き込みプログラムの本体エンジン部分ソフトとでもいいましょうか?)
hidspx-GUI.exe(書き込みプログラムを簡単に操作出来る様にしたソフトとでもいいましょうか?)
そんな二つのソフトの組み合わせで動作する関係です。
ディスクトップに、前項の作業のhidspx.exeがそのままあれば
ダイアログの左下の部分の「hidspx.exe Files」項目が
hidspx.exeではなく、たとえば
C:\Users\(ユーザー名)\Desktop\hidspx.exe と、自動に入力されていると思います。
※ 自分の場合はこう表示されました(C:\Users\kaneko\Desktop\hidspx.exe)
もしそうなら正常に次の様なダイアログが表示された可能性も高いはずですが、
少々統一した条件が必要な様です《次を参照》

今後の説明に統一性を持たせる為に、次の場所にhidspx-2010-0602というフォルダーを移動
なんでもディスクトップに配置するとPCの画面がゴチャゴチャになりあまりお勧め出来ません(笑)
ここで一度少しだけ前に戻り今後の作業統一を持たせる為に、前項で解凍作成したhidspx-2010-0602というディスクトップ上のフォルダを次へ移動します。
C:\hidspx-2010-0602
※パソコンのタイプや構築によってはC:ではなくD:等の場合もあります。
こういう作業が「開発環境の構築」と呼ばれる作業ですね。
すると、必要な各ソフトが保存されている場所は次の通りになります。
C:\hidspx-2010-0602\bin\hidspx.exe(書き込みプログラムの本体エンジン部分ソフト)
C:\hidspx-2010-0602\bin\hidspx-GUI.exe(書き込みプログラムを簡単に操作出来る様にしたソフト)
さっそく次のファイルのショートカットかコピーをディスクトップに作ります。
C:\hidspx-2010-0602\bin\hidspx-GUI.exe
パソコンとUSB切息で書き込みライタ基板とターゲット基板を接続してある状態で
hidspx-GUI.exeを起動すると、次の様なダイアログが表示されます。
画面左上当たりに「ATTINY2313」と表示されていればほぼ動作しています、第4関門突破という所でしょうか。

表示されない場合は、その下の
ボタンを押してみて下さい。
まだプログラムが書かれてはいませんが、ターゲットボードのマイコンの型式を自動で読み込んできていますので、ほぼ動作が確定します。
もしこの表示がでない場合
配線を良くチエックするしかありませんが、書き込みライタ側の可能性もあり、またターゲットボード側の可能性もあります。
書き込みライタ側のLEDが点灯するならマイコンからISP接続の6ピンコネクタあたりが怪しいです。これはターゲットボード側も同じく怪しいです。
こういう場合自分なら回路図を大きめに印刷して、サインペンで基板を見ながら、回路図とチエックして問題が無ければ回路図側を塗りつぶして行きます、
これが確実だと思います。
思わぬ所を接続ミスしたり、配線自体がつながっていない忘れていた箇所などが発見出来ます。
<コラム 8>
両方のソフト本体をディスクトップにコピーして(次のイメージ)動作させましたがターゲットボードへ接続出来ませんでした。
C:\Users\kaneko\Desktop\hidspx.exe
C:\Users\kaneko\Desktop\hidspx-GUI.exe
いろいろ調べた所原因が判明、上記二つのソフトの他に hidspx.ini という通称iniファイルが必要事が判明しました。

試しに、hidspx.iniをディスクトップにコピーしてhidspx-GUI.exeを動作させるChip status...[OK].の表示。
先の説明ではフオルダ毎全部C:\hidspx-2010-0602としてコピーしたので気がつかなかったんですね。
ということで2っのソフトではなく、最低3っのソフトが必要という事ですが
C:\Users\kaneko\Desktop\hidspx-GUI.exe からディスクトップにhidspx-GUI.exeのショートカットを配置して起動した方が何かと無難と思います。
またParallels Desktop5で動作させUSBから書き込みライタを抜いたり取付けた際に、次のダイアログが表示された場合は「仮想マシン」で接続します。
14. 簡単なソフトを作成して一通りの流れを確認する
下記のサイトで紹介されているプログラムを、そのまま使ってみる。
ワンチップマイクロコンピュータ AVR試用記 http://www.geocities.jp/kuman2600/
−−
LEDの点滅とAVRstudio・winAVRの使い方−−/www.geocities.jp/kuman2600/kantanouyou.html
なぜかC言語ではなくアセンブラです。 理由は、コンパイル後マイコンに書き込む.HEXフィルが出来なかったからです。
しかし、ここでは全体の動作確認が急がれたので、アセンブラソースから試した所HEXファイルが出来ました。
AVRStudio4を起動します。

新規プロジェクト作成をします。

プロジェクト型:は Atmel AVR Assembler
プロジェクト名:は led01 と入力すると自動的に初期ファイル名も同様となる。
保存場所:は参照ボタンを押してled01_asmという名前のフォルダを作ます。

始めはディスクトップに作るのが解りやすく良いでしょう。

ボタンを押します。

デバック環境:は仮にAVR Simulatorを選びます
デバイス:はATtiny2313を選びます
ボタンを押します。

画面中央の部分がソフトを書く場所であるエディター画面です、そこへ次のソースを書きます(コピー&ペーストしましょう)

ソースリスト ▼ここから
.include "2313def.inc";インクルードファイルを読み込む(用意が必要)
;**** Interrupt Vector **** ;この下は割り込みの番地を指定する。今はresetだけ。
rjmp begin ;Reset handle これらの番地の記述は2313のまじないとしていつも書いておくと良い
reti ;INT0
reti ;INT1
reti ;T/C1
reti ;T/C1
reti ;T/C1
reti ;T/C0
reti ;UART
reti ;UART
reti ;UART
reti ;Analog Comparator
;**** Program Code ****
begin: ;3行目でreset時のjumpラベルはbeginと書いたからここへくる
ldi r16,low(ramend)
out SPL,r16 ;Set SP スタックポインタを決めるまじない
ldi r16,0b11111111
out DDRB,R16 ;PortB as Out DDRxに1を書くと出力、0で入力の設定になる
ldi r16,0b00000000
out DDRD,r16 ;PortD as In 使わないけど入力とした
ldi R16,0b11111111
out PORTD,r16 ;PortD pull up enable 入力ポートに1を書くとプルアップになる
MainLp:
in r16,PORTB ;portBの値を読み込んで
com r16 ;反転して(点灯なら消灯、消灯なら点灯に)
out PORTB,r16 ;portBに出力
rcall WAIT ;時間を待って
rjmp MainLp ;繰り返し (MainLpへジャンプ)
;**** Wait **** 時間稼ぎのルーチン 50,100,100の数字を大きくすると遅くなる 255が上限
WAIT:
ldi r17,50
WAITLP1:
ldi r18,100
WAITLP2:
ldi r19,100
WAITLP3:
dec r19
brne WAITLP3
dec r18
brne WAITLP2
dec r17
brne WAITLP1
ret
ソースリスト ▲ここまで。
一旦すぐにファイルに保存します、メニューの「フィル」>「保存」
次にビルド(アセンブラ)します、メニューの「ビルド」>「Build F7」
おそらく画面下に次のエラーが無く終了したと表示がされます。
● Assembly complete, 0errors. 0 warnings
先ほどディスクトップに作ったled01_asmフォルダの中に、ソースファイルのled01.asmの他に沢山のファイルが出来ていますが、その中に
led01.hexというフィルが出来ています、これがAVRマイコンICに書き込む事が出来るHEXファィルというものです。

PCからUSBケーブルで ▶書き込みライタへ書き込みライタから ▶ISP(6本ケーブル)で、空マイコンの取付けられたターゲットボードへ
すべてを接続して書き込みライタのソフトを動作させます。

画面左上にATtyny2313と表示されているのを確認。
Flashのフアイル指定ボタン
を押して次のダイアログで、先ほどのled01.hexを選択します。

ボタンを押すと、次画面になり、#Fiash Write ... [OK]. と表示され、即時にターゲット基板のLEDが3個とも点滅するはずです。

プログラムでは3個とも同時に消えたり付いたりします。(点滅間隔はかなり遅く感じるはず)
ソースの次の部分のパラメータの数値を小さくして再度ビルド(アセンブルとも言う)すると
WAIT:
ldi r17,20
WAITLP1:
ldi r18,50
WAITLP2:
ldi r19,50
点滅の速度が早くかわる程度は、軽い応用実験です。


15. 続いて本命のC言語の場合。
本来はC言語のみ使っての開発予定ですが、前項の通りなぜかコンパイル(ビルド)を行っても
.HEXファイルが出来ません。この辺の原因を調べなくてはいけません。
Web上の情報では特に語られてはいない様子ですが、よくMakefile中の書き換えが必要と書かれていたり、自動で作成されるとかが書かれていますが、
存在程度は知っておくべきですし、Makefile自体がコンパイルやその他の作業を自動的にやってもらうためのスクリプトですので、非常に重要です。
このMakefileですが
AVR Studio4を起動して新規プロジェクトを作成する際に、本来一連の流れで自動的に出来上がります。
今回の場合を例にすると、ディスクトップにled01_cというフォルダを作り、そこにled01_c.cというソースフィルを作りますが、
そのフォルダにdefaultというフォルダが作成されて、その中にMakefileが出来上がっています。
そのフィルの中身はエディタで開くと次の部分があり特に重要ですが、調べると主な項目は次の様な感じです。
▶ MCU = attiny2313
使用するAVRの名前
▶ F_CPU = 8000000
実際の動作周波数をHz単位で(マイコン内部付属で1MHzなら 1000000 です)今回の試験でもこのモードです。
▶ TARGET = led01
コンパイル作成されるする.cファイルの拡張子(.c)を除いたものを書きます。led01.cならled1です
mainのままでもかまいません
▶ SRC = $(TARGET).c
プロジェクトに含めるCのソースファイル(スペース区切り)
などが主となるとまでは解ったのですが、自動で出来るという事で勝手に編集してもAVR Studio4を起動して何らかの設定を変えると、また書き替わる様です。
便利なのですがつかみにくい話で、大勢の方がこのソフトを使っている訳ですが、一定の仕組みが解らないので悩んでしまう事は多いです。
この仕組みをつかまないでそのまま使い続けると、やはり何かの時に「壁」となってしまいますよね。
ということで、何とか自分で?原因追及して何とか解決しました。もしかするとスンナリとビルドされ.HEXファイルが出来る環境もあるあるのかもしれません。
その過程は次の通りでした。
AVRStudio4を起動して、新規プロジェクト作成をします。


プロジェクト型:は AVR GCC
プロジェクト名:は led_test_01 と入力すると自動的に初期ファイル名も同様となる。
初期ファイル名作成のチエックをON
フォルダ作成のチエックをON
保存場所:は C:\Users\kaneko\Desktop\ とします。
※kanekoの部分は私の場合で、パソコンの初期設定により様々な名前となります。

デバック環境:は仮にAVR Simulatorを選びます
デバイス:はATtiny2313を選びます
ボタンを押します。

この画面の真ん中の空白部分にソフトのソースを書き込みます。

ここでは、動作確認ですので次のリストをコピーします。下記のサイトで紹介されているプログラムを、そのまま使っています。
ワンチップマイクロコンピュータ AVR試用記 http://www.geocities.jp/kuman2600/
極めて簡単な応用例 −−LEDの点滅とAVRstudio・winAVRの使い方−−
http://www.geocities.jp/kuman2600/kantanouyou.html
ソースリスト ▼ここから
Title: cLEDtest winAVR で ATTiny2313のポートBのLEDを点滅するテストプログラム
*/
#include <avr/io.h>
void wait(int x);
int main( void )
{
DDRB=0xff; /*PortBをすべて出力に設定する */
DDRD=0x00; /*PortDをすべて入力に設定する 使わないのですが */
PORTD=0xff; /*PortDをすべてプルアップする */
for (;;) { /* 無限ループ */
PORTB=0xf0; /* 11110000 をportBに出力 0で点灯 */
wait(80); /*wait関数(waitルーチン)実行 */
PORTB=0xff; /* 11111111 をportBに出力 すべて消灯 */
wait(80);
}
}
/* ********** サブルーチン ******************* */
void wait(int x){ /* 時間稼ぎ */
int i,j;
for(i=1;i<x;i++){
for(j=1;j<20000;j++){
j=j; /* dummy */
}
}
}
ソースリスト ▲ここまで。
一旦すぐにファイルに保存します、メニューの「フィル」>「保存」次にビルドします、メニューの「ビルド」>「Build F7」

すると画面下に次のエラーが一つあると表示がされます。
● ../led_test_01.c:33: fatal error:opening dependency file dep/led_test_01.o.d: No such file or directory
compilation terminated.
make: *** [led_test_01.o] Error 1
Build failed with 1 errors and 0 warnings...

先ほどディスクトップに作ったled_test_01フォルダの中に、ソースファイルのled_test_01.cの他に沢山のファイルが出来ていますが、その中に
led_test_01.hexというフィルが出来ていれば良いのですが出来ていません。


また、defaultという名前のフォルダが出来ていましたが、そのなかにはMakefileが出来ていました。

先にビルドしたエラーのなかに
opening dependency file dep/led_test_01.o.d というメッセージがあります。
Google翻訳で翻訳すると「依存関係がdep/led_test_01.o.dファイルを開く」と約されたが、わからない日本語(笑)
しかしdep/led_test_01.o.d というディレクトリとフィル名に注目。
ためしに次の場所に、depというフォルダを作ってみてからビルドしたが変化無し。
/Desktop/led_test_01/dep
今度はMakefileのある次の場所に、depというフォルダを作ってみてた。
/Desktop/led_test_01/default/dep

そしてビルドした所、エラーが無しで何と.HEXフアイルが出来ている。
さらにまたフィルが増えている。

空だった dep フオルダにも led_test_01.o.d が出来上がっていた。

とにかくdep フオルダを作れば、無事に解決した感じではあるが、本当はそんな事しなくても良いのでしょうね。
depフオルダを手動で作成しなければならない理由をもう少し堀さげてみた
おそらくは、どこかに/depを作るための定義を変更出来るファイルや設定があるはずです、一番可能性が高いのがMakefileです。
そこでエラー時のMakefileをエディタで開くと次の様な内容で、5カ所にdepの文字が見えます。
解りやすく赤文字にしてみた
Makefileリスト ▼ここから。
###############################################################################
# Makefile for the project led_test_01
###############################################################################
## General Flags
PROJECT = led_test_01
MCU = attiny2313
TARGET = led_test_01.elf
CC = avr-gcc
CPP = avr-g++
## Options common to compile, link and assembly rules
COMMON = -mmcu=$(MCU)
## Compile options common for all C compilation units.
CFLAGS = $(COMMON)
CFLAGS += -Wall -gdwarf-2 -Os -std=gnu99 -funsigned-char-funsigned-bitfields -fpack-struct -fshort-enums
CFLAGS += -MD -MP -MT $(*F).o -MF dep/$(@F).d
## Assembly specific flags
ASMFLAGS = $(COMMON)
ASMFLAGS += $(CFLAGS)
ASMFLAGS += -x assembler-with-cpp -Wa,-gdwarf2
## Linker flags
LDFLAGS = $(COMMON)
LDFLAGS += -Wl,-Map=led_test_01.map
## Intel Hex file production flags
HEX_FLASH_FLAGS = -R .eeprom -R .fuse -R .lock -R .signature
HEX_EEPROM_FLAGS = -j .eeprom
HEX_EEPROM_FLAGS += --set-section-flags=.eeprom="alloc,load"
HEX_EEPROM_FLAGS += --change-section-lma .eeprom=0 --no-change-warnings
## Objects that must be built in order to link
OBJECTS = led_test_01.o
## Objects explicitly added by the user
LINKONLYOBJECTS =
## Build
all: $(TARGET) led_test_01.hex led_test_01.eep led_test_01.lss size
## Compile
led_test_01.o: ../led_test_01.c
$(CC) $(INCLUDES) $(CFLAGS) -c $<
##Link
$(TARGET): $(OBJECTS)
$(CC) $(LDFLAGS) $(OBJECTS) $(LINKONLYOBJECTS) $(LIBDIRS) $(LIBS) -o$(TARGET)
%.hex: $(TARGET)
avr-objcopy -O ihex $(HEX_FLASH_FLAGS) $< $@
%.eep: $(TARGET)
-avr-objcopy $(HEX_EEPROM_FLAGS) -O ihex $< $@ || exit 0
%.lss: $(TARGET)
avr-objdump -h -S $< > $@
size: ${TARGET}
@echo
@avr-size -C --mcu=${MCU} ${TARGET}
## Clean target
.PHONY: clean
clean:
-rm -rf $(OBJECTS) led_test_01.elf
dep
/* led_test_01.hex led_test_01.eep led_test_01.lss led_test_01.map
## Other
dependencies
-include $(shell mkdir
dep2>/dev/null) $(wildcard
dep/*)
Makefileリスト ▲ここまで。
最後の行の ## Other dependencies とは「その他の依存性」という意味ですが、何か関連ありそうです。
<コラム 9> 実は、シリアルCOMポート用の書込み機も作ってもみました。
実は何でもいいや!という感覚で
「でんし研ホームページ」 http://homepage2.nifty.com/denshiken/index.html
入門用AVR-ISPライターのプログラムと回路図A を作成してみました、RS232C接続で十分と思い即製作実行。
http://homepage2.nifty.com/denshiken/AVW019.html
ごらんのように基板も出来上がり、ファームウエアの書込み(いわゆる卵書き込み)を行う予定。
さらにRS232-C接続だけど、USB-シリアルRS232-C変換ケーブルも使えるので問題無しと考えていました。
しかし、Macネイティブでの開発に付いては不透明で、せっかくという事で調べた結果が、
千秋ゼミ http://www-ice.yamagata-cit.ac.jp/ken/senshu/sitedev/ のHIDaspx書込みライタでした。
この時点で秋月電子へAVRマイコンを注文して待っている状態でのWeb情報からHIDaspxを発見して、その間にHIDaspxの基板も作成してしまいました。
もっとも「でんし研ホームページ」さん紹介のこの基板も使えますので、のちのち結果オーライかな?と思います。
16. 一応の準備は整いました。 2010.07.05
AVRの開発を行う最低限の環境は整いました、だいたいここまでコツコツと20日程度でした。
MacOSの仮想環境からのWindowsVista 64bitという環境からもマイコンへの書き込みが可能でした。
唯一気になるのが /dep ディレクトリが自動で作られない事です。(手動で作ればいいだけですがね)
この後自分は「初めてのC」なる本を読みながら(えっ!)じっくりと開発を進めていきます。
煮詰まったら現実逃避を兼ねて?おそらく息抜きにMacOSXでのネイティブな開発環境も徐々に構築していく事と思います。
実際のプログラムは後章の「初めてのCプログラミング編」へコツコツと続きます。