> > However, Mr. Hermans, who clearly knows what he is talking about, stated > "I've proven that /dev/mem + mmap() can work for reading 200ksps for 7 > channel simultaneously." > It's reasonable to assume that he would not have included the "7 channel > simultaneously" part unless it was somehow relevant to the performance he > observed. >
You're not understanding correctly . . . the ADC module is rated for 200ksps only. Not 1M, not 2M, 200ksps. On Mon, Jun 20, 2016 at 4:40 PM, <[email protected]> wrote: > I'm well aware of the analog mux and fully understand that if N channels > are being sampled, the maximum sample rate for each channel is reduced by a > factor of N. > > However, Mr. Hermans, who clearly knows what he is talking about, stated > "I've proven that /dev/mem + mmap() can work for reading 200ksps for 7 > channel simultaneously." > It's reasonable to assume that he would not have included the "7 channel > simultaneously" part unless it was somehow relevant to the performance he > observed. > > And, if the ADC is actually capable of doing conversions at a 1.6 MHz > rate, then it could sample all 8 channels at 200KSPS each, and maybe that's > what Mr. Hermans was observing. > > > On Monday, June 20, 2016 at 3:39:09 PM UTC-7, Wulf Man wrote: >> >> um no the 7 channels go into a analog mux and you can only have one >> selected input at a time. >> >> On 6/20/2016 3:35 PM, [email protected] wrote: >> >> Wow, I think that /dev/mem + mmap() is the easy solution! Many thanks. >> >> But can you please confirm that by "200ksps for 7 channel simultaneously" >> you mean that each of the 7 channels is being sampled 200k times per >> second. If so, that's 1.4M captures per second, enough for my project. >> >> > But CPU usage is so high, that you're not going to be able to do a >> whole lot more in addition to reading the ADC in this fashion. >> >> This is essentially a lab experiment. The program only needs to run >> correctly once (though it will take many executions to get all the external >> factors right). On each run, the BBB has no other tasks to perform. It >> won't start writing the results to a file until after the capture is >> complete. If CPU usage during the capture is 95%, that's fine. If it's >> 105%, I'll slow the sample rate a bit to avoid losing samples. But if it's >> 250%, then I'm in trouble. >> >> If not missing samples requires running in single-user mode with no >> networking and only a serial console, that's IMO a minor nuisance compared >> to learning about PRU, etc. and debugging a much more complex program. >> >> On Monday, June 20, 2016 at 2:53:47 PM UTC-7, William Hermans wrote: >>> >>> The ADC module is a 200ksps SAR module . . .You're only going to be able >>> to sample 200k samples per second . . . >>> >>> Additionally you can use: >>> >>> >>> 1. PRUs ( Programmable Real-time Units ) >>> 2. IIO ( industrial IO ) >>> 3. /dev/mem/ + mmap() >>> >>> >>> To read 200ksps. Personally, I've proven that /dev/mem + mmap() can work >>> for reading 200ksps for 7 channel simultaneously. But CPU usage is so high, >>> that you're not going ot be able to do a whole lot more in addition to >>> reading the ADC in this fashion. Hence, the PRU are best used, as this >>> offers hardware offload( very little CPU load needed - and only when >>> reading values out ). >>> >>> On Mon, Jun 20, 2016 at 12:00 PM, Stewart <[email protected]> wrote: >>> >>>> I'm looking to write a simple app for BBB. When started from the >>>> command line, it would set up the ADC in continuous mode and read ~1 M >>>> samples from e.g. AN0 into memory. After the capture is complete, it would >>>> write the data to a file and exit. >>>> >>>> Ideally, it would run at the hardware limit of 1.6 MSPS (15 cycles of >>>> 24 MHz adc_clk per sample). If that's not practical, 800 KSPS or better >>>> would be acceptable. >>>> >>>> What is an easy way to do this? Most Beaglebone ADC examples sample at >>>> kilohertz rates or slower. >>>> >>>> This guide: >>>> http://processors.wiki.ti.com/index.php/Linux_Core_ADC_User%27s_Guide >>>> speaks of 200 KSPS. What is the limitation here? >>>> >>>> I've seen various suggestions to use the PRU, but don't understand >>>> why. I would think that since DMA would be required anyway, there should >>>> be no requirement to otherwise access the hardware with tight timing. If >>>> PRU is indeed necessary, is there a suitable example or tutorial? (None of >>>> the libpruio built-in examples deal with rapid sampling or large amounts of >>>> data.) >>>> >>>> Any other ideas for a simple way to capture data fast will be >>>> gratefully appreciated. >>>> >>>> Thanks. >>>> >>>> -- >>>> 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]. >>>> To view this discussion on the web visit >>>> <https://groups.google.com/d/msgid/beagleboard/aeaf9852-fb4c-4fd1-9594-8aad0ad5fd3c%40googlegroups.com?utm_medium=email&utm_source=footer> >>>> https://groups.google.com/d/ >>>> msgid/beagleboard/aeaf9852-fb4c-4fd1-9594-8aad0ad5fd3c% >>>> 40googlegroups.com. >>>> For more options, visit https://groups.google.com/d/optout. >>>> >>> >>> -- >> 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]. >> To view this discussion on the web visit >> <https://groups.google.com/d/msgid/beagleboard/2ff2e93c-ca65-46ec-a755-5c7f830da2b1%40googlegroups.com?utm_medium=email&utm_source=footer> >> https://groups.google.com/d/msgid/beagleboard/2ff2e93c-ca65-46ec-a755-5c7f830da2b1%40googlegroups.com >> . >> For more options, visit https://groups.google.com/d/optout. >> >> >> -- > 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]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/beagleboard/c2736249-fdeb-4673-80c6-4182ba741ca3%40googlegroups.com > <https://groups.google.com/d/msgid/beagleboard/c2736249-fdeb-4673-80c6-4182ba741ca3%40googlegroups.com?utm_medium=email&utm_source=footer> > . > > For more options, visit https://groups.google.com/d/optout. > -- 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]. To view this discussion on the web visit https://groups.google.com/d/msgid/beagleboard/CALHSORr2U90ryAZ65QMcxOAuuPYO0bS-G8QhtO6CFQuepf4eBA%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
