static void updateGenerator(unsigned char *);
static void loadAlgorithm(unsigned char *);
static void readStatus(unsigned char *);
-static void startConversionMeasure(unsigned char *);
+static void measureConversion(unsigned char *);
static void startConversion(unsigned char *);
static void stopConversion(unsigned char *);
static void startGenerator(unsigned char *);
{'D', updateGenerator},
{'E', loadAlgorithm},
{'I', readStatus},
- {'M', startConversionMeasure},
+ {'M', measureConversion},
{'R', startConversion},
{'S', stopConversion},
{'W', startGenerator},
USBSerial::write(buf, sizeof(buf));
}
-void startConversionMeasure(unsigned char *)
+void measureConversion(unsigned char *)
{
- if (EM.assert(run_status == RunStatus::Idle, Error::NotIdle)) {
- run_status = RunStatus::Running;
- ConversionManager::startMeasured();
- }
+ if (EM.assert(run_status == RunStatus::Running, Error::NotRunning))
+ ConversionManager::startMeasurement();
}
void startConversion(unsigned char *)
void stopConversion(unsigned char *)
{
- if (run_status == RunStatus::Running) {
+ if (EM.assert(run_status == RunStatus::Running, Error::NotRunning)) {
ConversionManager::stop();
run_status = RunStatus::Idle;
}
DAC::start(0, Samples::Out.data(), Samples::Out.size());
}
-void ConversionManager::startMeasured()
+void ConversionManager::startMeasurement()
{
- Samples::Out.clear();
- ADC::start(Samples::In.data(), Samples::In.size(), adcReadHandlerMeasure);
- DAC::start(0, Samples::Out.data(), Samples::Out.size());
+ ADC::setOperation(adcReadHandlerMeasure);
}
void ConversionManager::stop()
asm("mov %0, sp" : "=r" (sp));
samples = entry(samples, size);
asm("mov sp, %0" :: "r" (sp));
+ volatile auto testRead = *samples;
} else {
// Start execution timer:
asm("mov %0, sp; eor r0, r0; svc 2" : "=r" (sp));
samples = entry(samples, size);
// Stop execution timer:
asm("mov r0, #1; svc 2; mov sp, %0" :: "r" (sp));
+ volatile auto testRead = *samples;
}
}
// Begins sample conversion.
static void start();
- // Begins conversion with execution time measured.
- static void startMeasured();
+ // Prepare to measure execution time of next conversion.
+ static void startMeasurement();
// Stops conversion.
static void stop();