Browse Source

Fix numerical overflow in audio CPU usage measurement

https://forum.pjrc.com/threads/61412
main
PaulStoffregen 4 years ago
parent
commit
232ace26ff
2 changed files with 3 additions and 3 deletions
  1. +2
    -2
      teensy4/AudioStream.cpp
  2. +1
    -1
      teensy4/AudioStream.h

+ 2
- 2
teensy4/AudioStream.cpp View File

p->update(); p->update();
// TODO: traverse inputQueueArray and release // TODO: traverse inputQueueArray and release
// any input blocks that weren't consumed? // any input blocks that weren't consumed?
cycles = (ARM_DWT_CYCCNT - cycles) >> 4;
cycles = (ARM_DWT_CYCCNT - cycles) >> 6;
p->cpu_cycles = cycles; p->cpu_cycles = cycles;
if (cycles > p->cpu_cycles_max) p->cpu_cycles_max = cycles; if (cycles > p->cpu_cycles_max) p->cpu_cycles_max = cycles;
} }
} }
//digitalWriteFast(2, LOW); //digitalWriteFast(2, LOW);
totalcycles = (ARM_DWT_CYCCNT - totalcycles) >> 4;;
totalcycles = (ARM_DWT_CYCCNT - totalcycles) >> 6;
AudioStream::cpu_cycles_total = totalcycles; AudioStream::cpu_cycles_total = totalcycles;
if (totalcycles > AudioStream::cpu_cycles_total_max) if (totalcycles > AudioStream::cpu_cycles_total_max)
AudioStream::cpu_cycles_total_max = totalcycles; AudioStream::cpu_cycles_total_max = totalcycles;

+ 1
- 1
teensy4/AudioStream.h View File

AudioStream::initialize_memory(data, num); \ AudioStream::initialize_memory(data, num); \
}) })


#define CYCLE_COUNTER_APPROX_PERCENT(n) (((n) + (F_CPU_ACTUAL / 32 / AUDIO_SAMPLE_RATE * AUDIO_BLOCK_SAMPLES / 100)) / (F_CPU_ACTUAL / 16 / AUDIO_SAMPLE_RATE * AUDIO_BLOCK_SAMPLES / 100))
#define CYCLE_COUNTER_APPROX_PERCENT(n) (((n) + (F_CPU_ACTUAL / 128 / AUDIO_SAMPLE_RATE * AUDIO_BLOCK_SAMPLES / 100)) / (F_CPU_ACTUAL / 64 / AUDIO_SAMPLE_RATE * AUDIO_BLOCK_SAMPLES / 100))


#define AudioProcessorUsage() (CYCLE_COUNTER_APPROX_PERCENT(AudioStream::cpu_cycles_total)) #define AudioProcessorUsage() (CYCLE_COUNTER_APPROX_PERCENT(AudioStream::cpu_cycles_total))
#define AudioProcessorUsageMax() (CYCLE_COUNTER_APPROX_PERCENT(AudioStream::cpu_cycles_total_max)) #define AudioProcessorUsageMax() (CYCLE_COUNTER_APPROX_PERCENT(AudioStream::cpu_cycles_total_max))

Loading…
Cancel
Save