#include #include #include #include #include #include static __u8 mode = 0x03; static int transfer(int fd_spi) { __u8 analogvalue; int ret; ret = read(fd_spi, &analogvalue, sizeof(analogvalue)); if (ret<=0) { fprintf(stderr,"can't read analogvalue\n"); return -1; } else printf("%d\n", analogvalue); return 0; } int main( int argc, char **arv, char **envp ) { int fd_spi, ret; struct timespec sleeptime; fd_spi = open("/dev/spidev0.0", O_RDWR); if (fd_spi<0) { fprintf(stderr,"can't open /dev/spidev0.0\n"); return -1; } ret = ioctl(fd_spi, SPI_IOC_RD_MODE, &mode); if (ret==-1) { fprintf(stderr,"can't set mode %d\n", mode); return -1; } ret = ioctl(fd_spi, SPI_IOC_WR_MODE, &mode); if (ret==-1) { fprintf(stderr,"can't set mode %d\n", mode); return -1; } ret = ioctl(fd_spi, SPI_IOC_RD_MAX_SPEED_HZ, 10000); if (ret==-1) { fprintf(stderr,"can't set rd-speed\n"); return -1; } sleeptime.tv_sec = 0; sleeptime.tv_nsec= 250000000; while( 1 ) { transfer( fd_spi ); clock_nanosleep(CLOCK_MONOTONIC, 0,&sleeptime,NULL); } return 0; }