Tasks work in progress

This commit is contained in:
Emanuele Trabattoni
2026-03-25 18:22:02 +01:00
parent bece80ad6c
commit f84fcfffbb
3 changed files with 73 additions and 9 deletions

View File

@@ -7,9 +7,15 @@
// ISR
#include "isr.h"
// DEVICES
#include "devices.h"
const auto spark_timeout_max = 1;
void ignitionA_task(void *pvParameters) {
Devices* dev = (Devices*) pvParameters;
ADS1256* adc = dev->adc;
uint32_t pickup_flag;
uint32_t spark_flag;
@@ -43,6 +49,9 @@ void ignitionA_task(void *pvParameters) {
continue;
}
bool new_data12 = false;
bool new_data34 = false;
switch (pickup_flag) {
case TRIG_FLAG_A12P: {
// Timeout not occourred, expected POSITIVE edge spark OCCOURRED
@@ -71,8 +80,6 @@ void ignitionA_task(void *pvParameters) {
}
// Timeout occourred, expected POSITIVE edge spark NOT OCCOURRED
else if (spark_timeout == pdFAIL && expected_negative12) {
ignA_status.trig12_start = 0;
ignA_status.trig12_end = 0;
ignA_status.soft12_engaged = false;
ignA_status.spark12_status = sparkStatus::SPARK_NEG_FAIL;
}
@@ -81,9 +88,8 @@ void ignitionA_task(void *pvParameters) {
ignA_status.soft12_engaged = true;
ignA_status.spark12_status = sparkStatus::SPARK_NEG_UNEXPECTED;
}
// Save status on circular buffer
new_data12 = true;
break;
}
@@ -94,6 +100,21 @@ void ignitionA_task(void *pvParameters) {
LOG_ERROR("Invalid A Interrupt");
}
vTaskDelay(pdMS_TO_TICKS(1)); // delay 1ms to allow peak detectors to charge
if (new_data12) {
// read adc channels: pickup12, out12 [ pos + neg ]
ignA_status.volts12_pickup = adcReadChannel(adc, PICKUP_IN_A12);
ignA_status.volts12_out = adcReadChannel(adc, PICKUP_OUT_A12);
// reset peak detectors
digitalWrite(RST_A12P, HIGH);
digitalWrite(RST_A12N, HIGH);
vTaskDelay(pdMS_TO_TICKS(1));
digitalWrite(RST_A12P, HIGH);
digitalWrite(RST_A12N, HIGH);
// save on circluar buffer 12
}
}
}