aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorChristian Perez Llamas <[email protected]>2022-11-13 01:41:32 +0100
committerChristian Perez Llamas <[email protected]>2022-11-13 01:41:32 +0100
commitd2e8794f29d3d0afef7a6bc610b2ee4a4d680643 (patch)
tree120e9e77a49561ef4552b9b9a82e49e5535c3fc7 /examples
parent122a31d20877005c7201d4e7c98da5544666dd1d (diff)
Investigating discontinuities in the signal
Diffstat (limited to 'examples')
-rw-r--r--examples/nrf/src/bin/i2s.rs27
1 files changed, 18 insertions, 9 deletions
diff --git a/examples/nrf/src/bin/i2s.rs b/examples/nrf/src/bin/i2s.rs
index 53ccb3b85..7fb1ecb84 100644
--- a/examples/nrf/src/bin/i2s.rs
+++ b/examples/nrf/src/bin/i2s.rs
@@ -9,6 +9,7 @@ use core::f32::consts::PI;
9use defmt::{error, info}; 9use defmt::{error, info};
10use embassy_executor::Spawner; 10use embassy_executor::Spawner;
11use embassy_nrf::i2s::{MckFreq, Mode, Ratio, MODE_MASTER_16000, MODE_MASTER_8000}; 11use embassy_nrf::i2s::{MckFreq, Mode, Ratio, MODE_MASTER_16000, MODE_MASTER_8000};
12use embassy_nrf::pac::ficr::info;
12use embassy_nrf::{i2s, interrupt}; 13use embassy_nrf::{i2s, interrupt};
13use {defmt_rtt as _, panic_probe as _}; 14use {defmt_rtt as _, panic_probe as _};
14 15
@@ -49,16 +50,14 @@ async fn main(_spawner: Spawner) {
49 let mut buf = AlignedBuffer([0i16; BUF_SIZE]); 50 let mut buf = AlignedBuffer([0i16; BUF_SIZE]);
50 51
51 let mut carrier = SineOsc::new(); 52 let mut carrier = SineOsc::new();
52 carrier.set_frequency(300.0, inv_sample_rate); 53 carrier.set_frequency(240.0, inv_sample_rate);
53 54
54 let mut modulator = SineOsc::new(); 55 // let mut modulator = SineOsc::new();
55 modulator.set_frequency(0.01, inv_sample_rate); 56 // modulator.set_frequency(0.01, inv_sample_rate);
56 modulator.set_amplitude(0.2); 57 // modulator.set_amplitude(0.2);
57 58
58 i2s.set_tx_enabled(true); 59 let mut lastf = 0.0;
59 i2s.start(); 60 let mut generate = |buf: &mut [i16]| {
60
61 loop {
62 for sample in buf.as_mut().chunks_mut(2) { 61 for sample in buf.as_mut().chunks_mut(2) {
63 let signal = carrier.generate(); 62 let signal = carrier.generate();
64 // let modulation = bipolar_to_unipolar(modulator.generate()); 63 // let modulation = bipolar_to_unipolar(modulator.generate());
@@ -67,8 +66,18 @@ async fn main(_spawner: Spawner) {
67 let value = (i16::MAX as f32 * signal) as i16; 66 let value = (i16::MAX as f32 * signal) as i16;
68 sample[0] = value; 67 sample[0] = value;
69 sample[1] = value; 68 sample[1] = value;
70 // info!("{}", signal);
71 } 69 }
70 };
71
72 generate(buf.as_mut().as_mut_slice());
73
74 i2s.set_tx_enabled(true);
75 i2s.start();
76
77 loop {
78 // info!("--");
79
80 generate(buf.as_mut().as_mut_slice());
72 81
73 if let Err(err) = i2s.tx(buf.as_ref().as_slice()).await { 82 if let Err(err) = i2s.tx(buf.as_ref().as_slice()).await {
74 error!("{}", err); 83 error!("{}", err);