do 2 hugh

This commit is contained in:
awe
2026-05-08 13:55:19 +03:00
parent f7971c874d
commit 997b888636

View File

@ -1153,6 +1153,7 @@ constexpr uint32_t kE502DiSyn2Mask =
constexpr uint32_t kE502Digital1Mask = (static_cast<uint32_t>(1U) << 0U);
constexpr uint32_t kE502Digital2Mask = (static_cast<uint32_t>(1U) << 1U);
constexpr uint32_t kE502Do1Mask = (static_cast<uint32_t>(1U) << 0U);
constexpr uint32_t kE502Do2Mask = (static_cast<uint32_t>(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) ||