ADC Testing
This commit is contained in:
@@ -40,14 +40,13 @@ void rtIgnitionTask::rtIgnitionTask_realtime(void *pvParameters)
|
||||
QueueHandle_t rt_queue = params->rt_queue;
|
||||
Devices *dev = params->dev.get();
|
||||
ADS1256 *adc = params->name == "rtIgnTask_A" ? dev->m_adc_a.get() : dev->m_adc_b.get();
|
||||
std::mutex& spi_mutex = params->name == "rtIgnTask_A" ? dev->m_spi_a_mutex : dev->m_spi_b_mutex;
|
||||
ExternalIO* io = dev->m_ext_io.get();
|
||||
std::mutex &spi_mutex = params->name == "rtIgnTask_A" ? dev->m_spi_a_mutex : dev->m_spi_b_mutex;
|
||||
ExternalIO *io = dev->m_ext_io.get();
|
||||
|
||||
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, "]");
|
||||
LOG_INFO("rtTask Params OK [", params->name.c_str(), "]");
|
||||
|
||||
ignitionBoxStatus ign_box_sts;
|
||||
|
||||
@@ -98,7 +97,7 @@ void rtIgnitionTask::rtIgnitionTask_realtime(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 [", rt_task_name, "]");
|
||||
LOG_INFO("rtTask ISR Attach OK [", params->name.c_str(), "]");
|
||||
|
||||
// Global rt_task_ptr variables
|
||||
bool first_cycle = true;
|
||||
@@ -236,7 +235,7 @@ void rtIgnitionTask::rtIgnitionTask_realtime(void *pvParameters)
|
||||
// read adc channels: pickup12, out12 [ pos + neg ]
|
||||
if (adc) // read only if adc initialized
|
||||
{
|
||||
std::lock_guard<std::mutex> lock (spi_mutex);
|
||||
std::lock_guard<std::mutex> lock(spi_mutex);
|
||||
uint32_t start_adc_read = esp_timer_get_time();
|
||||
// from peak detector circuits
|
||||
ign_box_sts.coils12.peak_p_in = adcReadChannel(adc, ADC_CH_PEAK_12P_IN);
|
||||
@@ -256,10 +255,23 @@ void rtIgnitionTask::rtIgnitionTask_realtime(void *pvParameters)
|
||||
// outputs on io expander
|
||||
if (io)
|
||||
{
|
||||
// [TODO] code to reset sample and hold and arm trigger level detectors
|
||||
// Discharge Pulse
|
||||
io->extDigitalWrite(rt_rst.sh_disch_12, true);
|
||||
io->extDigitalWrite(rt_rst.sh_disch_34, true);
|
||||
delayMicroseconds(250);
|
||||
io->extDigitalWrite(rt_rst.sh_disch_12, false);
|
||||
io->extDigitalWrite(rt_rst.sh_disch_34, false);
|
||||
// Safety delay
|
||||
delayMicroseconds(500);
|
||||
// Re-Arm Pulse
|
||||
io->extDigitalWrite(rt_rst.sh_arm_12, true);
|
||||
io->extDigitalWrite(rt_rst.sh_arm_34, true);
|
||||
delayMicroseconds(250);
|
||||
io->extDigitalWrite(rt_rst.sh_arm_12, false);
|
||||
io->extDigitalWrite(rt_rst.sh_arm_34, false);
|
||||
}
|
||||
else
|
||||
vTaskDelay(pdMS_TO_TICKS(2));
|
||||
vTaskDelay(pdMS_TO_TICKS(c_io_time));
|
||||
|
||||
// send essage to main loop with ignition info, by copy so local static variable is ok
|
||||
if (rt_queue)
|
||||
@@ -272,7 +284,7 @@ void rtIgnitionTask::rtIgnitionTask_realtime(void *pvParameters)
|
||||
}
|
||||
// Delete the timeout timer
|
||||
esp_timer_delete(timeout_timer);
|
||||
LOG_WARN("rtTask Ending [", rt_task_name, "]");
|
||||
LOG_WARN("rtTask Ending [", params->name.c_str(), "]");
|
||||
// Ignition A Interrupts DETACH
|
||||
detachInterrupt(rt_int.trig_pin_12p);
|
||||
detachInterrupt(rt_int.trig_pin_12n);
|
||||
|
||||
Reference in New Issue
Block a user