TWIのライブラリをまとめる

■はじめてまじめに使ってみたTWIモジュール、最初は変則的な通信をするチップには使えないかと思っていたのですが、きちんきちんと手順を踏むとちゃんと通信できることが解りました。「変則的なチップ」と思っていたのは秋月電子から購入したリアルタイムクロックで、このプロトコルの中に一旦読み出しレジスタ番号を書き込んでからストップビットなしにスタートビットと読み出しフラグを立てたアドレスを送り出すシーケンスがあって、そこに標準的なI2Cプロトコルは使えない…と思っていたのでした。

 このRTCモジュールは以前も使ったことがあって、その時は自前のI2Cライブラリを使ったので問題なく対応できたのですが、それをペリフェラルでやってみたところ最初はダメでした。ただ、そのあとちゃんと手順を確認して、つまりはデバッグをやったらペリフェラルでもできたので、別に何の問題もないのでした。

 I2Cのライブラリは拾いものでも十分使えるものなのですが、使うには不便なところもあったので、本筋からはずれる部分ですがビットレート設定を計算せずに使えるようにしてみました。
 I2Cの初期設定する前に使えばよいので、どのライブラリでも使えるでしょう。設定したいビットレート(上限400Kbit/Sec)を指定するとTWBRの設定値とプリスケーラー値を戻します。


#define CPU_MASTER_FREQ 8000000
#define TWI_PORT PORTC

BOOL i2cCalcRate( unsigned long sclFreq,
   unsigned char *vTWBR,
   unsigned char *presc)
{
 unsigned long wk,i;

 *vTWBR = 255;
 *presc = 3;

 //Freq Limit: 400KHz(400Kbit/Sec) (I2C FastMode)
 if (sclFreq > 400000){
  return false;
 }

 wk = (CPU_MASTER_FREQ/sclFreq - 16 ) / 2;
 for(i = 1; i < 4; i++){
  if(wk < 256){
   *vTWBR = (unsigned char)(wk);
   *presc = i;
   return true;
  }
  wk /= 4;
 }

 return false;
}

Copyright (C) 2008-2015 Satosh Saitou. All rights reserved.
戻る
日記::一覧展開
2016.06
2016.05
2015.12
2015.11
2015.08
2015.07
2015.06
2015.05
2015.04
2015.03
2015.02
2015.01
2014.12
2014.11
2014.10
ケース加工 (2014.10.11)
2014.09
RaspberryPi B+ (2014.09.06)
2014.08
2014.07
SDカード再び (2014.07.05)
2014.06
2014.05
2014.04
2014.03
2014.02
2014.01
2013.12
2013.11
2013.10
2013.09
ヒステリシス (2013.09.28)
2013.08
2013.07
2013.06
2013.05
2013.04
箱詰め終わる (2013.04.13)
2013.03
XBeeで接続する (2013.03.10)
2013.02
音と光 (2013.02.03)
2013.01
2012.12
外装に収める (2012.12.23)
2012.11
2012.10
MPL1151A1 (2012.10.07)
2012.09
2012.08
2012.07
2012.06
2012.05
DHT11 (2012.05.12)
2012.04
PHPでIPCを行う (2012.04.22)
DHCPを立てる (2012.04.14)
DNSを立てる (2012.04.08)
2012.03
IPv6を追加する (2012.03.17)
MTUを調整する (2012.03.11)
2012.02
2012.01
2011.12
2011.11
アサーション (2011.11.20)
XB24-BとXB24-ZB (2011.11.06)
2011.10
家電入れ替え (2011.10.23)
2011.09
湿度センサ (2011.09.25)
2011.08
2011.07
2011.06
2011.05
2011.04
2011.03
2011.02
2011.01
2010.12
PWMで赤外線 (2010.12.26)
2010.11
2010.10
2010.09
音を鳴らす (2010.09.12)
2010.08
2010.07
2010.06
2010.05
2010.04
2010.03
2010.02
2010.01
2009.12
2009.11
2009.10
2009.09
2009.08
2009.07
2009.06
2009.05
2009.03
2009.02
2009.01
2008.12
AVR HTTPサーバ (2008.12.20)
2008.11
2008.10
2008.09
2008.08
ICMP Echo応答 (2008.08.16)
MACフレーム (2008.08.03)
2008.07
2008.06
2008.05
SDカード再び (2008.05.11)
GPSロケーター (2008.05.04)
2008.04
2008.03
音が小さい (2008.03.30)
2008.02
1998.11
作成:2014.06.08
公開:2014.06.21

Valid XHTML 1.1

loading image reserved place