Мне нужно считывать все 7 аналоговых контактов в BBB каждые 5 миллисекунд. Я делаю это со следующим кодом C:
void main(){
char value_str[7];
long int value_int = 0;
FILE* f0 = fopen("/sys/bus/iio/devices/iio:device0/in_voltage0_raw", "r");
while(1){
fread(&value_str, 6, 6, f0);
value_int = strtol(value_str,NULL,0);
printf("0 %li\n", value_int);
fflush(stdout);
usleep(5000);
rewind(f0);
}
Однако загрузка процессора становится очень высокой (20%). Есть ли способ по-другому читать аналоговые входы, чтобы он не использовал столько ЦП? Кто-то предложил "DMA", но я совершенно потерялся в этом отношении...
Любая помощь будет оценена.