1
0
mirror of https://github.com/elua/elua.git synced 2025-01-08 20:56:17 +08:00

9 Commits

Author SHA1 Message Date
James Snyder
851f7c16ba ADC for MBED/LPC1768.
Note: MBED P15->P20 == adc dev ids 0->5
2010-07-12 20:56:54 +00:00
James Snyder
bd2e819368 ADC Updated
- adc_wait_samples now returns the actual number of samples available at the
  time it returns.  this simplifies a pattern where one would wait on samples
  if blocking and then subsequently check the number of available samples.
- adc.insertsamples(id, table, idx, count) function now available to take
  samples and insert them into a table.  this is slightly slower than
  assignment for single values in a table, but can avoid having to use
  getsamples (returning new tables) for certain situations
  idx: starting index in table where values will be inserted
  count: number of samples to get from channel id
2009-04-22 15:36:50 +00:00
James Snyder
709399a324 System buffer-free version of ADC should now work. Doing so, saves about 1kb
of flash space.

NOTE: getsamples function is disabled since this is dependant on having a
buffer to get more than one sample.

Side note: single sampling without the buffer is faster by about 5-10
us/channel.  It should be possible to sidestep the buffer in certain
situations for buffer enabled mode and get a similar benefit at the cost of
some additional complexity.
2009-03-25 22:56:39 +00:00
James Snyder
94438ff64b ADC for STM32 + Misc Fixes & Build Adjustments
- ADC adjusted to work with sequenced acquisition setups.  It should now
  accomodate both sequenced and non-sequenced approaches on the backend.
  A few more adjustments should be made to handle multiple sequencers
  but right now neither LM3S or STM32 platforms use more than one sequencer.

- Added adcpoll.lua to demonstrate a simple approach for using clocked
  acquisition and displaying results as they become available.

- ADC now works for STM32 (all 16 channels!). This should receive more
  extensive testing, but everything should be working at this stage.

- the build system now pays attention to changes in header files meaning that
  if any headers change or if the romfs changes (since it is generated as a
  header) these changes will get recompiled without having to do a clean.
2009-03-21 19:59:49 +00:00
James Snyder
554dd7126b ADC can now run in freerunning mode (keep collecting samples after ring buffer
is full). Clock and sampling frequency have been moved to a separate function
from burst.  There is now one function to initiate sampling called sample
which takes a channel and count.  setclock takes a channel, clock_id, and
frequency.  Adjustments should be made to make channel groupings somewhat
cleaner, but this is functional.

Suggestions are welcome for simplification :-)

I'll try and make some doc updates in the coming day or so to reflect
finalized adjustments.
2009-02-24 07:58:10 +00:00
Bogdan Marinescu
f253c9003f - fixed a small AVR32 syntax error
- added newlines to the end of some files to avoid GCC errors
2009-02-17 18:57:05 +00:00
James Snyder
b3f6110150 ADC bugfixes, and change to sample and burst being non-blocking. Samples are
acquired with getsamples.
2009-02-16 23:01:32 +00:00
James Snyder
db423ba662 ADC fixes and temporary workarounds for handling buffer resizing. 2009-02-16 07:37:28 +00:00
James Snyder
fbe307e12a Fairly large number of changes in here to make adc work with lua's provided
buf.c.

The smoothing buffer is still kept separate from the main buffering system,
but as samples come in via interrupt, they are placed into a "standard" elua
buf.  The size of this buf is configured according to whether one is grabbing
a bunch of samples rapidly (burst), or singly in order to accommodate the
expected number of incoming samples.  If smoothing is enabled, incoming
samples are claimed until the smoothing buffer is full, and then remaining
samples are left in the main buffer until they are collected.  This means that
whether one is collecting single samples or samples at burst rate, and
smoothing is enabled, the filter will only be providing samples that have
enough history.

Added a function to manually flush both smoothing and main buffers.
This would be useful if you know your state has changed and you only want
fresh samples that are going to be collected after a flush.

Also, a lot of functionality moved into elua_adc.c and common.c
(boundaries for what belongs where, might be evaluated), reducing the number
of platform.c specific functions dramatically.

Basic functionality seems to be working, but some more testing should be done.

Also, given that there's now a dynamic buffer behind everything, a shift in
the way sampling is handled could be done:
sample and burst functions could be made to be non-blocking, and to never
return anything except for errors.
a separate getsamples function could be used for removing samples collected by
either function from the buffer.
Suggestions are welcome as it would be nice to keep usage paradigms stable
after the 0.6 release.
2009-02-16 00:53:00 +00:00