Wiring 1.0betaRC3

(追記 2011/10/18 Wiring 1.0 Build 0100 がリリースされました)
(追記 2011/8/10 RC4が出ました)
まだRelease Candidateなので以下の内容はobsoleteになる可能性があります。
Arduino-1.0も同じ理由で自粛していますが、しばらくかかりそうなので先走りするかもしれません。
(Xbeeについては設定とかの話が面倒で書く気が萎えてきました)
http://wiring.org.co/download/ Linux版はまだ公開されていません。(7/1公開されました)

WiringはArduinoの兄(姉)貴分に当たります。Wiringはボードが高くやや敷居が高かったのを簡易化したのがArduinoです。
Arduinoの方がボードのバリエーションが進んできていたのですが、ここで一気に逆転してしまいました。
対応するボードはArduino互換ボードはそのまま動く上に、ATmega644/1284P およびATmega168/328P用に
Wiringブートローダと設定が標準で提供されています。
Wiring Sというボードが新しく発売されましたが、直接買うと送料が50カナダドルとか本体の倍近くかかってしまうので国内の代理店待ちというところ。
rogue roboticsでも扱い始めましたが、送料$18くらい。

1. Arduinoで試す

これは最も簡単な方法でArduinoボードに一切手を加えることなく、WiringIDEから使うだけです。
Tools->Board->Arduinoで出てくるボードから選択し、シリアルポートを設定する。
後は普通にArduinoIDEから使うのと大差ないのでこれ以上は書きません。

2. Arduinoのブートローダを書き換える

ArduinoのブートローダをWiring用に書き換えてWiringボードにしてしまうもの。
次の644/1284の場合と同様ですが、AVRのISPボードが必要です。(AVRISPmkIIとかUSBtinyなど)
ブートローダの在処はWiringのベースディレクトリがMacの場合は
/Applications/Wiring.app/Contents/Resources/Java
ですが、以下ではこのディレクトリに対する相対パスを書きます。
./hardware/Atmel/bootloaders/ 以下に
WiringBoot_ATmega328_16MHz.hexなどがあるので自分のボードに合うものを探す。
後は./hardware/Atmel/boards.txtから必要なデータを取り出せばよいので、
例えば次のようなMakefileでほとんどの設定に対応できる。

PROGRAMMER = -c usbtiny -P usb 
BOARD = atm328p16MHz  
BOARDS = "/Applications/Wiring.app/Contents/Resources/Java/hardware/Atmel/boards.txt"
DEVICE  := $(shell sed -n 's/$(BOARD)\.build\.mcu=\(.*\)/\1/p' < $(BOARDS))
CLOCK   := $(shell sed -n 's/$(BOARD)\.build\.f_cpu=\(.*\)L/\1/p' < $(BOARDS))
LFUSE   := $(shell sed -n 's/$(BOARD)\.bootloader\.low_fuses=\(.*\)/\1/p' < $(BOARDS))
HFUSE   := $(shell sed -n 's/$(BOARD)\.bootloader\.high_fuses=\(.*\)/\1/p' < $(BOARDS))
EFUSE   := $(shell sed -n 's/$(BOARD)\.bootloader\.extended_fuses=\(.*\)/\1/p' < $(BOARDS))
BOOTLOADER := $(shell sed -n 's/$(BOARD)\.bootloader\.file=\(.*\)/\1/p' < $(BOARDS))

FUSES   = -U hfuse:w:$(HFUSE):m -U lfuse:w:$(LFUSE):m -U efuse:w:$(EFUSE):m
AVRDUDE = avrdude $(PROGRAMMER) -p $(DEVICE) 

flash:
          $(AVRDUDE) -U flash:w:$(BOOTLOADER):i
fuse:
          $(AVRDUDE) $(FUSES)
install: flash fuse

make installでbootloaderを書き換えることができる。
ブートローダの書き換え後はIDEにおいて
Tools→Board→Atmel以下から選択する。
なお、bootloaderのソースは./hardware/Wiring/bootloaders/にあり、buildに移動して
make arduino-328p-16MHz などとする。Arduino.mk, AtmelBare.mk などを見ると対応する設定がわかる。

3. ブレッドボードで試す

ブートローダの書き込みにはISPツールが必要で手順は2とほぼ同じ。
ここでは40pinのATmega644Pの内蔵クロック8MHzの場合について書く。
接続は

6 MOSI
7 MISO
8 SCK
9 RESET
10 VCC
11 GND

をISPの

1 MISO
2 VCC
3 SCK
4 MOSI
5 RESET
6 GND

と接続する。
後は上のMakefileで
BOARD = atm644p8MHz
とするだけでよい。
その後、Wiringから使うときはUSBシリアルボードが必要。(FTDI Basic、秋月USBシリアルなど)

Sparkfun FTDI Basic ⇔ ATmega644p
1 DTR - 0.1uF - 9 RESET
2 RXT - 1kOhm - 15 TXD0
3 TXD - 1kOhm -14 RXD0
4 VCC - VCC
5 CTS (NC)
6 GND - GND

のように接続する。
./hardware/Atmel/ATmegaXX4P-PA/BoardDefs.h
にピンの機能が書いてあるので、書き起こしてみると

のようになる。
これで基本的なポート操作とUARTが動くことは確認した。

広告
カテゴリー: Arduino, AVR

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

カテゴリー
2011年6月
« 5月   8月 »
 12345
6789101112
13141516171819
20212223242526
27282930  
%d人のブロガーが「いいね」をつけました。