|
PropWare
3.0.0.229
C++ objects and CMake build system for Parallax Propeller
|
Go to the documentation of this file.
11 OUTA &= (dev->scl_mask_inv | dev->sda_mask_inv);
12 DIRA |= (dev->scl_mask | dev->sda_mask);
18 OUTA &= dev->sda_mask_inv;
19 OUTA |= dev->scl_mask;
22 dirmask = (dev->scl_mask | dev->sda_mask);
25 dirmask = (dev->scl_mask_inv & dev->sda_mask);
32 OUTA &= bus->scl_mask_inv;
33 DIRA |= bus->scl_mask;
38 OUTA &= bus->sda_mask_inv;
39 DIRA |= bus->sda_mask;
45 OUTA |= bus->scl_mask;
46 DIRA |= bus->scl_mask;
49 OUTA &= bus->scl_mask_inv;
50 DIRA &= bus->scl_mask_inv;
56 DIRA &= bus->sda_mask_inv;
62 bus->scl_mask = (1 << sclPin);
63 bus->sda_mask = (1 << sdaPin);
64 bus->scl_mask_inv = ~(1 << sclPin);
65 bus->sda_mask_inv = ~(1 << sdaPin);
66 bus->drivescl = sclDrive;
82 #ifndef __PROPELLER_CMM__
89 #ifdef SPLIT_WRITE_DRIVE
91 static HUBTEXT int i2c_writeByteDrive(
i2c *bus,
int byte)
99 DIRA &= bus->sda_mask_inv;
101 DIRA |= bus->sda_mask;
102 OUTA |= bus->scl_mask;
103 DIRA |= bus->scl_mask;
106 }
while(--
count > 0);
107 DIRA &= bus->sda_mask_inv;
110 result = (
INA & bus->sda_mask);
115 static HUBTEXT int i2c_writeBytePullup(
i2c *bus,
int byte)
123 DIRA &= bus->sda_mask_inv;
125 DIRA |= bus->sda_mask;
127 DIRA &= bus->scl_mask_inv;
130 }
while(--
count > 0);
131 DIRA &= bus->sda_mask_inv;
133 DIRA &= bus->scl_mask_inv;
134 result = (
INA & bus->sda_mask);
135 DIRA |= bus->scl_mask;
143 return i2c_writeByteDrive(dev,
byte);
145 return i2c_writeBytePullup(dev,
byte);
159 DIRA &= bus->sda_mask_inv;
161 DIRA |= bus->sda_mask;
165 }
while(--
count > 0);
166 DIRA &= bus->sda_mask_inv;
169 result = (
INA & bus->sda_mask);
180 DIRA &= bus->sda_mask_inv;
185 byte |= (
INA & bus->sda_mask) ? 1 : 0;
186 while(!(
INA & bus->scl_mask));
188 OUTA &= bus->scl_mask_inv;
189 DIRA |= bus->scl_mask;
194 DIRA &= bus->sda_mask_inv;
196 DIRA |= bus->sda_mask;
HUBTEXT void i2c_start(i2c *bus)
Signal i2c start condition on bus.
#define OUTA
Use to set output pin states when corresponding DIRA bits are 1.
HUBTEXT int i2c_readByte(i2c *bus, int ackState)
Receive i2c byte and reply with ack state. Does not set start or stop. Drives SCL line if i2c device ...
HUBTEXT int i2c_readData(i2c *bus, unsigned char *data, int count)
Receive a block of i2c data. Does not send start or stop conditions.
#define INA
Use to read the pins when corresponding DIRA bits are 0.
HUBTEXT int i2c_writeByte(i2c *bus, int byte)
Send i2c byte and return acknowledgement from device. Does not set start or stop. Drives SCL line i...
HUBTEXT void i2c_stop(i2c *bus)
Send Signal i2c stop condition on bus.
HUBTEXT int i2c_writeData(i2c *bus, const unsigned char *data, int count)
Send a block of i2c data. Does not set start or stop.
HUBTEXT int i2c_poll(i2c *bus, int devaddr)
Send i2c start and addr byte. Looks for ACK (0) or NACK (1). This is useful for checking if a device ...
HUBTEXT i2c * i2c_open(i2c *bus, int sclPin, int sdaPin, int sclDrive)
Open an i2c device.
Provides simple i2c start, stop, read, and write functions. See simpletools library for additional I2...
#define DIRA
Use to set pins to input (0) or output (1).
#define HUBTEXT
HUBTEXT tells compiler to put code into HUB RAM section.