Fixed spark timing compute
This commit is contained in:
@@ -34,13 +34,11 @@ void ignitionA_task(void *pvParameters) {
|
||||
&spark_flag, // valore ricevuto
|
||||
spark_timeout_max
|
||||
);
|
||||
// Save current time to compute delay from pickup to spark
|
||||
auto curr_time = esp_timer_get_time();
|
||||
|
||||
// A trigger from pickup 12 is followed by a spark event on 34 or vice versa pickup 34 triggers spark on 12
|
||||
if ((pickup_flag == TRIG_FLAG_A12P || pickup_flag == TRIG_FLAG_A12N) && spark_flag != SPARK_A12) {
|
||||
ignA_status.trig12_start = ignA_status.trig34_start = -1;
|
||||
ignA_status.trig12_end = ignA_status.trig34_end = -1;
|
||||
ignA_status.spark12_start = ignA_status.spark34_start = -1;
|
||||
ignA_status.spark12_delay = ignA_status.spark34_delay = -1;
|
||||
ignA_status.soft12_engaged = ignA_status.soft34_engaged = false;
|
||||
ignA_status.spark12_status = ignA_status.spark12_status = sparkStatus::SPARK_SYNC_FAIL;
|
||||
@@ -50,14 +48,12 @@ void ignitionA_task(void *pvParameters) {
|
||||
}
|
||||
|
||||
bool new_data12 = false;
|
||||
bool new_data34 = false;
|
||||
|
||||
|
||||
switch (pickup_flag) {
|
||||
case TRIG_FLAG_A12P: {
|
||||
// Timeout not occourred, expected POSITIVE edge spark OCCOURRED
|
||||
if (spark_timeout == pdPASS) {
|
||||
ignA_status.trig12_end = curr_time;
|
||||
ignA_status.spark12_delay = ignA_status.trig12_end - ignA_status.trig12_end;
|
||||
ignA_status.spark12_delay = ignA_status.spark12_start - ignA_status.trig12_start;
|
||||
ignA_status.soft12_engaged = false; // because spark on positive edge
|
||||
ignA_status.spark12_status = sparkStatus::SPARK_POS_OK; // do not wait for spark on negative edge
|
||||
}
|
||||
@@ -72,9 +68,8 @@ void ignitionA_task(void *pvParameters) {
|
||||
case TRIG_FLAG_A12N: {
|
||||
bool expected_negative12 = ignA_status.spark12_status == sparkStatus::SPARK_NEG_WAIT;
|
||||
// Timeout not occourred, expected NEGATIVE edge spark OCCOURRED
|
||||
if (spark_timeout == pdPASS && expected_negative12) {
|
||||
ignA_status.trig12_end = curr_time;
|
||||
ignA_status.spark12_delay = ignA_status.trig12_end - ignA_status.trig12_end;
|
||||
if (spark_timeout == pdPASS && expected_negative12) {
|
||||
ignA_status.spark12_delay = ignA_status.spark12_start - ignA_status.trig12_start;
|
||||
ignA_status.soft12_engaged = true;
|
||||
ignA_status.spark12_status == sparkStatus::SPARK_NEG_OK;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user