Test OK Channel A

This commit is contained in:
Emanuele Trabattoni
2026-04-01 12:31:29 +02:00
parent ebff6281af
commit 48df6a509d
3 changed files with 20 additions and 16 deletions

View File

@@ -10,9 +10,11 @@ TaskHandle_t main_t = NULL;
static uint32_t count = 0; static uint32_t count = 0;
#define FREQUENCY 100000 // 100 KHz #define FREQUENCY 100000 // 100 KHz
//#define PERIOD_US 1000000 / FREQUENCY
#define PERIOD_US 10 #define PERIOD_US 10
#define SPARK_DLY_MIN 10
#define SPARK_DLY_MAX 490
static const std::map<const uint32_t, const char *> pin2Name = { static const std::map<const uint32_t, const char *> pin2Name = {
{PIN_TRIG_A12P, "HIGH_PIN_TRIG_A12P"}, {PIN_TRIG_A12P, "HIGH_PIN_TRIG_A12P"},
{~PIN_TRIG_A12P, "LOW_PIN_TRIG_A12P"}, {~PIN_TRIG_A12P, "LOW_PIN_TRIG_A12P"},
@@ -34,8 +36,8 @@ static timerStatus stsA = {
.pause_long_us = 10000, .pause_long_us = 10000,
.pause_short_us = 1000, .pause_short_us = 1000,
.coil_pulse_us = 500, .coil_pulse_us = 500,
.spark_pulse_us = 100, .spark_pulse_us = 50,
.spark_delay_us = 100, .spark_delay_us = 10,
.main_task = NULL}; .main_task = NULL};
void setup() void setup()
@@ -58,10 +60,9 @@ void setup()
pinMode(SPARK_B12, OUTPUT); pinMode(SPARK_B12, OUTPUT);
pinMode(SPARK_B34, OUTPUT); pinMode(SPARK_B34, OUTPUT);
pinMode(12, ANALOG); pinMode(SPARK_DELAY_POT, ANALOG);
stsA.main_task = xTaskGetCurrentTaskHandleForCore(1); stsA.main_task = xTaskGetCurrentTaskHandleForCore(1);
// Timer: 80MHz / 80 = 1MHz → 1 tick = 1 µs
timerA = timerBegin(FREQUENCY); timerA = timerBegin(FREQUENCY);
timerAttachInterruptArg(timerA, &onTimer, (void *)&stsA); timerAttachInterruptArg(timerA, &onTimer, (void *)&stsA);
timerAlarm(timerA, 1, true, 0); timerAlarm(timerA, 1, true, 0);
@@ -72,11 +73,11 @@ void setup()
void loop() void loop()
{ {
LOG_INFO("Loop: ", count++); LOG_INFO("Loop: ", count++);
uint32_t spark_delay = (uint32_t)(map(analogRead(12), 0, 4096, 100, 800) / PERIOD_US); uint32_t spark_delay = (uint32_t)(map(analogRead(SPARK_DELAY_POT), 0, 4096, SPARK_DLY_MIN, SPARK_DLY_MAX) / PERIOD_US);
stsA.spark_delay_us = spark_delay * PERIOD_US; stsA.spark_delay_us = spark_delay * PERIOD_US;
if (stsA.spark_delay_us > 500) { if (stsA.spark_delay_us > (SPARK_DLY_MIN + SPARK_DLY_MAX) / 2) {
stsA.soft_start = true; stsA.soft_start = true;
stsA.spark_delay_us -= 500; stsA.spark_delay_us -= (SPARK_DLY_MIN + SPARK_DLY_MAX) / 2;
} else { } else {
stsA.soft_start = false; stsA.soft_start = false;
} }

View File

@@ -17,3 +17,6 @@
#define SPARK_B12 4 #define SPARK_B12 4
#define SPARK_B34 5 #define SPARK_B34 5
// Pot
#define SPARK_DELAY_POT 12

View File

@@ -105,17 +105,10 @@ void onTimer(void *arg)
{ {
// xTaskNotifyFromISR(task, PIN_TRIG_A34P, eSetValueWithOverwrite, &xHigherPriorityTaskWoken); // xTaskNotifyFromISR(task, PIN_TRIG_A34P, eSetValueWithOverwrite, &xHigherPriorityTaskWoken);
digitalWrite(PIN_TRIG_A34P, HIGH); digitalWrite(PIN_TRIG_A34P, HIGH);
params->coil34p_high; params->coil34p_high = true;;
wait_sent = false; wait_sent = false;
} }
if (params->state_time >= params->coil_pulse_us && params->coil34p_high)
{
// xTaskNotifyFromISR(task, ~PIN_TRIG_A34P, eSetValueWithOverwrite, &xHigherPriorityTaskWoken);
digitalWrite(PIN_TRIG_A34P, LOW);
params->coil34p_high = false;
}
if (!params->soft_start) if (!params->soft_start)
{ {
if (params->state_time == params->spark_delay_us) if (params->state_time == params->spark_delay_us)
@@ -131,6 +124,13 @@ void onTimer(void *arg)
} }
} }
if (params->state_time >= params->coil_pulse_us && params->coil34p_high)
{
// xTaskNotifyFromISR(task, ~PIN_TRIG_A34P, eSetValueWithOverwrite, &xHigherPriorityTaskWoken);
digitalWrite(PIN_TRIG_A34P, LOW);
params->coil34p_high = false;
}
if (params->state_time >= params->pause_short_us) if (params->state_time >= params->pause_short_us)
{ {
params->state = S_34N; params->state = S_34N;