BASIC stamp manual v2.2

I2CIN – BASIC Stamp Command Reference
Page 222 BASIC Stamp Syntax and Reference Manual 2.2 www.parallax.com
S
P
S
T
A
R
T
SlaveID
A
C
K
Address
A
C
K
Data
A
C
K
S
T
O
P
B
U
S
F
R
E
E
a
6
a
5
a
4
a
3
a
2
a
1
a
0
rw a
6
a
5
a
4
a
3
a
2
a
1
a
0
a
7
d
6
d
5
d
4
d
3
d
2
d
1
d
0
d
7
NOTES:
S = Start Condition
P = Stop Condition
a = id or address bit
d = data bit (transmitted by the BASIC Stamp or the I C device)
ACK = Acknowledge signal. (Most acknowledge signals are generated by the I C device)
2
2
Figure 5.10: I
2
C Transmission
Format.
Since the I2CIN command is intended for input only, it actually overrides
the "R/W" bit (bit 0) in the SlaveID argument. This is done so that it can
use the I
2
C protocol's "Combined Format" for receiving data. Put simply,
this means a command such as: I2CIN 0, $A1, 10, [Result] actually
transmits $A0, then 10, then $A1 and then it reads the data back from the
device. The $A0 means "write", the 10 is the address to write to, and
finally, the $A1 indicates a change of direction; to "read" the location,
instead. Even though the I2CIN command really doesn't care what the
value of the SlaveID's LSB is, it is suggested that you still set it
appropriately for clarity.
Also note that the I2CIN command does not support multiple I
2
C masters
and the BASIC Stamp cannot operate as an I
2
C slave device.
Demo Program (I2C.bsp)
' I2C.bsp
' This program demonstrates writing and reading every location in a 24LC16B
' EEPROM using the BS2p/BS2pe's I2C commands. Connect the BS2p, BS2pe, or
' BS2px to the 24LC16B DIP EEPROM as shown in the diagram in the I2CIN or
' I2COUT command description.
' {$STAMP BS2p}
' {$PBASIC 2.5}
#IF ($STAMP < BS2P) #THEN
#ERROR "Program requires BS2p, BS2pe, or BS2px."
#ENDIF
SDA PIN 0 ' I2C SDA pin
SCL PIN SDA + 1
S
PECIAL NOTE ABOUT I2CIN
INPLIMENTATION
.
NOTE: This example program can be
used with the BS2p, BS2pe, and
BS2px. This program uses conditional
compilation techniques; see Chapter 3
for more information.