マイクロテクニカ製品サポートFAQ
[一覧] [1つ前に戻る] [マニュアル及び各種ダウンロードページへ]
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
オリジナル - FAQみたいです - 猫でいいです