Rev 37 | Rev 41 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 37 | Rev 39 | ||
---|---|---|---|
Line 8... | Line 8... | ||
8 | #include "misc.h" |
8 | #include "misc.h" |
9 | #include "main.h" |
9 | #include "main.h" |
10 | 10 | ||
11 | 11 | ||
12 | unsigned volatile long RPM_Time[RPM_SAMPLES]; // sampled on both edges |
12 | unsigned volatile long RPM_Time[RPM_SAMPLES]; // sampled on both edges |
13 | unsigned volatile char RPM_Level[RPM_SAMPLES]; // active level when sampled |
- | |
14 | unsigned volatile long RPM_Count; // incremented every reading |
13 | unsigned volatile long RPM_Count; // incremented every reading |
15 | 14 | ||
16 | // this is set if there is a timer timeout interrupt |
15 | // this is set if there is a timer timeout interrupt |
17 | unsigned char volatile periodPulse = 0; |
16 | unsigned char volatile periodPulse = 0; |
18 | 17 | ||
- | 18 | unsigned char volatile tim3triggered = 0; |
|
- | 19 | ||
19 | static void |
20 | static void |
20 | triggerTim3 (void) |
21 | triggerTim3 (void) |
21 | { |
22 | { |
22 | htim3.Instance->CNT = 0; |
23 | htim3.Instance->CNT = 0; |
23 | htim3.Instance->CR1 |= TIM_CR1_CEN; |
24 | htim3.Instance->CR1 |= TIM_CR1_CEN; |
Line 29... | Line 30... | ||
29 | { |
30 | { |
30 | if (__HAL_TIM_GET_FLAG(&htim2, TIM_FLAG_CC1)) |
31 | if (__HAL_TIM_GET_FLAG(&htim2, TIM_FLAG_CC1)) |
31 | { |
32 | { |
32 | __HAL_TIM_CLEAR_FLAG(&htim2, TIM_FLAG_CC1); |
33 | __HAL_TIM_CLEAR_FLAG(&htim2, TIM_FLAG_CC1); |
33 | RPM_Time[RPM_Count] = __HAL_TIM_GET_COMPARE(&htim2, TIM_CHANNEL_1); |
34 | RPM_Time[RPM_Count] = __HAL_TIM_GET_COMPARE(&htim2, TIM_CHANNEL_1); |
34 | int CB_level = HAL_GPIO_ReadPin (CB_Pulse_GPIO_Port, |
- | |
35 | CB_Pulse_Pin); |
- | |
36 | RPM_Level[RPM_Count] = CB_level; |
- | |
37 | RPM_Count = (RPM_Count + 1) % RPM_SAMPLES; |
35 | RPM_Count = (RPM_Count + 1) % RPM_SAMPLES; |
38 | 36 | ||
39 | if ( CB_level == 0) |
37 | if ( tim3triggered == 0) |
40 | { |
38 | { |
- | 39 | tim3triggered = 1; // make it a monostable |
|
41 | periodPulse = 0; |
40 | periodPulse = 0; |
42 | triggerTim3 (); |
41 | triggerTim3 (); |
43 | } |
42 | } |
44 | } |
43 | } |
45 | } |
44 | } |
Line 53... | Line 52... | ||
53 | { |
52 | { |
54 | if (__HAL_TIM_GET_FLAG(&htim3, TIM_FLAG_UPDATE)) |
53 | if (__HAL_TIM_GET_FLAG(&htim3, TIM_FLAG_UPDATE)) |
55 | { |
54 | { |
56 | __HAL_TIM_CLEAR_FLAG(&htim3, TIM_FLAG_UPDATE); |
55 | __HAL_TIM_CLEAR_FLAG(&htim3, TIM_FLAG_UPDATE); |
57 | 56 | ||
- | 57 | tim3triggered = 0; |
|
58 | if (chtTimer >= 3) // every 300mS |
58 | if (chtTimer >= 3) // every 300mS |
59 | { |
59 | { |
60 | chtTimer = 0; |
60 | chtTimer = 0; |
61 | 61 | ||
62 | for (int instance = 0; instance < 2; instance++) |
62 | for (int instance = 0; instance < 2; instance++) |