From 997b888636284ffaff5391e51efd09b4b636bce7 Mon Sep 17 00:00:00 2001 From: awe Date: Fri, 8 May 2026 13:55:19 +0300 Subject: [PATCH] do 2 hugh --- main.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/main.cpp b/main.cpp index 8d9b7d0..2f2a86d 100644 --- a/main.cpp +++ b/main.cpp @@ -1153,6 +1153,7 @@ constexpr uint32_t kE502DiSyn2Mask = constexpr uint32_t kE502Digital1Mask = (static_cast(1U) << 0U); constexpr uint32_t kE502Digital2Mask = (static_cast(1U) << 1U); constexpr uint32_t kE502Do1Mask = (static_cast(1U) << 0U); +constexpr uint32_t kE502Do2Mask = (static_cast(1U) << 1U); constexpr uint32_t kDo1TogglePeriodTicks = 2U; constexpr uint32_t kDo1CyclePatternWords = kDo1TogglePeriodTicks * 2U; constexpr uint32_t kStreamInputAdcFlag = 0x80000000U; @@ -1777,6 +1778,7 @@ int run(const Config& cfg) { expect_ok(api, api.SetDigInPullup(device.hnd, pullups), "Set digital input pullups/pulldowns"); expect_ok(api, api.Configure(device.hnd, 0), "Configure device"); + expect_ok(api, api.AsyncOutDig(device.hnd, kE502Do2Mask, 0U), "Force DO2 HIGH"); uint32_t enabled_streams = X502_STREAM_ADC | X502_STREAM_DIN; if (cfg.do1_toggle_per_frame) { enabled_streams |= X502_STREAM_DOUT; @@ -1816,6 +1818,7 @@ int run(const Config& cfg) { << " DO1 toggle per frame: " << (cfg.do1_toggle_per_frame ? std::string("enabled (hardware cyclic 00110011..., toggle every 2 ADC ticks)") : std::string("disabled")) << "\n" + << " DO2 state: forced HIGH\n" << " DOUT rate: " << (cfg.do1_toggle_per_frame ? std::to_string(actual_dout_freq_hz) + " Hz" : std::string("disabled")) << "\n" << " ADC range: +/-" << range_to_volts(cfg.range) << " V\n" @@ -1926,7 +1929,7 @@ int run(const Config& cfg) { } for (std::size_t i = 0; i < do1_cycle_pattern.size(); ++i) { - do1_cycle_pattern[i] = (i < kDo1TogglePeriodTicks) ? 0U : kE502Do1Mask; + do1_cycle_pattern[i] = ((i < kDo1TogglePeriodTicks) ? 0U : kE502Do1Mask) | kE502Do2Mask; } expect_ok(api, @@ -2794,7 +2797,11 @@ int run(const Config& cfg) { expect_ok(api, api.StreamsStop(device.hnd), "Stop streams"); device.streams_started = false; if (cfg.do1_toggle_per_frame) { - expect_ok(api, api.AsyncOutDig(device.hnd, 0U, ~kE502Do1Mask), "Force DO1 LOW after cyclic DOUT stop"); + expect_ok(api, + api.AsyncOutDig(device.hnd, kE502Do2Mask, ~(kE502Do1Mask | kE502Do2Mask)), + "Force DO1 LOW and keep DO2 HIGH after cyclic DOUT stop"); + } else { + expect_ok(api, api.AsyncOutDig(device.hnd, kE502Do2Mask, ~kE502Do2Mask), "Keep DO2 HIGH after streams stop"); } if ((cfg.stats_period_ms != 0U) && ((stats_raw_words != 0U) || (stats_adc_samples != 0U) ||