arduino variantsのつくりかた(仮)

(以下の情報はArduino-1.0 RC1の話なので、正式リリースまでに変更される可能性があります)

Arduino-1.0 からこれまでになかったフォルダhardware/arduino/variants/{standard,mega,leonardo}ができている。
もとはhardware/arduino/cores/arduinoにあったpins_arduino.hだけがある。
ここにはマクロや定義があって、

NUM_DIGITAL_PINS 
NUM_ANALOG_INPUTS
analogInputToDigitalPin(p)
digitalPinHasPWM(p)
SS
MOSI
MISO
SCK
SDA
SCL
LED
A0~A7
digitalPinToPCICR(p)
digitalPinToPCICRbit(p)
digitalPinToPCMSK(p)
digitalPinToPCMSKbit(p)
port_to_mode_PGM[]
port_to_output_PGM[]
port_to_input_PGM[]
digital_pin_to_port_PGM[]
digital_pin_to_bit_mask_PGM[]
digital_pin_to_timer_PGM[]

と結構数があるが、これらを定義することで俺様仕様のArduino cloneがつくれる仕組みのようである。必要なファイルは以下の2つだけのようだ。

1. variantsにhogeというディレクトリを作ったとして、使いたいCPUに応じてpins_arduino.hをカスタマイズする。
standardの場合を参考にしながら、データシートを調べる。
PWMがあるピンにはOC0A(→TIMER0A)などと書いてある。
PCICR、PCMSKはPCINTに関係がある。(LeonardoはdigitalPinToPCICRなどが未定義で未完成状態です。SoftwareSerialを使おうとするとエラーが出ました。)
物理ピン(PB0など)と論理ピン(D0など)の対応はdigital_pin_to_port_PGMで定義されている。

2. hardware/boards.txtに

hoge644p8MHz.name=ATmega644P / 8MHz
hoge644p8MHz.upload.protocol=stk500v2
...
hoge644p8MHz.build.mcu=atmega644p
hoge644p8MHz.build.f_cpu=8000000L
hoge644p8MHz.build.core=arduino
hoge644p8MHz.build.variant=hoge
...
...
hoge1284p16MHz.name=ATMega1284P / 16MHz
hoge1284p16MHz.upload.protocol=stk500v2
...
hoge1284p16MHz.build.mcu=atmega1284p
hoge1284p16MHz.build.f_cpu=16000000L
hoge1284p16MHz.build.core=arduino
hoge1284p16MHz.build.variant=hoge

のような書式でビルドに必要な情報を書く。
周波数だけ変えるとか、644p/1284pなどピン配列が共通なものを同じhogeフォルダで共有して、名前で切り替える。
コードについては実際に動かしてから公開します。

ATTinyについては、
http://hlt.media.mit.edu/?p=1229
の最後の方にArduino 1.0 supportというのがある。

ファイル2つでいいという話は既にこちら
http://suz-avr.sblo.jp/article/48387405.html
に書いてありました。

広告
カテゴリー: Arduino, AVR

コメントを残す

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

WordPress.com ロゴ

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

Twitter 画像

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

Facebook の写真

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

Google+ フォト

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

%s と連携中

カテゴリー
2011年10月
« 9月   11月 »
 12
3456789
10111213141516
17181920212223
24252627282930
31  
%d人のブロガーが「いいね」をつけました。