diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2020-04-15 12:11:57 -0400 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2020-04-15 12:11:57 -0400 |
commit | a7f7cc507547758879890b206030e508ac8dbdb0 (patch) | |
tree | 269e15bffc9ebca0ee6b90b5d21f7366c5357572 /src/neopixel.c | |
parent | c7d6d81a4d9da23a76340ea712a750a74d1295df (diff) | |
download | kutter-a7f7cc507547758879890b206030e508ac8dbdb0.tar.gz kutter-a7f7cc507547758879890b206030e508ac8dbdb0.tar.xz kutter-a7f7cc507547758879890b206030e508ac8dbdb0.zip |
neopixel: Use names for key timing values
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'src/neopixel.c')
-rw-r--r-- | src/neopixel.c | 31 |
1 files changed, 19 insertions, 12 deletions
diff --git a/src/neopixel.c b/src/neopixel.c index 57c865f2..5988562b 100644 --- a/src/neopixel.c +++ b/src/neopixel.c @@ -36,9 +36,10 @@ nsecs_to_ticks(uint32_t ns) } static inline int -neopixel_check_elapsed(neopixel_time_t t1, neopixel_time_t t2, uint32_t nsecs) +neopixel_check_elapsed(neopixel_time_t t1, neopixel_time_t t2 + , neopixel_time_t ticks) { - return t2 - t1 >= nsecs_to_ticks(nsecs); + return t2 - t1 >= ticks; } // The AVR micro-controllers require specialized timing @@ -53,7 +54,7 @@ neopixel_get_time(void) } static inline void -neopixel_delay(neopixel_time_t start, uint32_t nsecs) +neopixel_delay(neopixel_time_t start, neopixel_time_t ticks) { } @@ -66,14 +67,20 @@ neopixel_get_time(void) } static inline void -neopixel_delay(neopixel_time_t start, uint32_t nsecs) +neopixel_delay(neopixel_time_t start, neopixel_time_t ticks) { - while (!neopixel_check_elapsed(start, neopixel_get_time(), nsecs)) + while (!neopixel_check_elapsed(start, neopixel_get_time(), ticks)) ; } #endif +#define PULSE_LONG_TICKS nsecs_to_ticks(650) +#define PULSE_SHORT_TICKS nsecs_to_ticks(200) +#define BIT_MIN_TICKS nsecs_to_ticks(1250) +#define BIT_MAX_TICKS nsecs_to_ticks(4000) +#define RESET_MIN_TICKS timer_from_us(50) + /**************************************************************** * Neopixel interface @@ -99,7 +106,7 @@ send_data(struct neopixel_s *n, uint8_t *data, uint_fast8_t data_len) { // Make sure at least 50us has passed since last request uint32_t last_req_time = n->last_req_time, cur = timer_read_time(); - while (cur - last_req_time < timer_from_us(50)) { + while (cur - last_req_time < RESET_MIN_TICKS) { irq_poll(); cur = timer_read_time(); } @@ -112,32 +119,32 @@ send_data(struct neopixel_s *n, uint8_t *data, uint_fast8_t data_len) while (bits--) { if (byte & 0x80) { // Long pulse - neopixel_delay(last_start, 1250); + neopixel_delay(last_start, BIT_MIN_TICKS); irq_disable(); neopixel_time_t start = neopixel_get_time(); gpio_out_toggle_noirq(pin); irq_enable(); - if (neopixel_check_elapsed(last_start, start, 4000)) + if (neopixel_check_elapsed(last_start, start, BIT_MAX_TICKS)) goto fail; last_start = start; byte <<= 1; - neopixel_delay(start, 650); + neopixel_delay(start, PULSE_LONG_TICKS); irq_disable(); gpio_out_toggle_noirq(pin); irq_enable(); } else { // Short pulse - neopixel_delay(last_start, 1250); + neopixel_delay(last_start, BIT_MIN_TICKS); irq_disable(); neopixel_time_t start = neopixel_get_time(); gpio_out_toggle_noirq(pin); - neopixel_delay(start, 200); + neopixel_delay(start, PULSE_SHORT_TICKS); gpio_out_toggle_noirq(pin); irq_enable(); - if (neopixel_check_elapsed(last_start, start, 4000)) + if (neopixel_check_elapsed(last_start, start, BIT_MAX_TICKS)) goto fail; last_start = start; byte <<= 1; |