From 25e6afd831b94b9735cc6691ee19c8edc921aca7 Mon Sep 17 00:00:00 2001 From: root Date: Sun, 8 Apr 2018 01:14:30 +0100 Subject: working decoding --- app/ticker.c | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 app/ticker.c (limited to 'app/ticker.c') diff --git a/app/ticker.c b/app/ticker.c new file mode 100644 index 0000000..af91d14 --- /dev/null +++ b/app/ticker.c @@ -0,0 +1,79 @@ +#include "project.h" + +static volatile uint32_t delay_ms_count; +static uint32_t scale = 35; + +volatile uint32_t ticks; + +void +delay_us (uint32_t d) +{ + d *= scale; + + while (d--) + __asm__ ("nop"); +} + +void +sys_tick_handler (void) +{ + static int slow; + + if (delay_ms_count) + delay_ms_count--; + + ticks++; + + slow++; + + if (slow < 1000) + return; + + slow = 0; + + led_slow_tick(); + abs_slow_tick(); +} + + + +void +delay_ms (uint32_t d) +{ + delay_ms_count = d; + + while (delay_ms_count); +} + + +void +ticker_init (void) +{ + uint32_t v, w; + + /*168MHz / 168000 -> 1ms */ + systick_set_reload (168000); + systick_set_clocksource (STK_CSR_CLKSOURCE_AHB); + systick_counter_enable(); + /* this done last */ + systick_interrupt_enable(); + + + /*Calibrate the delay loop */ + + do { + scale--; + v = ticks; + + while (v == ticks); + + delay_us (1000); + w = ticks; + v++; + w -= v; + } while (w); + + SCS_DEMCR |= SCS_DEMCR_TRCENA; + SCS_DWT_CTRL |= SCS_DWT_CTRL_CYCCNTENA; + +} -- cgit v1.2.3