You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
1.2 KiB
C
59 lines
1.2 KiB
C
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <unistd.h>
|
|
#include <fcntl.h>
|
|
|
|
// Path to the raw adc's values:
|
|
#define ADC_PATH "/sys/bus/iio/devices/iio:device0/in_voltage%d_raw"
|
|
|
|
// Prototype Functions:
|
|
|
|
// 1 Function to read ADC value from a given channel (0 to 6)
|
|
int ReadADC(int channel);
|
|
|
|
|
|
// main:
|
|
int main( ) {
|
|
printf("Starting ADC program\n");
|
|
|
|
int channel = 0; // select the channel 0 - 6
|
|
int adcVal = ReadADC(channel);
|
|
|
|
if (adcVal >= 0) {
|
|
printf("ADC Channel %d raw value: %d\n", channel, adcVal);
|
|
} else {
|
|
printf("Failed to read ADC value\n");
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
int ReadADC(int channel) {
|
|
char filePath[64];
|
|
char buffer[16];
|
|
int fd, adcValue;
|
|
|
|
// file path to adc
|
|
snprintf(filePath, sizeof(filePath), ADC_PATH, channel);
|
|
//printf(filePath);
|
|
|
|
// open the ADC file
|
|
fd = open(filePath, O_RDONLY);
|
|
if (fd < 0){
|
|
perror("Unable to open ADC Path");
|
|
return -1;
|
|
}
|
|
|
|
// read ADC value
|
|
if (read(fd, buffer, sizeof(buffer)) < 0) {
|
|
perror("Unable to read ADC value");
|
|
close(fd);
|
|
return -1;
|
|
}
|
|
|
|
// converting string to int
|
|
adcValue = atoi(buffer);
|
|
close(fd);
|
|
|
|
return adcValue;
|
|
} |