seems to work..?

pull/51/head
Tristan Rowley 2 weeks ago
parent 65647f35e2
commit f54c47df47
  1. 21
      src/uClock.cpp

@ -198,8 +198,10 @@ void uClockClass::start()
} }
if (clock_mode == INTERNAL_CLOCK) { if (clock_mode == INTERNAL_CLOCK) {
Serial.printf("uClockClass::start(): uClock setting STARTED\n");
clock_state = STARTED; clock_state = STARTED;
} else { } else {
Serial.printf("uClockClass::start(): uClock setting STARTING\n");
clock_state = STARTING; clock_state = STARTING;
} }
} }
@ -220,6 +222,7 @@ void uClockClass::continue_playing() {
if (clock_mode == INTERNAL_CLOCK) { if (clock_mode == INTERNAL_CLOCK) {
clock_state = STARTED; clock_state = STARTED;
} else { } else {
Serial.printf("uClockClass::continue_playing(): uClock setting STARTING\n");
clock_state = STARTING; clock_state = STARTING;
} }
if (onClockContinueCallback) { if (onClockContinueCallback) {
@ -309,11 +312,7 @@ uClockClass::ClockMode uClockClass::getClockMode()
void uClockClass::clockMe() void uClockClass::clockMe()
{ {
if (clock_mode == EXTERNAL_CLOCK) { ATOMIC(handleExternalClock())
ATOMIC(
handleExternalClock()
)
}
} }
void uClockClass::setExtIntervalBuffer(uint8_t buffer_size) void uClockClass::setExtIntervalBuffer(uint8_t buffer_size)
@ -458,6 +457,7 @@ void uClockClass::handleExternalClock()
case STARTING: case STARTING:
clock_state = STARTED; clock_state = STARTED;
ext_clock_us = micros(); ext_clock_us = micros();
Serial.printf("handleExternalClock: uClock is STARTING at ext_clock_tick\t%u with ext_clock_us = %u\n", ext_clock_tick, ext_clock_us);
break; break;
case STARTED: case STARTED:
@ -475,9 +475,11 @@ void uClockClass::handleExternalClock()
ext_interval_buffer[ext_interval_idx] = last_interval; ext_interval_buffer[ext_interval_idx] = last_interval;
if (ext_clock_tick == 1) { if (ext_clock_tick == 1) {
Serial.printf("handleExternalClock: uClock is STARTED at ext_clock_tick\t%u with ext_clock_us = %u, setting ext_interval to last_interval\t%u us\n", ext_clock_tick, ext_clock_us, last_interval);
ext_interval = last_interval; ext_interval = last_interval;
} else { } else {
ext_interval = (((uint32_t)ext_interval * (uint32_t)PLL_X) + (uint32_t)(256 - PLL_X) * (uint32_t)last_interval) >> 8; ext_interval = (((uint32_t)ext_interval * (uint32_t)PLL_X) + (uint32_t)(256 - PLL_X) * (uint32_t)last_interval) >> 8;
Serial.printf("handleExternalClock: uClock is STARTED at ext_clock_tick\t%u with ext_clock_us = %u, setting ext_interval from PLL\t\t\t%u us\n", ext_clock_tick, ext_clock_us, last_interval);
} }
break; break;
} }
@ -514,8 +516,13 @@ void uClockClass::handleTimerInt()
} }
// update internal clock timer frequency // update internal clock timer frequency
float bpm = constrainBpm(freqToBpm(counter)); //if (ext_clock_tick > 20) {
if (bpm != tempo) { if (ext_interval > 0) {
float bpm = constrainBpm(freqToBpm(counter));
if (Serial) {
Serial.printf("uClock: External clock tick %u, counter %u, ext_interval %u, so is detected as BPM %f\n", ext_clock_tick, counter, ext_interval, bpm);
Serial.flush();
}
tempo = bpm; tempo = bpm;
setTimerTempo(bpm); setTimerTempo(bpm);
} }

Loading…
Cancel
Save