Turbobasic routines, Turbobasic, Routines – Calibre UK IC Communication Adapter ICA93LV User Manual

Page 11

Advertising
background image

Revision 1.7

Page 10 of 27

09/12/1999

#include <dos.h>

/* Optional, but recommended if your compiler */
/* supports DOS I/0 functions */

#include <i2c.h>

/* This Contains the I2C routines */

main
{

int base, controladdress;
base = 0x310;

/* Adapter’s base address = 0x310 (hex) */

controladdress = base + 1;

/* Control Register address */

sendstop(controladdress);
printf(“Stop has been transmitted\n”);

}/* This will write a Stop to the I

2

C Bus */

5.1.7.

I

2

C Restart and Address Sending Routine

Name:

restart(base, slv, setnack)

Usage:

restart(base, slv, setnack)

Function:

Procedure to send a Restart and the slave address of device that is to be
communicated with, without a Stop having been sent at the end of 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 have their address sent as a Restart to proceed with the
read operation.

Parameters are:

int base

the base address of the I

2

C Communications Adapter set by links on the circuit

board.

int slv

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 I

2

C communications Adapter transmits an Acknowledge

down the I

2

C 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 = 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 set = 0.

Value Returned:none.

I

2

C status on exit from routine:

The status of the I

2

C/ the Communications Adapter will be either 0x00 - bus the

busy and

unread data in the data register or 0x80 - bus busy and no

unread data in the data register when a Restart and Slave Address have been
successfully transmitted (see Appendix A for details of status codes).

Example Usage:

(see also sample programs)

#include <stdio.h>
#include <dos.h>

/* Optional, but recommended if your compiler */
/* supports DOS I/O functions */

#include <12c.h>

/* This contains the I

2

C functions */

main
{

int base, slv, setnack;
base = 0x310;

/* Adapter’s base address = 0x310 (hex) */

slv = 0xa1;

/* I

2

C Address of slave, this is a typical read */

/* address for an I

2

C static RAM or EEPROM */

setnack = 0;

/* Enable Acknowledge (see parameter descriptions)*/

restart(base, slv, setnack);

}

5.2.

TurboBASIC Routines

5.2.1.

I

2

C Setup/Initialisation Routines

Advertising