「PIC AVR 工作室」サイトの日記的なブログです。
サイトに挙げなかった他愛ないことを日記的に書き残してます。
PIC AVR 工作室 ブログ



引き続き、arduinoのライブラリ関係を調査しています。

SPIを使いたかったんですが、Official Librariesは
おろかContributed Librariesにもそれっぽいもの無し。
先人のSPI関係のスケッチを探してみたんですが、
めぼしい感じのものがヒットせず。
(↓これはちょっと長すぎるよね…)
http://www.arduino.cc/en/Tutorial/SPIEEPROM


なので、I2C(TWI)i/fについて調べました。これも
SPI同様に「バスi/f」として簡単に使えるので。


I2C(TWI)については、Official Librariesで
しっかり対応されてました。
サンプルスケッチなどを眺めてみましたが、
使い方も超シンプル。I2C対応のICとなら、
取り交わすコマンド類さえ判れば簡単にスケッチ
が可能かと。


凝り性なもので、ライブラリの内部を眺めてみました。
特に気になっているのは通信速度のこと。
(ピン配置などは標準のピン以外に割り当てのしようが
 ないはずなので)

MEGA168の内部レジスタでは、プリスケーラとビットレート
を決めるのは、TWSRレジスタ内のTWPS1、TWPS0の
2ビットと、TWBRレジスタの全8ビット、計10ビット。
これらが内部でどう設定されてるのか、なのですが…

残念ながら、ざっと眺めた程度ではこれらのレジスタに
設定している処理までは追いきれませんでした…。
ただ、Wire.cpp 内のbegin()関数から呼び出される
twi.h 内のtwi_init() 関数の中で、

   #define TWI_FREQ 100000L

と言う具合にTWIの周波数を100KHzに設定している
ところがあり、それ以外の周波数に設定している
所はないようなので、多分100KHz(=低速モード)
に固定で設定されていると考えて間違えないでしょう。

きっと、下手に速い速度で固定すると古い周辺IC
とかでは対応されない場合があるから遅い方に
あわせてあるのでしょう。
逆に受信速度自体はMEGA168ならもともと400KHz対応だし。


どちらかというと、速い通信速度(400KHz)固定の
ほうが個人的には困ってしまうところなので、
100KHzは歓迎です。

その他興味をひいたライブラリとしてはグラフィックLCD
の表示ライブラリとか、PS2キーボードライブラリとか、
サーボモーターライブラリあたりですね。
この辺はあとで時間があるときにでもじっくり見て
みたいと思います。



コメント ( 0 )
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする



« こんなシンプ... timer割り込み... »
 
コメント
 
コメントはありません。
コメントを投稿する
 
名前
タイトル
URL
コメント
コメント利用規約に同意の上コメント投稿を行ってください。

数字4桁を入力し、投稿ボタンを押してください。