CALIBRE
4.3.7.I2C Restart and Address Sending Routine
Function definition: | restart%(slaveaddress as integer setnack as integer) |
Usage: | i2cstatus% = restart(slaveaddress%, setnack%) |
Function: | procedure to send Restart and slave address of device which is to be |
| communicated with, without a Stop having been sent at the end of the last |
| transmission/reception. This routine is particularly useful for reading |
| memories which must first have a data pointer written to them to select where |
| the read is to occur from, and must then have their read address sent with a |
| Restart to proceed with the read operation. |
Parameters are: | slaveaddress% |
| The slave address of the device which is to be communicated with. This will |
| be an even number if the 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. |
| 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: | 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 |
| &H00 (bus busy data sent and acknowledged), or &H08 (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 &H8000 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.BAS, this value may be altered to suit your system. |
I2C status on exit | &H00 bus busy and address sent and acknowledged |
| &H08 bus busy and address sent but not acknowledged |
| &H80 bus busy and address not sent. |
| (see Appendix A for details of Status codes). |
Example Usage: | (see also sample programs) |
Sub main |
|
slaveaddress% = &HA1 | ' I2C Address, this is a typical slave read address |
setnack% = 0 | ' Enable Acknowledge (see parameter descriptions) |
i2cstatus% = restart(slaveaddress%, setnack%) | |
trash% = readbyte(setnack%) | ' read the address from the adapter and discard |
End Sub |
|
Issue 1.3 | Page 19 |
22/07/99