Rev 25 | Rev 27 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 25 | Rev 26 | ||
|---|---|---|---|
| Line 188... | Line 188... | ||
| 188 | if (RPM_Pulsecount > 0) |
188 | if (RPM_Pulsecount > 0) |
| 189 | { |
189 | { |
| 190 | // now have time for N pulses in clocks |
190 | // now have time for N pulses in clocks |
| 191 | // need to scale by 19.55: one unit is 19.55 RPM |
191 | // need to scale by 19.55: one unit is 19.55 RPM |
| 192 | // 1Hz is 60 RPM |
192 | // 1Hz is 60 RPM |
| 193 | float new_RPM = (30.0 / 19.55 * RPM_Pulsecount * RPM_COUNT_RATE) |
193 | float New_RPM = (30.0 / 19.55 * RPM_Pulsecount * RPM_COUNT_RATE) |
| 194 | / (RPM_FilteredWidth) + 0.5; |
194 | / (RPM_FilteredWidth) + 0.5; |
| 195 | - | ||
| - | 195 | // increase RPM filtering |
|
| 196 | Coded_RPM += (new_RPM * Scale - Coded_RPM) / 4; |
196 | Coded_RPM += (New_RPM * Scale - Coded_RPM) / 8; |
| 197 | 197 | ||
| 198 | #if !defined MY_DEBUG |
198 | #if !defined MY_DEBUG |
| 199 | // reset here unless we want to debug |
199 | // reset here unless we want to debug |
| 200 | RPM_Pulsecount = 0; |
200 | RPM_Pulsecount = 0; |
| 201 | RPM_FilteredWidth = 0; |
201 | RPM_FilteredWidth = 0; |
| Line 222... | Line 222... | ||
| 222 | 222 | ||
| 223 | 223 | ||
| 224 | uint16_t CHT_Observations[2] = |
224 | uint16_t CHT_Observations[2] = |
| 225 | { 0, 0 }; |
225 | { 0, 0 }; |
| 226 | 226 | ||
| - | 227 | // look for the trigger pin being high then low - the points |
|
| - | 228 | // are opening, and skip the reading |
|
| - | 229 | ||
| - | 230 | ||
| 227 | void ProcessCHT(int instance) |
231 | void ProcessCHT(int instance) |
| 228 | { |
232 | { |
| 229 | uint8_t buffer[2]; |
233 | uint8_t buffer[2]; |
| 230 | if (instance > 2) |
234 | if (instance > 2) |
| 231 | return; |
235 | return; |
| 232 | CHT_Timer[instance]++; |
236 | CHT_Timer[instance]++; |
| - | 237 | ||
| - | 238 | static uint8_t prevCB; |
|
| - | 239 | ||
| - | 240 | uint8_t readCB = |
|
| - | 241 | HAL_GPIO_ReadPin(CB_Pulse_GPIO_Port, CB_Pulse_Pin); |
|
| - | 242 | ||
| - | 243 | if(!(prevCB == GPIO_PIN_SET && readCB == |
|
| - | 244 | GPIO_PIN_RESET) ) |
|
| - | 245 | { |
|
| - | 246 | ||
| 233 | if ((CHT_Enable == ENABLE) && (CHT_Timer[instance] >= 4)) // every 300 milliseconds |
247 | if ((CHT_Enable == ENABLE) && (CHT_Timer[instance] >= 4)) // every 300 milliseconds |
| 234 | { |
248 | { |
| 235 | 249 | ||
| 236 | CHT_Timer[instance] = 0; |
250 | CHT_Timer[instance] = 0; |
| 237 | 251 | ||
| Line 247... | Line 261... | ||
| 247 | 261 | ||
| 248 | // good observation if the status bit is clear, and the reading is less than 1023 |
262 | // good observation if the status bit is clear, and the reading is less than 1023 |
| 249 | 263 | ||
| 250 | uint16_t temp_c = obs>>5; |
264 | uint16_t temp_c = obs>>5; |
| 251 | 265 | ||
| 252 | uint8_t good = ((obs & 4) == 0) && (temp_c > 0) && (temp_c < 250); |
266 | uint8_t good = ((obs & 7) == 0) && (temp_c > 0) && (temp_c < 250); |
| 253 | 267 | ||
| 254 | if (good) |
268 | if (good) |
| 255 | { |
269 | { |
| 256 | CHT_Observations[instance]=temp_c; |
270 | CHT_Observations[instance]=temp_c; |
| 257 | 271 | ||
| 258 | } |
272 | } |
| 259 | 273 | ||
| 260 | } |
274 | } |
| - | 275 | } |
|
| 261 | 276 | ||
| - | 277 | prevCB= readCB; |
|
| 262 | plx_sendword(PLX_X_CHT); |
278 | plx_sendword(PLX_X_CHT); |
| 263 | PutCharSerial(&uc1, instance); |
279 | PutCharSerial(&uc1, instance); |
| 264 | plx_sendword(CHT_Observations[instance]); |
280 | plx_sendword(CHT_Observations[instance]); |
| 265 | 281 | ||
| 266 | } |
282 | } |
| Line 477... | Line 493... | ||
| 477 | init_ADC_filter(); |
493 | init_ADC_filter(); |
| 478 | 494 | ||
| 479 | uint32_t Ticks = HAL_GetTick() + 100; |
495 | uint32_t Ticks = HAL_GetTick() + 100; |
| 480 | int CalCounter = 0; |
496 | int CalCounter = 0; |
| 481 | 497 | ||
| 482 | Power_CHT_Timer = HAL_GetTick() + 10000; /* wait 10 seconds before powering up the CHT sensor */ |
498 | Power_CHT_Timer = HAL_GetTick() + 1000; /* wait 10 seconds before powering up the CHT sensor */ |
| 483 | 499 | ||
| 484 | 500 | ||
| 485 | 501 | ||
| 486 | 502 | ||
| 487 | /* USER CODE END 2 */ |
503 | /* USER CODE END 2 */ |
| Line 528... | Line 544... | ||
| 528 | } |
544 | } |
| 529 | 545 | ||
| 530 | if (Starter_Debounce == STARTER_LIMIT) |
546 | if (Starter_Debounce == STARTER_LIMIT) |
| 531 | { |
547 | { |
| 532 | EnableCHT(DISABLE); |
548 | EnableCHT(DISABLE); |
| 533 | Power_CHT_Timer = HAL_GetTick() + 5000; |
549 | Power_CHT_Timer = HAL_GetTick() + 1000; |
| 534 | } |
550 | } |
| 535 | else |
551 | else |
| 536 | /* if the Power_CHT_Timer is set then wait for it to timeout, then power up CHT */ |
552 | /* if the Power_CHT_Timer is set then wait for it to timeout, then power up CHT */ |
| 537 | { |
553 | { |
| 538 | if ((Power_CHT_Timer > 0) && (HAL_GetTick() > Power_CHT_Timer)) |
554 | if ((Power_CHT_Timer > 0) && (HAL_GetTick() > Power_CHT_Timer)) |