一応、1)独自のピン定義を定めた場合にそれをどう反映させるかを示す、2)他のページで、board.txtに追加する内容が、Metaboard用としては無意味なものが含まれているケースが多いので、それを指摘する、等の意味もあると一応書いておきます。
↓くれぐれもArduino基板としての参考にしないで下さい。別の用途で作成してあった基板にArduinoのファームウェアを書き込むことで、“名目上”Arduinoに仕立てただけです。
ただしメッキ線のみでV-USB基板を作成する際の参考にはなります。一部でビニール被覆線を使用している理由は、そこは仮の配線なのでパターンを汚さないようにする為です。そこを除けばICSPまで含めてメッキ線だけで配線しているということになります。
クリックすると大きな画像で表示されます
13番ピンをGNDに落とすジャンパを設けました。これが今回Arduinoにする為におこなった唯一のハード改造です。
なお上部に3個の抵抗を付けていますが、そのうちの2個は以前の用途で使用していた名残で、現在は使用していません。残り1個は、Arduino IDE上からLチカを書き込んであるので使用しています。
ピン割りをカスタマイズした場合の、Metabord用board定義の追加分
metaboard168.name=Metaboard (USBaspLoader ATmega168 at 16MHz) metaboard168.upload.protocol=usbasp metaboard168.upload.maximum_size=14336 metaboard168.upload.speed=19200 metaboard168.build.mcu=atmega168 metaboard168.build.f_cpu=16000000L metaboard168.build.core=arduino metaboard168.build.variant=metaboard
metaboard328.name=Metaboard (USBaspLoader ATmega328P at 16MHz) metaboard328.upload.protocol=usbasp metaboard328.upload.maximum_size=28672 metaboard328.upload.speed=19200 metaboard328.build.mcu=atmega328p metaboard328.build.f_cpu=16000000L metaboard328.build.core=arduino metaboard328.build.variant=metaboard
独自のピン定義を反映させる設定は以下の記述です(よくできたページでもここが抜けているページが多い)。
metaboardXXX.build.variant=metaboard
もちろんmetabordフォルダに独自のpins_arduino.hを設置しておきます。
ところで、フラッシュメモリから直接実行する1チップで構成されているMetaboardのブートローダを自身で更新できる筈はありません。なのでMetaboardなのに、(何かの真似か何かで)該当箇所にbootloader.fileの記述がある、boards.txtの記述は、間違いとまでは言えないかもしれませんが無意味です。
upload.maximum_sizeに記述する値はUSBaspLoaderのMakefile.incのBOOTLOADER_ADDRESS_XXXを10進にしたものです。
USBaspLoaderがUSB通信等に使用するピンのカスタマイズ
ダウンロード USBaspLoader-master-Metaboard.patch
※USBaspLoaderはgithub( https://github.com/baerwolf/USBaspLoader )のものを使用することを強く推奨します。上記内容もこれを前提に記述しています。
Arduinoのピン定義(pins_arduino.h)のカスタマイズ
独自定義のpins_arduino.hのひな形はtinyUSBboard用のものを使います。
そして上掲の基板の場合、↓このように修正します。
ダウンロード diff-tinyusbboard_pins_arduino.h_my-metaboard_pins_arduino.h.txt
udevの設定(最近のLinuxの場合)
USBaspデバイスのパーミッションを自動設定するudev用の定義ファイルについでですが、2010年頃の、古いものがまだ検索結果の上位に位置しています。現在のLinuxでは“SYSFS”の箇所を“ATTRS”に置き換える必要があります。
SYSFS{idVendor}=="16c0", SYSFS{idProduct}=="05dc", GROUP="users", MODE="666"
を
ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05dc", GROUP="users", MODE="666"
に