#use i2c
構文： #user i2c (options)
エレメント: options はカンマによってセパレートされます。
MASTER
マスター・モードにセット
MULTI_MASTERSLAVE
SCL=pin
SDA=pin
ADDRESS=nn
FAST
FAST=nnnnnn
SLOW
RESTART_WDT
FORCE_HW
FORCE_SW
NOFLOAT_HIGH
SMBUS
STREAM=id

NO_STRETCH
MASK=nn
I2C1
I2C2
NOINIT

マルチ・マスタ・モードをセット
スレーブ・モードをセット
SCL ピンを指定(ピンはビット・アドレス)
SDA ピンを指定
スレーブ・モードのアドレスを指定
高速 I2C 仕様を使用
速度を nnnnnn hz にセット
低速 I2C 仕様を使用
I2C_READ 中に WDT をリスタート
ハードウェア I2C を使用
ソフトウエア I2C を使用
信号がフロート・ハイになることを許可しません。信号はローからハイに駆動使用されているバスは I2C バスではありませんが、類似したものです。
この I2C ポートでストリーム識別子を関連付けます。その識別子は i2C_read 又は、i2c_write のような関数で使用されます。
クロック・ストレッチングを許可しません。
マスクをサポートしたパーツのためのアドレス・マスクをセット
SCL= と SDA=の代わりにピンを最初のモジュールにセット
SCL= と SDA=の代わりにピンを 2 番目のモジュールにセット
I2C ペリフェラルの初期化は実行されません。実行時にペリフェラルを初期化するには
I2C_INIT( )を使用して下さい。

ある種のチップのみが下記を使用出来ます:
DATA_HOLDI2C_READ がデータ・バイト(スレーブのみ)を呼び出す迄 ACK は送られません(NoACK)。
I2C_READ がアドレス・バイト(スレーブのみ)を呼び出す迄 ACK は送られません(NoADDRESS_HOLD
ACK)。
SDA_HOLD
SDA 上の最少 300ns ホールドタイムの分 SCL は低くなります。
結合された SSP ペリフェラルの代わりに個別の I2C ペリフェラルを備えた PIC18 デバイスでは、次のことが可能です:
CLOCK_SOURCE=x I2C ペリフェラルのクロック・ソースを指定するために使用されます。オプションは FOSC/4、FOSC、HFINTOSC、又は、HFINT、MFINTOSC、又は、MFINT、REFCLK、又は 、 REF 、 TIMER0 、 又 は、 TMR0 、 TIMER2 、 又 は、 TMR2 、 TIMER4 、 又 は、
TMR4、TIMER6、又は、TMR6、又は、SMT1 です。指定しない場合、デフォルトはFOSC/4 になります。クロックとしてペリフェラルが選択されている場合、例えば TMR2、そのペリフェラルを設定し目的の I2C クロックレートを達成する必要があります。
I2C cloock divisor[クロック・デバイザ]を指定するために使用され、4、又は、5 になりま
CLOCK_DIVISOR=x
す。
ADDRESS_BITS=xアドレス・ビット数の指定に使用され、7、又は、10 に設定できます。指定しない場合、デフォルトは 7 です。
ADDRESS1=x
周辺機器が応答するスレーブモード・アドレスを指定するために使用されます。アドレ
ADDRESS2=x
ス・ビットとアドレス・マスクの数に応じて、これらのデバイスは応答する 4、2、又は、1 個
ADDRESS3=xのア ドレスを持つことができます。これによ り個々のア ドレスをセットできます。
ADDRESS4=x
ADDRESS1=x は ADDRESS=xx と同じです。7bit アドレス・モードにセットすると、4、又は、2 個のアドレスを持つことができます。マスクが指定されていない場合は 4。 1、又は、2 のマスクが指定されている場合は 2。10bit アドレス・モードにセットすると、2、又は、1 個のアドレスを持つことができます。マスクが指定されていない場合は 2、1 つのマスクが指定されている場合は 1。1 個以上のアドレスを使用する場合、指定されていな
い ア ド レ ス は ADDRESS1 の 値 に 割 り 当 て ら れ る た め 、 常 に ADDRESS1 、ADDRESS2 等で開始します。
MASK1=x
アドレス・ビットの数に応じて、0、1、又は、2 個のアドレス・マスクのスレーブモード・アドレ
MASK2=x
ス・マスクを指定するために使用されます。7bit アドレス・モードにセットすると、0、又は、2個のアドレス・マスクを使用できます； 単に MASK1 に値を割り当てることは I2C ペリフェ
ラルが 2 つのアドレスと 2 つのアドレス・マスクにセットされることを意味します。10bit アドレ

SDA_HOLD=x

ス・モードにセットすると、0、又は、1 個のアドレス・マスクを使用できます； 単に MASK1に値を割り当てることはペリフェラルは 1 つのアドレスと 1 つのアドレス・マスクにセットされることを意味します。1 つ以上のアドレス・マスクを使用する場合は、常に MASK1 をセットします。何故なら、7bit アドレス・モードが使用され、MASK1 のみが指定されている場合、両方のアドレス・マスクが MASK1 の値に設定されるためです。7bit アドレス・モードを使用する場合、MASK1 は ADDRESS1 のマスクであり MASK2 は ADDRESS2 のマスクです。
SCL の立ち下がりエッジ後の SDA の保持時間をセットするために使用され、30、100、又は、300ns にセットできます。SDA_HOLD のみが指定されている場合、保持時間は 300ns にセットされ、指定されていない場合、保持時間は 100ns にセットされます。

CCS は、ハードウェアベースの I2CTM およびソフトウェアベースのマスターI2CTM デバイスのサポートを提供します。
(ハードウェアベースの I2C モジュールの詳細についてはターゲットデバイスのデータシートを参照してください: 全ての PIC が I2CTM をサポートしているわけではありません)
I2C ライブラリには I2C バスを実装する関数が含まれています。#USE I2C は他の USE I2C が検出されるまで I2C_START、I2C_STOP、I2C_READ、I2C_WRITE と I2C_POLL 関数に対して有効です。SDA と SCL にハードウェア・ピンが指定されている場合、force_swが指定されていない限りハードウェア機能が生成されます。それ以外の場合、ソフトウェア機能が生成されます。SLAVE モードは内蔵 SSPでのみ使用する必要があります。このディレクティブで作成された関数はマルチプル・コンパイレーション・ユニットを使用するときにエクスポートされます。正しい関数にアクセスするには、ストリーム識別子を使用します。
[PCD] 一部のデバイスはデフォルトのピンの代わりにハードウェア I2C ペリフェラルで使用できる I2C ピンの代替セットがあります。デバイスに代替 I2C ピンがある場合、使用するペアを選択するために次のコンフィギュレーション・ヒューズを使用できます:ALTI2Cx と NOALTI2Cx。xは I2C ペリフェラル(1-3)です。NOALTI2Cx コンフィギュレーション・ヒューズをセッティングするとデバイスはペリフェラルのために ASCLx とASDAx ピンを使用します。
さらに、これらのコンフィギュレーション・ヒューズは#use i2c()が各 I2C ペリフェラルのハードウェア I2C ピンを決定します。デフォルトでは
NOALTI2Cx コンフィギュレーション・ヒューズがセットされます。代替の I2C ハードウェアピンを使用するには、その I2C ペリフェラルのためにALTI2Cx コンフィギュレーション・ヒューズをセットする必要があります。
サンプル: #use i2c(master, sda=PIN_B0, scl=PIN_B1 )#use i2c(slave, sda=PIN_C4, scl=PIN_C3 address=0xa0, FORCE_HW )#use I2C(master, scl=PIN_B0, sda=PIN_B1, fast=450000) //ターゲット速度を450KBSPにセット
サンプル・ファイル： ex_extee.c with 16c74.h
参照: i2c_poll, i2c_speed, i2c_start, i2c_stop, i2c_slaveaddr, i2c_isr_state, i2c_write, i2c_read, I2C 概要