FrontPage

2008/10/09 からのアクセス回数 14793

SunSPOTのeDemoには、ATMELのATmega88が使われていて、拡張ボードもATmega88だと都合がよいので AVRを勉強することにしました。

ちょうど、「エレキジャックNo. 8」にTiny2313が付録についてきたので、これを使ってみることにします。 また、「インターネット・ガジェット設計」という本が結構おもしろいので、これもさらってみます。

ソフトの開発でも同じですが、

  • 頭で理解するのではなく、自分の手を使って実際に最初から自分でなぞってみること
  • 常に複数の対応を準備しておき、場合に応じて対処すること

が大切です。

ライターを用意する

ちょうど、EZ-USBが手元にあり、チップ抵抗の半田付けを練習するために、オプティマイズの EZ-USBを使用した AVR ISP ライターを使うことにしました。

送られてきた部品は、

1.jpg

です。

たった4個のチップ抵抗の半田付けに半日かかりました。

2.jpg

開発環境の整備

Windowsの環境

ライターがWindowsでしか動作しないので、最初はWindows 2000に開発環境を整備しました。

「エレキジャックNo. 8の第5章AVRマイコンを使おう」に沿って

をダウンロードしました。このほかCygwinもインストールしてあります。

ライターのソフトは、オプティマイズのページからダウンロードし、WinAVRをインストールしたディレクトリのbinと同じ場所に入れます。

エレキジャックNo. 8の図5-6 *1 を参考に、LEDの点灯例題を

6.jpg

のようにブレッドボードで回路を組んで、ライターでSignatureを読み込むと、

$ avrezusb.exe -rf
Detected device is ATtiny2313.

Low: 01100100
     ||||++++-- CKSEL[3:0] NbNI
     ||++-- SUT[1:0] - N
     |+-- CKOUT (0:PD2VXeNbNo)
     +-- CKDIV8 NbNlw

High:11-11111
     |||||||+-- RSTDISBL (RESETs 1:L, 0:(PA2))
     ||||+++-- BODLEVEL[2:0] f[^V[gQ
     |||+-- WDTON (WDT 0:ON, 1:)
     ||+-- SPIEN (1:ISP~, 0:ISP) Parallel
     |+-- EESAVE (EEPROM 1:, 0:)
     +-- DWEN (On-ChipfobO 1:, 0:L)

Ext: -------1
            +-- SPMEN (SPM 1:, 0:L)

Cal: 92

のように正しくTiny2313が認識されました。

avrezusbの使い方は、helpを参照してください。

$ avrezusb.exe -help
AVREZUSB - AVR Serial Programming tool R0.30 (C)ChaN,2004  http://elm-chan.org/
           Modified by OPTIMIZE for EZ-USB V4.3

Write code and/or data  : <hex file> [<hex file>] ...
Verify code and/or data : -v <hex file> [<hex file>] ...
Read code, data or fuse : -r{p|e|f}
Write fuse byte         : -f{l|h|x}<bin>
Lock device             : -l[<bin>]
Erase device            : -e
Copy calibration bytes  : -c
SPI control delay [-d3] : -d<n>

SUPPORTED DEVICE:
AT90S 1200,2313,2323,2333,2343,4414,4433,4434,8515,8535
ATtiny 12,13,15,22,25,26,45,85,2313
ATmega 8,16,32,48,64,88,103,128,161,162,163,165,168,169,323,603,8515,8535
AT90CAN 128

SUPPORTED ADAPTER:
EZ-USB only.

純正ライターの購入

Macでの開発のために、純正のAVR ISP mkIIを購入しました。

4.jpg

WindowsのAVR Stduioで動作を確認しようとしたところ、いきなり

  1. ソケットのピン配置を勘違い
  2. Tiny2313を認識しない
  3. プログラムが書き込めない
  4. 書込後に正常に動作しない

という事態に陥りました。

原因を調べたところ、

  1. AVR ISP mkII のユーザガイドには、
    pin_assign.jpg
    のように書かれているので、ついケーブルの赤いラインのピンが1番だと勘違いした。 この図は、ライターにソケットを付けた時にボードの上からみた図で、赤いラインに一番近いピンは2番 ピンです。どうようのメッセージがhttp://metrocrusader.blog41.fc2.com/blog-date-200711.htmlにもありました。
  2. EZ-USBのISPライターではライターから電源を供給していたが、mkIIは外部電源を必要とする
  3. 回路に組み込んだままでは、プログラムが書き込めなくて、クリスタルを付けた別ブレッドボードを用意した。 永山さんから回路に組み込んでISPが可能な条件がChanNさんのページのISP対応設計に説明されていると教えていただきました。
  4. これも当たり前なのですが、うっかりライターのケーブルを接続したまま、動作チェックをした

ことが原因と分かりました。

USBマルチ電源

ターゲットボードの電圧が、3.3Vなので、トランジスタ技術1月号の付録基板、「USBマルチ電源」を使って電源を供給することにしました。

usbPower.jpg

更に、クリスタルをセットした書き込み用のブレッドボードを用意し、プログラムの書き込みをしました。

writting.jpg

Mac OSXの環境

最初は、MacPortを使ってインストールしようとしたのですが、途中でエラーとなったので、今回は

  • WinAVRのマック版であるAVR MacPackのAVRMacPack-20080721.dmgをダウンロードしました。

インストールはマック用のパッケージ形式になっているので、マウント後のAVRMacPack.pkgをダブルクリックするだけです。

libusbが正しく動作するように念のため、インストール後に再起動をした方がいいです。

動作確認

テストプログラムには、エレキジャックNo. 8のLEDの点灯プログラムを使いました。

今回は、ブザーを必要としないので、以下のようになります。

#include <avr/io.h>

#define F_CPU 1000000UL
#include <util/delay.h>

typedef unsigned char BYTE;
typedef unsigned int WORD;

#define bitLED1	3
#define bitLED2	4

#define LED_RED_ON		PORTB |= (1<<bitLED1)
#define LED_RED_OFF		PORTB &= ~(1<<bitLED1)
#define LED_BLUE_ON		PORTB |= (1<<bitLED2)
#define LED_BLUE_OFF	PORTB &= ~(1<<bitLED2)

#define DELAY	_delay_ms(1000)

main(void) {
	DDRB = (1<<bitLED1 | 1<<bitLED2);

	while(1) {
		LED_RED_ON;
		LED_BLUE_OFF;
		DELAY;
		LED_RED_OFF;
		LED_BLUE_ON;
		DELAY;
	}
}

ここで、

  • DDRxでxポートへのI/Oポートへの入出力を切り替えます、bitに1をセットすると出力、0をセットすると入力となります。
  • PORTxでxポートへの値の設定と状態のチェックを行います。
  • PINxはxポートから入力値を読み取ります。

コメント

この記事は、

選択肢 投票
おもしろかった 20  
そうでもない 1  
わかりずらい 4  

皆様のご意見、ご希望をお待ちしております。

  • 永山さんのご指摘により、ChanNさのISP対応設計のリンクを追加 -- 竹本? 2008-10-14 (火) 18:55:42
  • ターミナルを使用したとか、なぜ書かないんでしょうか? それぐらい分かっていて当たり前だから?あなたは、最初の一歩からそんな事がわかっていたの? わざと情報を出し惜しみして初心者を困らせる典型的な嫌な人 -- 2012-06-12 (火) 13:26:34
  • 失礼しました。これは私の最初一歩を記録したもので、誤解を与えたことをお詫びします。自分の苦労したところを他の人と共有したいという思いでこの記事を書きました、どうぞご理解ください。 -- 竹本 浩? 2012-06-12 (火) 15:09:24

(Input image string)


*1 初心者を対象とした入門書なのに、実体配線図のLEDのKとAの記述が逆になっているので注意してください。

添付ファイル: filewritting.jpg 1524件 [詳細] fileusbPower.jpg 1484件 [詳細] file3.jpg 808件 [詳細] file0.jpg 737件 [詳細] file4.jpg 1621件 [詳細] filepin_assign.jpg 1534件 [詳細] file6.jpg 1549件 [詳細] file2.jpg 1465件 [詳細] file1.jpg 1467件 [詳細]

トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2012-06-12 (火) 15:09:24 (4337d)
SmartDoc