avoid double float arithmetic in FrequencyIn

crypto-aes
Dan Halbert 4 years ago
parent 03f9048778
commit f59dadbb4f
  1. 5
      ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
  2. 2
      ports/atmel-samd/timer_handler.c

@ -103,7 +103,10 @@ void frequencyin_interrupt_handler(uint8_t index) {
// record a new event count.
if (current_ms - self->last_ms >= self->capture_period) {
float new_factor = self->last_us + (1000 - current_us);
self->factor = (current_ms - self->last_ms) + (new_factor / 1000);
// ms difference will not need 64 bits. If we use 64 bits,
// double-precision float routines are required, and we don't
// want to include them because they're very large.
self->factor = (uint32_t) (current_ms - self->last_ms) + (new_factor / 1000);
self->last_ms = current_ms;
self->last_us = current_us;

@ -48,7 +48,9 @@ void shared_timer_handler(bool is_tc, uint8_t index) {
uint8_t handler = tc_handler[index];
switch(handler) {
case TC_HANDLER_PULSEOUT:
#if CIRCUITPY_PULSEIO
pulseout_interrupt_handler(index);
#endif
break;
case TC_HANDLER_PEW:
#if CIRCUITPY_PEW

Loading…
Cancel
Save