Metabordの回路を変更してできあがったこの回路,どこかで見たことがあるような… もあさんの Gingerと似ています。
回路図の赤枠で囲まれたUSBインタフェース部を小さなユニバーサル基板に組んでブレッドボード上に装着しています。
セラミック発振子(セラロック)を用いています。しかし,セラミック発振子は発振周波数の誤差や温度による変動が大きいので USB通信用途には適していません。確実かつ安定して働かせたい場合は水晶振動子を用います。
この回路を1チップサイズの基板に押し込んだ「One-Chip Arduino ver. 2.0」 を作るとき実装面積小さくするためにセラロックの使用が不可避でした。しかし,「ソフトUSBにはセラロックは使えない」と聞いていたので,実際にはどうなのか実験して使用の可否を確かめてみました。
秋月電子で売られているセラロック(16MHz)が16個ほど手元にありましたので,ひとつづつ実験ボードに差して3台のパソコン A(ThinkPad 2655-P3J + ubuntu 8.10),B(Intellistation 6225-2J9 + Win-XP),C(ThinkPad 2656-AJ3 + Win-XP) に接続してUSB通信の可否を調べました。
結果はパソコンAでは16個中3個がUSB通信不可でした。パソコンB・Cではこの3個のうち2個は通信ができましたが,残り1個は通信できませんでした。 実験個数が少ないのと温度変化に対する実験をやっていませんので早計に結論は出せませんが,思っていたよりもセラロックは悪くないです。(半数はダメだろうと思っていました) しかし,セラロックを使用する回路でソフトUSBを行う場合は所謂「相性問題」が確実にあるので,事前に実験回路を複数のパソコンに接続し通信テストをして相性の良いセラロックを選別使用した方が安全です。実装面積に余裕のある場合は無条件に水晶振動子を用いた方が良いです。
Morosanのこの同期方法を実装すればセラロック使用時でも確実にエラー無く通信できるものと思われます。
ファームウェアにはUSBaspLoaderを用います。
ファームウェアの書き込みには秋月のUSB-Serialコンバータを使ったFTDI Bitbang AVRライタを使いました。
一旦,ボードをUSBポートから外します。再度,USBポートにつなぎます。 「USBデバイスが認識されません」と表示されたら,リセットスイッチを押します。正しく動作していると,ボードはブートローダモードに移り 「USBデバイスが認識されません」の表示が消えるはずです。
ユニバーサル基板の廃材を加工してStickDuinoモドキを作って見ました。
さらにトリッキーな実装をしたのがOne-Chip Arduino ver. 2.0 と Skeleton Arduinoです。
Metaboardのレイアウトを大幅に変更した片面ボードを製作しました。
デジタル・ソケットが1列ならばDiecimilaと同一サイズに収まります。
update 2010.01.17
upload 2009.05.31