diff options
| author | Christian Perez Llamas <[email protected]> | 2022-11-13 01:41:32 +0100 |
|---|---|---|
| committer | Christian Perez Llamas <[email protected]> | 2022-11-13 01:41:32 +0100 |
| commit | d2e8794f29d3d0afef7a6bc610b2ee4a4d680643 (patch) | |
| tree | 120e9e77a49561ef4552b9b9a82e49e5535c3fc7 /examples | |
| parent | 122a31d20877005c7201d4e7c98da5544666dd1d (diff) | |
Investigating discontinuities in the signal
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/nrf/src/bin/i2s.rs | 27 |
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; | |||
| 9 | use defmt::{error, info}; | 9 | use defmt::{error, info}; |
| 10 | use embassy_executor::Spawner; | 10 | use embassy_executor::Spawner; |
| 11 | use embassy_nrf::i2s::{MckFreq, Mode, Ratio, MODE_MASTER_16000, MODE_MASTER_8000}; | 11 | use embassy_nrf::i2s::{MckFreq, Mode, Ratio, MODE_MASTER_16000, MODE_MASTER_8000}; |
| 12 | use embassy_nrf::pac::ficr::info; | ||
| 12 | use embassy_nrf::{i2s, interrupt}; | 13 | use embassy_nrf::{i2s, interrupt}; |
| 13 | use {defmt_rtt as _, panic_probe as _}; | 14 | use {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); |
