From 7e9f81ca5414c1384c1ac8f37c7d559afa57a7cc Mon Sep 17 00:00:00 2001 From: eddyem Date: Thu, 8 Aug 2019 09:26:08 +0300 Subject: [PATCH] V 0.0.2 --- F1-nolib/chronometer/Makefile | 4 ++-- F1-nolib/chronometer/Readme.md | 7 +++++++ F1-nolib/chronometer/chrono.bin | Bin 15396 -> 13348 bytes F1-nolib/chronometer/flash.c | 16 +++++++--------- F1-nolib/chronometer/hardware.h | 6 ++++-- F1-nolib/chronometer/lidar.c | 2 +- F1-nolib/chronometer/main.c | 2 +- F1-nolib/chronometer/str.c | 11 +++++++++-- F1-nolib/chronometer/time.c | 7 ++++++- 9 files changed, 37 insertions(+), 18 deletions(-) diff --git a/F1-nolib/chronometer/Makefile b/F1-nolib/chronometer/Makefile index d253d7a..b1946cb 100644 --- a/F1-nolib/chronometer/Makefile +++ b/F1-nolib/chronometer/Makefile @@ -8,10 +8,10 @@ MCU ?= F103x8 # density (stm32f10x.h, lines 70-84) DENSITY ?= MD # change this linking script depending on particular MCU model, -LDSCRIPT ?= stm32f103x8.ld +LDSCRIPT ?= stm32f103xB.ld DEFS = -DVERSION=\"0.0.1\" # debug -DEFS += -DEBUG +#DEFS += -DEBUG # proxy GPS output over USART1 DEFS += -DUSART1PROXY diff --git a/F1-nolib/chronometer/Readme.md b/F1-nolib/chronometer/Readme.md index e85cb05..6c6e3a5 100644 --- a/F1-nolib/chronometer/Readme.md +++ b/F1-nolib/chronometer/Readme.md @@ -19,8 +19,15 @@ Chronometer for downhill competitions - PC13 - buzzer +## LEDS + +- LED0 - shining when there's no PPS signal, fades for 0.25s on PPS +- LED1 - don't shines if no GPS found, shines when time not valid, blinks when time valid + ### Not implemented yet: - PA5,6,7 (SCK, MISO, MOSI) - SPI - PB0 - TRIG4 - ADC channel 8 - PB6/7 (SCL, SDA) - I2C + + diff --git a/F1-nolib/chronometer/chrono.bin b/F1-nolib/chronometer/chrono.bin index e543be800cc1094e5a33ec1d2b62540921823acd..42a21dde5381636b9eba519ad2701ab6dfbcbdc4 100755 GIT binary patch delta 6849 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 diff --git a/F1-nolib/chronometer/flash.c b/F1-nolib/chronometer/flash.c index 34353ea..a0b3b6f 100644 --- a/F1-nolib/chronometer/flash.c +++ b/F1-nolib/chronometer/flash.c @@ -39,9 +39,7 @@ #include "adc.h" #include "flash.h" #include "lidar.h" -#ifdef EBUG -#include "usart.h" -#endif +#include "usart.h" // DBG #include // memcpy extern uint32_t _edata, _etext, _sdata; @@ -49,22 +47,22 @@ static int maxnum = FLASH_BLOCK_SIZE / sizeof(user_conf); typedef struct{ - const user_conf all_stored; + const user_conf all_stored; } flash_storage; #define USERCONF_INITIALIZER { \ - .userconf_sz = sizeof(user_conf) \ - ,.dist_min = LIDAR_MIN_DIST \ - ,.dist_max = LIDAR_MAX_DIST \ + .userconf_sz = sizeof(user_conf) \ + ,.dist_min = LIDAR_MIN_DIST \ + ,.dist_max = LIDAR_MAX_DIST \ ,.trig_pullups = 0xff \ ,.trigstate = 0 \ ,.trigpause = {400, 400, 400, 300, 300} \ ,.ADC_min = ADC_MIN_VAL \ ,.ADC_max = ADC_MAX_VAL \ - } + } __attribute__((section(".myvars"))) static const flash_storage Flash_Storage = { - .all_stored = USERCONF_INITIALIZER + .all_stored = USERCONF_INITIALIZER }; static const user_conf *Flash_Data = &Flash_Storage.all_stored; diff --git a/F1-nolib/chronometer/hardware.h b/F1-nolib/chronometer/hardware.h index a746279..fd5bad8 100644 --- a/F1-nolib/chronometer/hardware.h +++ b/F1-nolib/chronometer/hardware.h @@ -46,9 +46,11 @@ extern uint8_t buzzer_on; // PPS and triggers state // amount of triggers, should be less than 9; 5 - 0..2 - switches, 3 - LIDAR, 4 - ADC -#define TRIGGERS_AMOUNT (5) +#define TRIGGERS_AMOUNT (5) +// number of LIDAR trigger +#define LIDAR_TRIGGER (3) // amount of digital triggers (on interrupts) -#define DIGTRIG_AMOUNT (3) +#define DIGTRIG_AMOUNT (3) uint8_t gettrig(uint8_t N); void fillshotms(int i); diff --git a/F1-nolib/chronometer/lidar.c b/F1-nolib/chronometer/lidar.c index ae37189..45b3fc0 100644 --- a/F1-nolib/chronometer/lidar.c +++ b/F1-nolib/chronometer/lidar.c @@ -50,7 +50,7 @@ void parse_lidar_data(char *txt){ savetrigtime(); triggered = 1; lidar_triggered_dist = last_lidar_dist; - fillshotms(3); + fillshotms(LIDAR_TRIGGER); #ifdef EBUG SEND("Triggered! distance="); printu(1, last_lidar_dist); diff --git a/F1-nolib/chronometer/main.c b/F1-nolib/chronometer/main.c index 66c8916..6889944 100644 --- a/F1-nolib/chronometer/main.c +++ b/F1-nolib/chronometer/main.c @@ -240,7 +240,7 @@ int main(void){ } #endif RCC->CSR |= RCC_CSR_RMVF; // remove reset flags - //iwdg_setup(); + iwdg_setup(); while (1){ IWDG->KR = IWDG_REFRESH; // refresh watchdog diff --git a/F1-nolib/chronometer/str.c b/F1-nolib/chronometer/str.c index a51e7b0..8f6929e 100644 --- a/F1-nolib/chronometer/str.c +++ b/F1-nolib/chronometer/str.c @@ -19,6 +19,7 @@ #include "adc.h" #include "flash.h" #include "GPS.h" +#include "lidar.h" #include "str.h" #include "time.h" #include "usart.h" @@ -285,8 +286,14 @@ void show_trigger_shot(uint8_t tshot){ if(tshot & X) tshot &= ~X; else continue; if(trigger_shot & X) trigger_shot &= ~X; - USB_send("TRIG"); - sendu(i); + if(i == LIDAR_TRIGGER){ + USB_send("LIDAR, dist="); + sendu(lidar_triggered_dist); + USB_send(", TRIG="); + }else{ + USB_send("TRIG"); + sendu(i); + } USB_send("="); USB_send(get_time(&shottime[i].Time, shottime[i].millis)); USB_send("\n"); diff --git a/F1-nolib/chronometer/time.c b/F1-nolib/chronometer/time.c index cd23253..d36c9b7 100644 --- a/F1-nolib/chronometer/time.c +++ b/F1-nolib/chronometer/time.c @@ -121,8 +121,9 @@ char *get_time(curtime *Tm, uint32_t T){ #ifdef EBUG -int32_t ticksdiff=0, timecntr=0, timerval, Tms1; +int32_t timerval, Tms1; #endif +int32_t timecntr=0, ticksdiff=0; uint32_t last_corr_time = 0; @@ -145,8 +146,10 @@ void systick_correction(){ SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk; // stop systick for a while uint32_t systick_val = SysTick->VAL, L = SysTick->LOAD + 1; int32_t timer_val = Timer; +#ifdef EBUG timerval = Timer; Tms1 = Tms; +#endif Timer = 0; SysTick->VAL = SysTick->LOAD; SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk; // start it again @@ -155,7 +158,9 @@ void systick_correction(){ if(last_corr_time){ if(Tms - last_corr_time < 1500){ // there was perevious PPS signal int32_t D = L * (Tms - 1000 - last_corr_time) + (SysTick->LOAD - systick_val); // amount of spare ticks +#ifdef EBUG ++timecntr; +#endif ticksdiff += D; uint32_t ticksabs = (ticksdiff < 0) ? -ticksdiff : ticksdiff; // 10000 == 30 seconds * 1000 interrupts per second