From: <[email protected]>
Reply-To: <[email protected]>
Date: Wednesday, February 19, 2014 at 5:53 AM
To: <[email protected]>
Subject: [beagleboard] Re: Help: "Fast" ADC sampling on the beagleboneblack
> Hi we fi
>
> So how did it end up for you? I am having similar problem, would you care
> posting your solution?
>
> Regards
> Hernando
>
> On Monday, November 25, 2013 12:19:19 PM UTC+1, fe wi wrote:
>> Hi!
>>
>> I am currently using my Beaglebone Black with the following KERNEL:
>> 3.8.13xenomai-bone28.1 (including the ti_am335_adc driver).
>>
>> Part of my Project is reading signals from an ADC and then processing them. I
>> would love to use the onboard ADC for that, but I require to sample 5
>> channels @ 2 kHz each. (I have installed the Xenomai Kernel mainly for
>> processing purposes but it might be useful for sampling as well ;) )
>>
>> My first simplistic try was to just read the voltage values from the files
>> provided in "/sys/bus/iio/devices/iio:device0/in_voltage0_raw" .
>> This works fine so far, but is just not fast enough. ( I get about 500 sps on
>> ONE channel)
>>
>> Here is that part of my CODE:
>> for(;;) {
>>
>> rt_task_wait_period(NULL); // Xenomai
>>
>> now=rt_timer_read(); // Xenomai
>>
>> // Work for the current period //
>>
>> FILE *read = fopen (
>> "/sys/bus/iio/devices/iio:device0/in_voltage0_raw", "r");
>>
>>
>> fscanf (read, "%f", &value);
>> float voltage = value * (1800.0/4095.0);
>> fprintf (write, "Value: %f Voltage: %f\n", value, voltage);
>>
>> printf("Time since last turn: %ld,%06ld ms Value:%f
>> Voltage: %f\n",
>> (long)(now - previous) / 1000000,
>> (long)(now - previous) % 1000000, value, voltage);
>> previous = now;
>>
>> fclose ( read );
>> fclose ( write );
>>
>> }
>> (I know that leaving out the printf part and the voltage calculation
>> increases performance, but still not enough)
>>
>> Is there any other way reading the values, directly from the memory location
>> or a register? Perhaps using mmap?
>> Or is there a Xenomai function for reading from an iio device? (I couldn't
>> find any...)
>>
>> I have seen two interesting links about continuous sampling:
>> -
>> http://beagleboard-gsoc13.blogspot.de/2013/07/sampling-analogue-signals-using
>> -adc-on.html
Read the latest updates:
http://beagleboard-gsoc13.blogspot.com/2013/09/success-at-last.html
Regards,
John
>> - http://processors.wiki.ti.com/index.php/AM335x_ADC_Driver%27s_Guide
>>
>> But i can't get the generic_buffer.c from those sites to work correctly (as
>> the trigger handling seems to be outdated), plus i might need to know a kind
>> of "oneshot" read function anyway to mux the 5 channels i want to sample. Or
>> is it possible to continuous sample multiple channels? The Driver guide says
>> 'no', but the Author from the other link seems to have worked a lot on the
>> adc Driver since.
>>
>> I am currently trying to figure out the code in generic_buffer.c and the used
>> iio_utils.h and the adc driver, but it is a lot of code and drivers are not
>> my strong suit.
>> So far I think I need to setup the ADC to my needs (somewhat similar to
>> generic_buffer.c) and then read from it somehow, but I am really struggling
>> with that!
>>
>>
>> So now you know the state of my project :) but to sum it up:
>>
>> Are my demands (5 channels @ 2 kHz) even possible using only the on-board
>> ADC?
>> And if yes how do i read the values fast enough? Any tips?
>>
>> Thank you in advance!!
>>
>>
>
> --
> For more options, visit http://beagleboard.org/discuss
> ---
> You received this message because you are subscribed to the Google Groups
> "BeagleBoard" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/groups/opt_out.
--
For more options, visit http://beagleboard.org/discuss
---
You received this message because you are subscribed to the Google Groups
"BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.