Test OK Channel A
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user