2015年12月
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

最近のトラックバック

« 知らないとソン!? Arduinoの小ネタ色々 | トップページ | 三三三市に出店します »

2014年8月27日 (水)

世界最小?のArduino互換ボードを作ってみた(暫定版)

Bv9hdw4cqaafebs_2

 と言う訳で、おそらく世界最小だと思われるArduino互換ボードなのですが、要はATtiny10のArduino化です。まずは下のオプションファイルをダウンロードして下さい。

 このファイルを解凍し、Arduinoのスケッチを保存するフォルダに hardware というフォルダを作成してその中に入れて下さい。その後Arduino IDEを立ち上げるとマイコンボードに bitDuino13 (internal 9.6 MHz clock) とbitDuino10 (internal 8 MHz clock)が追加されます。ATtiny10は後者のマイコンボードになります。

 今回も詳細な使い方はkosaka kimioさんの記事「米粒AVR(ATtiny10)をArduino IDEで使う。暫定レポート2」 をご参照願います。現行Arduino IDEのコンパイラ(1.0.5)ではATtiny10に対応していないので、Windows/macともにそれぞれの方法でコンパイラを差し替える必要があります。Windowsではフォルダごと交換、macでは元のフォルダの名前を変更し、シンボリックリンクを作成する事で差し替えをします。私はmacを使っているのですが念のためArduino IDEを複製してそちらのコンパイラを差し替えました。

 今回のオプションファイルは3月に暫定公開したATtiny13AをArduino化するbitDuinoを元にしています。そこへkosaka kimioさんのATtiny10をサポートする仕組みを追加しさらにdelayMicroseconds関数のインラインアセンブラ化などを施しています。
 
  • 経過時間関係の関数がデフォルトでは使用不可
    millis() とmicros()がそのままでは使えません。一応setup関数内にstartTimer();と書けばこれらの関数のタイマーを設定をして動く様にしました。ATtiny13A(bitDuino13)では動作していそうですが、ATtiny10(bitDuino10)ではどうもおかしい様です。今後修正して行きたいところですが、あまり使う場面も無いかなぁと思っています。
  • delay()関数があまり正確ではない
    本来のArduinoではタイマーで管理されたmillis()関数を利用して実現されているのですが、これをCPUサイクルから求めたdelayMicroseconds()関数を利用する様に変更しています。また引数はlong型ではなくint型で受け取るので、使用出来る数値範囲が狭まっています。
  • ピン番号を指定する関数で使用可能範囲をチェックしていない
    digitalRead(),digitalWrite(),analogRead(),analogWrite()などの関数でピン番号の指定出来る範囲のチェックをしていません。間違わない様に気をつけて下さい。
  • Tone()関数は詰め切ってないので音痴かもw
    ATtiny10(bitDuino10)では未チェックです。 代わりにtoneCycle関数を実装しました。
  • その他
    ATtiny10(bitDuino10)ではshiftOut(), shiftIn(),pulseIn()等の関数が未チェック。

 書き込みに当たっては、テストをしやすい基板を作成し、AVR ISP mkIIと5VACアダプタが繋がる様にしてあります。
 動画のマイコンは秋月の実装済みモジュールですが、これを連結ピンに差し替えて足をつけていない基板に書込んでいます。ICクリップが繋がる様にするのも良さそうです。
 細かいチェックはまた今後して行こうと思いますが、みなさんも実際に使ってみて下さい。

« 知らないとソン!? Arduinoの小ネタ色々 | トップページ | 三三三市に出店します »

Arduino」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

« 知らないとソン!? Arduinoの小ネタ色々 | トップページ | 三三三市に出店します »