diff --git a/device_firmware/switch_controller/README.md b/device_firmware/switch_controller/README.md index cf0b550..5c62f1e 100644 --- a/device_firmware/switch_controller/README.md +++ b/device_firmware/switch_controller/README.md @@ -22,6 +22,12 @@ а не от того, какой порт сейчас излучает. Если у ключа больше двух состояний, лишние входы замыкаются джампером. +> Прошивка рассчитана **ровно на два положения** ключа +> (`stimulus_switch_positions: 2` на хосте). Хост технически допускает и 4 +> положения, но тогда положение перестаёт быть простым чередованием одного бита +> и потребуется контроллер на две управляющие линии — эта прошивка для такого +> режима не годится. + Если положению A соответствует лог. 1, а не 0 — поменяйте `kSwitchActiveLow` в [`src/main.cpp`](src/main.cpp). diff --git a/python_app/hardware_full/multi_device_service.py b/python_app/hardware_full/multi_device_service.py index aa1a729..7eae299 100644 --- a/python_app/hardware_full/multi_device_service.py +++ b/python_app/hardware_full/multi_device_service.py @@ -446,9 +446,15 @@ class MultiDeviceLibreVnaService: s11=s11, s21=s21, capture_start_ns=mock_sweep_start_ns, - capture_end_ns=time.monotonic_ns(), ) ) + # One shared window, as on real hardware: every combo of a collection comes + # out of the same synchronized cycle. Stamping each trace as it is built + # would instead spread the ends over the generation loop, which never + # happens natively and would mislead anyone reading mock captures. + mock_sweep_end_ns = time.monotonic_ns() + for trace in traces: + trace.capture_end_ns = mock_sweep_end_ns self._mock_phase += 0.05 return SweepCollection( collection_id=int(collection_id),