From: "Andrew Armstrong" <[EMAIL PROTECTED]>
> I am trying to compile a pretty simple program that
> supposedly will
> flash some of the EVM's LEDS (Basic I2C interfacing).
>
> When I try to compile this on either the EMV or via the
> crosscompiler on
> my host machine I get a several screenfuls of complaints.
The complaints come from <linux/i2c.h>, probably the correct user library
uses other headers. You can skip any user library by accessing the device
directly; try the following code:
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/ioctl.h>
#include <errno.h>
#include <signal.h>
#define I2C_DEVICE "/dev/i2c/0"
#define I2C_DEV_ADDR 0x38
#define I2C_SLAVE 0x0703
int main( int argc, char *argv[])
{
int i2c_fd;
unsigned char val = 0xFE;
int ret;
struct timespec req = {
.tv_sec = 0,
.tv_nsec = 100000000,
};
if( (i2c_fd = open( I2C_DEVICE, O_RDWR)) < 0)
{
printf( "Unable to open the i2c port!\n");
return 100;
}
if( ioctl( i2c_fd, I2C_SLAVE, I2C_DEV_ADDR) == -1)
{
close( i2c_fd);
printf( "Unable to setup the i2c port!\n");
return 101;
}
do
{
val <<= 1;
val |= 0x01;
if( val == 0xFF)
{
val = 0xFE;
}
write( i2c_fd, &val, 1);
} while( !nanosleep( &req, NULL));
close( i2c_fd);
printf( "End.\n");
return 0;
}
Cheers, Lorenzo
_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source