Task A+B concurrency <check ok without ADC
This commit is contained in:
@@ -17,57 +17,65 @@ void rtIgnitionTask(void *pvParameters)
|
||||
LOG_ERROR("Null rt_task_ptr parameters");
|
||||
vTaskDelete(NULL);
|
||||
}
|
||||
LOG_INFO("rtTask Params OK");
|
||||
|
||||
|
||||
// Task Parameters and Devices
|
||||
rtTaskParams *params = (rtTaskParams *)pvParameters;
|
||||
const rtTaskInterrupts rt_int = params->rt_int; // copy to avoid external override
|
||||
const rtTaskResets rt_rst = params->rt_resets; // copy to avoid external override
|
||||
QueueHandle_t rt_queue = params->rt_queue;
|
||||
TaskHandle_t rt_handle_ptr = *params->rt_handle_ptr;
|
||||
Devices *dev = params->dev;
|
||||
ADS1256 *adc = dev->adc_a;
|
||||
PCA9555 *io = dev->io;
|
||||
|
||||
TaskStatus_t rt_task_info;
|
||||
vTaskGetInfo(NULL, &rt_task_info, pdFALSE, eInvalid);
|
||||
|
||||
const auto rt_task_name = pcTaskGetName(rt_task_info.xHandle);
|
||||
LOG_INFO("rtTask Params OK [", rt_task_name, "]");
|
||||
|
||||
ignitionBoxStatus ign_box_sts;
|
||||
|
||||
// Variables for ISR, static to be fixed in memory locations
|
||||
static isrParams isr_params_t12p{
|
||||
isrParams isr_params_t12p{
|
||||
.flag = TRIG_FLAG_12P,
|
||||
.ign_stat = &ign_box_sts,
|
||||
.rt_handle_ptr = rt_handle_ptr};
|
||||
static isrParams isr_params_t12n{
|
||||
.rt_handle_ptr = rt_task_info.xHandle};
|
||||
isrParams isr_params_t12n{
|
||||
.flag = TRIG_FLAG_12N,
|
||||
.ign_stat = &ign_box_sts,
|
||||
.rt_handle_ptr = rt_handle_ptr};
|
||||
static isrParams isr_params_t34p{
|
||||
.rt_handle_ptr = rt_task_info.xHandle};
|
||||
isrParams isr_params_t34p{
|
||||
.flag = TRIG_FLAG_34P,
|
||||
.ign_stat = &ign_box_sts,
|
||||
.rt_handle_ptr = rt_handle_ptr};
|
||||
static isrParams isr_params_t34n{
|
||||
.rt_handle_ptr = rt_task_info.xHandle};
|
||||
isrParams isr_params_t34n{
|
||||
.flag = TRIG_FLAG_34N,
|
||||
.ign_stat = &ign_box_sts,
|
||||
.rt_handle_ptr = rt_handle_ptr};
|
||||
static isrParams isr_params_sp12{
|
||||
.rt_handle_ptr = rt_task_info.xHandle};
|
||||
isrParams isr_params_sp12{
|
||||
.flag = SPARK_FLAG_12,
|
||||
.ign_stat = &ign_box_sts,
|
||||
.rt_handle_ptr = rt_handle_ptr};
|
||||
static isrParams isr_params_sp34{
|
||||
.rt_handle_ptr = rt_task_info.xHandle};
|
||||
isrParams isr_params_sp34{
|
||||
.flag = SPARK_FLAG_34,
|
||||
.ign_stat = &ign_box_sts,
|
||||
.rt_handle_ptr = rt_handle_ptr};
|
||||
.rt_handle_ptr = rt_task_info.xHandle};
|
||||
|
||||
LOG_INFO("rtTask ISR Params OK");
|
||||
LOG_DEBUG("rtTask HDL Params OK, HDL* [", (uint32_t)rt_task_info.xHandle, "]");
|
||||
LOG_DEBUG("rtTask ISR Params OK, ISR* [", (uint32_t)rt_int.isr_ptr, "]");
|
||||
LOG_DEBUG("rtTask QUE Params OK, QUE* [", (uint32_t)rt_queue, "]");
|
||||
|
||||
// Create esp_timer for microsecond precision timeout
|
||||
esp_timer_handle_t timeout_timer;
|
||||
esp_timer_create_args_t timer_args = {
|
||||
.callback = spark_timeout_callback,
|
||||
.arg = (void *)rt_handle_ptr,
|
||||
.arg = (void *)rt_task_info.xHandle,
|
||||
.dispatch_method = ESP_TIMER_TASK,
|
||||
.name = "spark_timeout"};
|
||||
esp_timer_create(&timer_args, &timeout_timer);
|
||||
|
||||
|
||||
// Attach Pin Interrupts
|
||||
attachInterruptArg(digitalPinToInterrupt(rt_int.trig_pin_12p), rt_int.isr_ptr, (void *)&isr_params_t12p, RISING);
|
||||
attachInterruptArg(digitalPinToInterrupt(rt_int.trig_pin_12n), rt_int.isr_ptr, (void *)&isr_params_t12n, RISING);
|
||||
@@ -76,7 +84,7 @@ void rtIgnitionTask(void *pvParameters)
|
||||
attachInterruptArg(digitalPinToInterrupt(rt_int.spark_pin_12), rt_int.isr_ptr, (void *)&isr_params_sp12, RISING);
|
||||
attachInterruptArg(digitalPinToInterrupt(rt_int.spark_pin_34), rt_int.isr_ptr, (void *)&isr_params_sp34, RISING);
|
||||
|
||||
LOG_INFO("rtTask ISR Attach OK");
|
||||
LOG_INFO("rtTask ISR Attach OK [", rt_task_name, "]");
|
||||
|
||||
// Global rt_task_ptr variables
|
||||
bool first_cycle = true;
|
||||
|
||||
Reference in New Issue
Block a user