Calibre UK PICA93LV user manual Number if the adapter is to read from the slave

Page 16

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

Image 16
Contents Calibre Calibre CopyrightContents Configuring the Adapter IntroductionGeneral Introduction Packing ListInstalling the Adapter Typical PC ConnectionConnecting the Adapter to Your System Connector PinoutPower Supply Bus Capacitance LimitationsSoftware Utilities \C\CLIB\SPICA.LIB\C\CLIB\CPICA.LIB \C\CLIB\MPICA.LIBDOS Qbasic Library/Programs \B\SOURCE\I2CINC.BAS\B\SOURCE\PROMREAD.BAS \B\SOURCE\PROMWRIT.BASWindows LIB/DLL Functions Using the Utilities RoutinesInt ownaddress Int sclkInt slaveaddress Int i2cstatusInt setnack Calibre Int i2cdata Calibre Int i2cstatus Number if the adapter is to read from the slave Qbasic Routines Ownaddress%Sclk% I2cstatus%Slaveaddress% Setnack% I2cdata%See Appendix a for details status codes I2cstatus% Is to read from the slave Int baseaddress Libraries for Programming in Microsoft Windows EnvironmentsInt statuswait Int ErrCode Int wrDataSendaddress Address to be accessed via the I2C, e.g. A1H Int far *transferarray Int sendbytesint far *transferarrayInt bsent Int getbytesint far *transferarray Int nobytesreadSlave using the adapter Further Information Bit 4 The Bus Error BER Bit Appendix a Parallel I2C Communications Adapter Status CodesBit 7 MSB The Pending Interrupt Not PIN Bit Bit 6 Not UsedAppendix B Parallel I2C Communications Adapter Control Codes Question Get corrupted transfers why is this? Most Commonly Asked I2C QuestionsQuestion Do you have software to talk to my........? QuestionCode. Why? Please Email Your Query to