CALIBRE
Parameters are: | int slaveaddress |
| The slave address of the device which is to be communicated with. This will |
| be an even number if the adapter is to write to the slave, add 1 to get an odd |
| number if the adapter is to read from the slave. |
int setnack
This controls whether the Parallel I2C Communications Adapter transmits an Acknowledge down the I2C Bus on reception of a byte. The last byte received during a transfer must not be acknowledged, in all other cases acknowledge must be enabled, If setnack = 0 then acknowledge is enabled, if setnack = 1 then acknowledge is disabled. Therefore, if a read (odd numbered) address is being sent AND only 1 byte is to be read, setnack should be set to = 1; in all other cases it must be clear = 0.
Value Returned: | int i2cstatus |
|
| The value returned depends on whether the Start and address were sent. | |
| If the start and address have been sent then the status returned will either be | |
| 0x00 (bus busy data sent and acknowledged), or 0x08 (bus busy, data sent | |
| but not acknowledged). | |
| If the start or the address cannot be sent (either the bus remained busy or the | |
| address did not get sent) then the last status read IORed with 0x8000 will be | |
| returned. |
|
| The function will read the status a number of times before returning an error | |
| condition - this number is defined by the MAXNUMBEROFGOES constant | |
| defined in I2CINC.C, this value may be altered to suit your system. | |
I2C status on exit | 0x00 bus busy and address sent and acknowledged | |
| 0x08 bus busy and address sent but not acknowledged | |
| 0x80 bus busy and address not sent. | |
| (see Appendix A for details of status codes). | |
Example Usage: | (see also sample programs) | |
main() |
|
|
{ |
|
|
int slaveaddress, setnack, trash; | ||
slaveaddress = 0xa1; | /* I2C Address of slave, this is a typical read */ | |
|
| /* address for an I2C static RAM or EEPROM */ |
setnack = 0; |
| /* Enable Acknowledge (see parameter descriptions)*/ |
i2cstatus = restart(slaveaddress, setnack); | ||
trash = readbyte(setnack); | /* read the address from the adapter and discard*/ | |
} |
|
|
Issue 1.3 | Page 13 |
22/07/99