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

Reply via email to