aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorQuentin Smith <[email protected]>2022-08-21 01:44:04 -0400
committerQuentin Smith <[email protected]>2022-08-21 01:44:04 -0400
commit3d26573c6b36c670a170279db49e7adc5e37466b (patch)
treeb7d47c1f1012afe46cc1dc3d35fcb35929c1fbc0 /examples
parent0963b5f92c9588ab00f556a6c521fad059eac72e (diff)
Discard the first N samples due to transients
Diffstat (limited to 'examples')
-rw-r--r--examples/nrf/src/bin/pdm.rs8
1 files changed, 5 insertions, 3 deletions
diff --git a/examples/nrf/src/bin/pdm.rs b/examples/nrf/src/bin/pdm.rs
index 85a59a529..605eca59e 100644
--- a/examples/nrf/src/bin/pdm.rs
+++ b/examples/nrf/src/bin/pdm.rs
@@ -26,14 +26,16 @@ async fn main(_p: Spawner) {
26 info!("Gain = {} dB", defmt::Debug2Format(&gain)); 26 info!("Gain = {} dB", defmt::Debug2Format(&gain));
27 for _ in 0..10 { 27 for _ in 0..10 {
28 let mut buf = [0; 1500]; 28 let mut buf = [0; 1500];
29 pdm.sample(&mut buf).await; 29 pdm.sample(5, &mut buf).await;
30 let mean = (buf.iter().map(|v| i32::from(*v)).sum::<i32>() / buf.len() as i32) as i16;
30 info!( 31 info!(
31 "{} samples, min {=i16}, max {=i16}, RMS {=i16}", 32 "{} samples, min {=i16}, max {=i16}, mean {=i16}, AC RMS {=i16}",
32 buf.len(), 33 buf.len(),
33 buf.iter().min().unwrap(), 34 buf.iter().min().unwrap(),
34 buf.iter().max().unwrap(), 35 buf.iter().max().unwrap(),
36 mean,
35 ( 37 (
36 buf.iter().map(|v| i32::from(*v).pow(2)).fold(0i32, |a,b| a.saturating_add(b)) 38 buf.iter().map(|v| i32::from(*v - mean).pow(2)).fold(0i32, |a,b| a.saturating_add(b))
37 / buf.len() as i32).sqrt() as i16, 39 / buf.len() as i32).sqrt() as i16,
38 ); 40 );
39 info!("samples = {}", &buf); 41 info!("samples = {}", &buf);