From b98520cf39cc8c6e3493152cd925f02ca8897499 Mon Sep 17 00:00:00 2001 From: Gerardo Marx Date: Thu, 26 Sep 2024 03:53:53 +0000 Subject: [PATCH] adc example --- adc | Bin 0 -> 11376 bytes main.c | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100755 adc create mode 100644 main.c diff --git a/adc b/adc new file mode 100755 index 0000000000000000000000000000000000000000..0ba2b59430e4de2487c41ad6c2d02ccff6de5af9 GIT binary patch literal 11376 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 mV9q%XO +#include +#include +#include + +// 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; +} \ No newline at end of file