■ I2C通信で通信を行う場合の留意事項(PIC12Fシリーズの場合も含む)
PBP3でEEPROM以外のI2Cデバイス,例えばADCやセンサ等と通信する場合には,次の点にご留意ください.またPIC12Fシリーズで開発する場合には下記の点も併せてご注意ください.
Wモードでデータを書き込む場合にはI2CWrite命令を使用します.
I2CWRITE DataPin, ClockPin, Control, {Address,}[Value{,Value...}]{,Label}
Controlはスレーブアドレスを指定します.スレーブデバイスがEEPROM以外の場合にはAddressは省略します. 変数Valueは1つは必須で書き込むデータ値で通常は8ビット値なのでbyte型変数です. word型又はlong型変数を指定した場合,先頭バイトから送信され続いてローバイトが送信されます. 複数バイトの場合には省略可能な{value}をカンマで区切って追加できます. また,省略可能な{Label}を追加して記述した場合,スレーブデバイスからACKが返ってこない場合,このラベル先にジャンプします.
I2C通信のクロックスピードはPICの動作周波数が最大8MHzの場合には100KHzとなります. 動作周波数が20MHzの場合,400KHzとなります.8MHzより高速の動作周波数で100KHzの標準スピードでI2C通信をしたい場合には下記のDEFINEを追加してください.
DEFINE I2C_SLOW 1
Rモードでデータを読み込む場合には,I2CRead命令を使用します.
I2CREAD DataPin, ClockPin, Control,{Address,}[Var{,Var...}]{,Label}
引数はI2CWriteの場合と同様です.スレーブデバイスがEEPROM以外の場合には{Address}は省略します. 引数Controlがスレーブアドレスです.
PIC12Fシリーズで使う場合にはSCLピンと,SDAピンをDEFINEで指定します.(PIC12FシリーズのみのDEFINEです.他のシリーズではこのDEFINEは使いませんのでご注意ください.)
DEFINE I2C_SCL PORTA,1 DEFINE I2C_SDA PORTA,0
|