EVM LED Blinking.c

From eLinux.org
Revision as of 22:29, 21 May 2007 by Ekiller200 (Talk | contribs)

Jump to: navigation, search

/********************************************************************** * EVM_LED_BLINKING.C * * Simple program to blink the LEDs on the DaVinci * EVM using the the LED port expander PCF8574A at I2C Slave Address 0x38. * I2C Support and I2C device interface must be turned on in the kernel. * **************************************************************************/ #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 i2c_fd; int state = 0; unsigned char val = 0x00; 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"); exit(1); } if(ioctl(i2c_fd, I2C_SLAVE, I2C_DEV_ADDR)== -1) { close( i2c_fd ); printf("Unable to setup the i2c port!\n"); exit(1); } 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; }