Tasks, ISR, Pin refactoring and renaming
This commit is contained in:
@@ -11,13 +11,11 @@
|
||||
#include <channels.h>
|
||||
#include <devices.h>
|
||||
|
||||
void printTaskList() {
|
||||
void printTaskList()
|
||||
{
|
||||
char buffer[1024];
|
||||
|
||||
Serial.println("Task Name\tState\tPrio\tStack\tNum");
|
||||
|
||||
vTaskList(buffer);
|
||||
|
||||
Serial.println(buffer);
|
||||
}
|
||||
|
||||
@@ -32,7 +30,8 @@ void setup()
|
||||
|
||||
// Print Processor Info
|
||||
LOG_INFO("ESP32 Chip:", ESP.getChipModel());
|
||||
if (psramFound()){
|
||||
if (psramFound())
|
||||
{
|
||||
LOG_INFO("ESP32 PSram Found");
|
||||
LOG_INFO("ESP32 PSram:", ESP.getPsramSize());
|
||||
psramInit();
|
||||
@@ -43,51 +42,96 @@ void setup()
|
||||
|
||||
// Initialize Interrupt pins on PICKUP detectors
|
||||
initTriggerPinsInputs();
|
||||
initTriggerPinMapping();
|
||||
// Initialize Interrupt pins on SPARK detectors
|
||||
initSparkPinInputs();
|
||||
initSparkPinMapping();
|
||||
}
|
||||
|
||||
void loop()
|
||||
{
|
||||
// global variables
|
||||
bool running = true;
|
||||
rtTaskParams taskA_params, taskB_params;
|
||||
Devices dev;
|
||||
QueueHandle_t rt_taskA_queue = xQueueCreate(10, sizeof(ignitionBoxStatus));
|
||||
rtTaskParams taskA_params {
|
||||
.rt_running = true,
|
||||
.dev = &dev,
|
||||
.rt_queue = rt_taskA_queue,
|
||||
.rt_int = rtTaskInterrupts{
|
||||
.isr_ptr = trig_isr_a,
|
||||
.trig_pin_12p = TRIG_PIN_A12P,
|
||||
.trig_pin_12n = TRIG_PIN_A12N,
|
||||
.trig_pin_34p = TRIG_PIN_A34P,
|
||||
.trig_pin_34n = TRIG_PIN_A34N,
|
||||
.spark_pin_12 = SPARK_PIN_A12,
|
||||
.spark_pin_34 = SPARK_PIN_A34},
|
||||
.rt_resets = rtTaskResets{
|
||||
.rst_io_12p = RST_EXT_A12P,
|
||||
.rst_io_12n = RST_EXT_A12N,
|
||||
.rst_io_34p = RST_EXT_A34P,
|
||||
.rst_io_34n = RST_EXT_A34N}
|
||||
};
|
||||
#ifndef TEST
|
||||
QueueHandle_t rt_taskB_queue = xQueueCreate(10, sizeof(ignitionBoxStatus));
|
||||
rtTaskParams taskB_params {
|
||||
.rt_running = true,
|
||||
.dev = &dev,
|
||||
.rt_queue = rt_taskB_queue,
|
||||
.rt_int = rtTaskInterrupts{
|
||||
.isr_ptr = trig_isr_a,
|
||||
.trig_pin_12p = TRIG_PIN_B12P,
|
||||
.trig_pin_12n = TRIG_PIN_B12N,
|
||||
.trig_pin_34p = TRIG_PIN_B34P,
|
||||
.trig_pin_34n = TRIG_PIN_B34N,
|
||||
.spark_pin_12 = SPARK_PIN_B12,
|
||||
.spark_pin_34 = SPARK_PIN_B34},
|
||||
.rt_resets = rtTaskResets{
|
||||
.rst_io_12p = RST_EXT_B12P,
|
||||
.rst_io_12n = RST_EXT_B12N,
|
||||
.rst_io_34p = RST_EXT_B34P,
|
||||
.rst_io_34n = RST_EXT_B34N}
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifndef TEST
|
||||
// Init 2 SPI interfaces
|
||||
// Init 2 SPI interfaces
|
||||
bool spiA_ok = true;
|
||||
SPIClass SPI_A(FSPI);
|
||||
spiA_ok = SPI_A.begin(SPI_A_SCK, SPI_A_MISO, SPI_A_MOSI);
|
||||
|
||||
bool spiB_ok = true;
|
||||
#ifndef TEST
|
||||
SPIClass SPI_B(HSPI);
|
||||
if (!SPI_A.begin(SPI_A_SCK, SPI_A_MISO, SPI_A_MOSI) || !SPI_B.begin(SPI_A_SCK, SPI_A_MISO, SPI_A_MOSI)) {
|
||||
spiB_ok = SPI_B.begin(SPI_B_SCK, SPI_B_MISO, SPI_B_MOSI);
|
||||
#endif
|
||||
if (!spiA_ok || !spiB_ok)
|
||||
{
|
||||
LOG_ERROR("Unable to Initialize SPI Busses");
|
||||
LOG_ERROR("5 seconds to restart...");
|
||||
vTaskDelay(pdMS_TO_TICKS(5000));
|
||||
esp_restart();
|
||||
}
|
||||
#endif
|
||||
|
||||
pinMode(POT_A_CS, OUTPUT); // Temporary!
|
||||
pinMode(POT_B_CS, OUTPUT); // Temporary!
|
||||
LOG_INFO("Init SPI [OK]");
|
||||
|
||||
// Init ADC_A
|
||||
// dev.adc_a = new ADS1256(ADC_A_DRDY, ADC_A_RST, ADC_A_SYNC, ADC_A_CS, 2.5, &SPI_A);
|
||||
// dev.adc_a->InitializeADC();
|
||||
// dev.adc_a->setPGA(PGA_1);
|
||||
// dev.adc_a->setDRATE(DRATE_1000SPS);
|
||||
|
||||
dev.adc_a = new ADS1256(ADC_A_DRDY, ADC_A_RST, ADC_A_SYNC, ADC_A_CS, 2.5, &SPI_A);
|
||||
dev.adc_a->InitializeADC();
|
||||
dev.adc_a->setPGA(PGA_1);
|
||||
dev.adc_a->setDRATE(DRATE_1000SPS);
|
||||
|
||||
#ifndef TEST
|
||||
// Init ADC_B
|
||||
// dev.adc_a = new ADS1256(ADC_B_DRDY, ADC_B_RST, ADC_B_SYNC, ADC_B_CS, 2.5, &SPI_B);
|
||||
// dev.adc_a->InitializeADC();
|
||||
// dev.adc_a->setPGA(PGA_1);
|
||||
// dev.adc_a->setDRATE(DRATE_1000SPS);
|
||||
dev.adc_a = new ADS1256(ADC_B_DRDY, ADC_B_RST, ADC_B_SYNC, ADC_B_CS, 2.5, &SPI_B);
|
||||
dev.adc_a->InitializeADC();
|
||||
dev.adc_a->setPGA(PGA_1);
|
||||
dev.adc_a->setDRATE(DRATE_1000SPS);
|
||||
#endif
|
||||
|
||||
LOG_INFO("Init ADC [OK]");
|
||||
|
||||
// Ignition A on Core 0
|
||||
auto ignA_task_success = xTaskCreatePinnedToCore(
|
||||
ignitionA_task,
|
||||
"ignitionA_task",
|
||||
auto ignA_task_success = pdPASS;
|
||||
ignA_task_success = xTaskCreatePinnedToCore(
|
||||
rtIgnitionTask,
|
||||
"rtIgnitionTask_boxA",
|
||||
TASK_STACK,
|
||||
(void *)&taskA_params,
|
||||
TASK_PRIORITY,
|
||||
@@ -96,14 +140,16 @@ void loop()
|
||||
|
||||
// Ignition B on Core 1
|
||||
auto ignB_task_success = pdPASS;
|
||||
// auto ignB_task_success = xTaskCreatePinnedToCore(
|
||||
// ignitionB_task,
|
||||
// "ignitionB_task",
|
||||
// TASK_STACK,
|
||||
// (void *)&taskB_params,
|
||||
// TASK_PRIORITY, // priorità leggermente più alta
|
||||
// &trigA_TaskHandle,
|
||||
// CORE_1);
|
||||
#ifndef TEST
|
||||
ignB_task_success = xTaskCreatePinnedToCore(
|
||||
rtIgnitionTask,
|
||||
"rtIgnitionTask_boxA",
|
||||
TASK_STACK,
|
||||
(void *)&taskB_params,
|
||||
TASK_PRIORITY, // priorità leggermente più alta
|
||||
&trigB_TaskHandle,
|
||||
CORE_1);
|
||||
#endif
|
||||
|
||||
if ((ignA_task_success && ignB_task_success) != pdPASS)
|
||||
{
|
||||
@@ -111,14 +157,15 @@ void loop()
|
||||
LOG_ERROR("5 seconds to restart...");
|
||||
vTaskDelay(pdMS_TO_TICKS(5000));
|
||||
esp_restart();
|
||||
}
|
||||
LOG_INFO("Real Time Tasks A&B initialized");
|
||||
}
|
||||
|
||||
LOG_INFO("Real Time Tasks A & B initialized");
|
||||
|
||||
////////////////////// MAIN LOOP //////////////////////
|
||||
uint32_t count(0);
|
||||
while (running)
|
||||
{
|
||||
//printTaskList();
|
||||
// printTaskList();
|
||||
delay(10000);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user