diff --git a/examples/Beginner/Waveform_Generator/Waveform_Generator.ino b/examples/Beginner/Waveform_Generator/Waveform_Generator.ino index 2f8dc89..5ba5494 100644 --- a/examples/Beginner/Waveform_Generator/Waveform_Generator.ino +++ b/examples/Beginner/Waveform_Generator/Waveform_Generator.ino @@ -55,13 +55,9 @@ void generate_waveform(int cmd) } else { break; } - - dac1.stop(); - delay(500); - if (!dac1.begin(AN_RESOLUTION_8, dac_frequency * N_SAMPLES, N_SAMPLES, 32)) { - Serial.println("Failed to start DAC1 !"); - } - delay(500); + + // Change frequency. + dac1.frequency(dac_frequency * N_SAMPLES); break; default: diff --git a/src/AdvancedDAC.cpp b/src/AdvancedDAC.cpp index fc04461..3277158 100644 --- a/src/AdvancedDAC.cpp +++ b/src/AdvancedDAC.cpp @@ -182,6 +182,15 @@ int AdvancedDAC::stop() return 1; } +int AdvancedDAC::frequency(uint32_t const frequency) +{ + if (descr && descr->pool) { + // Reconfigure the trigger timer. + dac_descr_deinit(descr, false); + hal_tim_config(&descr->tim, frequency); + } +} + AdvancedDAC::~AdvancedDAC() { dac_descr_deinit(descr, true); diff --git a/src/AdvancedDAC.h b/src/AdvancedDAC.h index 57707ee..da199a6 100644 --- a/src/AdvancedDAC.h +++ b/src/AdvancedDAC.h @@ -49,6 +49,7 @@ class AdvancedDAC { void write(SampleBuffer dmabuf); int begin(uint32_t resolution, uint32_t frequency, size_t n_samples=0, size_t n_buffers=0); int stop(); + int frequency(uint32_t const frequency); }; #endif /* ARDUINO_ADVANCED_DAC_H_ */