From c6547c6e6fa381a7811d0c47603291d82be7e440 Mon Sep 17 00:00:00 2001 From: jaseg Date: Fri, 11 Jan 2019 22:02:14 +0900 Subject: Basic command comm works --- fw/main.c | 70 ++++++++++++++++++++++++++------------------------------------- 1 file changed, 29 insertions(+), 41 deletions(-) (limited to 'fw/main.c') diff --git a/fw/main.c b/fw/main.c index 75a7350..cc07245 100644 --- a/fw/main.c +++ b/fw/main.c @@ -26,6 +26,23 @@ void TIM1_BRK_UP_TRG_COM_Handler() { TIM1->SR &= ~TIM_SR_UIF_Msk; } +uint8_t out_state = 0x01; +void set_outputs(uint8_t val[8]) { + /* TODO implement BCM for digital brightness control */ + int x = 0; + for (int i=0; i<8; i++) + if (val[i] > 127) + x |= 1<CR |= RCC_CR_HSEON; while (!(RCC->CR&RCC_CR_HSERDY)); @@ -62,64 +79,35 @@ int main(void) { | (2<ODR &= ~(!a<<3 | !b<<7 | c<<6 | d<<4); GPIOA->ODR |= a<<3 | b<<7 | !c<<6 | !d<<4; } - set_outputs(0); + set_drv_gpios(0); adc_configure_monitor_mode(0 /*no oversampling*/, 50 /*us*/, 10000/20 /*mean window size*/); /* FIXME DEBUG */ //adc_configure_scope_mode(MASK_VMEAS_A, 50000); - uint8_t out_state = 0x01; -#define DEBOUNCE 100 int debounce_ctr = 0; int val_last = 0; - int ctr = 0; -#define RESET 1000 int reset_ctr = 0; while (42) { -#define FOO 500000 if (reset_ctr) reset_ctr--; else - set_outputs(0); - - if (debounce_ctr) { - debounce_ctr--; - } else { - int val = !!(GPIOA->IDR & 1); - debounce_ctr = DEBOUNCE; - - if (val != val_last) { - if (val) - set_outputs(out_state & 0xf); - else - set_outputs(out_state >> 4); - reset_ctr = RESET; - val_last = val; - ctr++; - - if (ctr == 100) { - ctr = 0; - out_state = out_state<<1 | out_state>>7; - } - } + set_drv_gpios(0); + + int val = adc_state.detector.bit; + if (val != val_last) { + if (val) + set_drv_gpios(out_state & 0xf); + else + set_drv_gpios(out_state >> 4); + reset_ctr = 500; + val_last = val; } - /* - for (int i=0; iODR ^= 4; } } -- cgit