PIC:PIC 通信(2)I2C

2008-07-10 :  PIC・マイコン
                                              日記@BlogRanking
PIC:PIC間のI2C通信のコーディング例を示す。

Swordfish BASIC による Master の例。
---------------- <Swordfish BASIC> -- 18F -------------
I2C.Initialize // initialize I2C 100kHz

// send_I2C ----- 1Byte
I2C.Start ' issue start signal
I2C.WriteByte($D6) ' address of slave
I2C.WriteByte(aa) ' send data
I2C.Stop ' issue stop signal

// recv_I2C ----- 2Byte
I2C.Start
I2C.WriteByte($D7) ' address of slave
aa=I2C.ReadByte(I2C_ACKNOWLEDGE)
bb=I2C.ReadByte(I2C_NOT_ACKNOWLEDGE)
I2C.Stop
' ----------
これは、コンパイラ付属のサンプルと変わらないかも。


mikro BASIC による Slave の例。(受けた2バイトに1加えて返すもの)
(段付けのために、先頭に2B空白がある)
---------------- <mikro BASIC> ----- 16F --------------
Dim aa, bb, dummy As Byte
'
sub procedure I2Cslave_init
 SSPADD = $D6 ' Make our address D6 (7bit)
 SSPCON = $36 ' Set to I2C slave with 7-bit address
 TRISB.4 = 1 ' SCL (input)
 TRISB.1 = 1 ' SDA (input)
end sub
'
sub procedure WaitForPIR1SSPIFset ' Waits till interrupt flag is set
 do
 loop UNTIL TESTBIT(PIR1,SSPIF) = 1
end sub
'
sub function ReceiveByteI2C as BYTE ' Receives one byte via I2C
 SETBIT(SSPCON,CKP) ' Release clock
 WaitForPIR1SSPIFset
 RESULT = SSPBUF
 CLEARBIT(PIR1,SSPIF) ' Clear interrupt flag
end sub
'
sub procedure SendByteI2C(dim TByte as BYTE) ' Sends the TByte via I2C
 do
 loop UNTIL TESTBIT(SSPSTAT,BF) = 0 ' Wait for empty buffer
 NOP ' ???
 SSPBUF = TByte ' Put TByte in buffer
 NOP ' ???
 SETBIT(SSPCON,CKP) ' Release the clock. starts the transmission.
 WaitForPIR1SSPIFset
 CLEARBIT(PIR1,SSPIF) ' Clear interrupt flag
end sub
' ------------- Main -------------
I2Cslave_init
'
WaitForPIR1SSPIFset ' Wait for address match
dummy = SSPBUF ' Get rid of Address
aa = ReceiveByteI2C
bb = ReceiveByteI2C
Inc(aa)
Inc(bb)
SETBIT(SSPCON,CKP) ' Release clock
WaitForPIR1SSPIFset ' Wait for RepeatedStart
dummy = SSPBUF ' Get rid of Address
CLEARBIT(PIR1,SSPIF)
SendByteI2C(aa)
SendByteI2C(bb)
' ----------
mikro BASIC のフォーラムにあったものです。

お手数をおかけします。2クリック(投票を)お願いします ⇒ 日記@BlogRanking
関連記事
スポンサーサイト

コメントの投稿

管理者にだけ表示を許可する

おきてがみ/blogram
blogram投票ボタン



おきてがみ

最新記事
カレンダー
09 | 2017/10 | 11
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -
月別アーカイブ
カテゴリ
最新コメント
検索フォーム
リンク
プロフィール

<紙>

Author:<紙>
ようこそ。
「パソコンヲタクの雑記帳」
もろもろなことを綴っています。
パソコン ヲタクってねくら?
画像は kami でなく kani です。

カウンター(fc2、i2i) /Google Analytics


i2i(from 2010-08-24)
Total =
Today  =  
Yesterday=
アンチエイジング

Google Analytics
ブックマーク