~ruther/qmk_firmware

2bc8215ce5f5c7473bb75de95cef4ab468d7e837 — Joel Challis 4 years ago 4818deb
Unify behaviour of wait on AVR (#14025)

1 files changed, 20 insertions(+), 2 deletions(-)

M tmk_core/common/avr/_wait.h
M tmk_core/common/avr/_wait.h => tmk_core/common/avr/_wait.h +20 -2
@@ 17,8 17,26 @@

#include <util/delay.h>

#define wait_ms(ms) _delay_ms(ms)
#define wait_us(us) _delay_us(us)
#define wait_ms(ms)                             \
    do {                                        \
        if (__builtin_constant_p(ms)) {         \
            _delay_ms(ms);                      \
        } else {                                \
            for (uint16_t i = ms; i > 0; i--) { \
                _delay_ms(1);                   \
            }                                   \
        }                                       \
    } while (0)
#define wait_us(us)                             \
    do {                                        \
        if (__builtin_constant_p(us)) {         \
            _delay_us(us);                      \
        } else {                                \
            for (uint16_t i = us; i > 0; i--) { \
                _delay_us(1);                   \
            }                                   \
        }                                       \
    } while (0)

/* The AVR series GPIOs have a one clock read delay for changes in the digital input signal.
 * But here's more margin to make it two clocks. */