fix: don't manually re-arm SRQ in menu nav

This commit is contained in:
2025-12-04 16:28:50 +06:00
parent 9fed882f50
commit 329a648f9c

20
main.c
View File

@@ -2184,14 +2184,15 @@ static void enter_menu_mode(void) {
save_dmm_state(); save_dmm_state();
// Trigger Hold (T4) to make sure no new measurements // Trigger Hold (T4) to make sure no new measurements
// interrupt our display while we're going through the menu // interrupt our display while we're going through the menu
gpib_send(sys_cfg.dmm_addr, HP3478A_TRIG_HOLD); // also clear SRQ here manually so we don't increment menu entry
// the earlier we clear status bits, the better
gpib_send(sys_cfg.dmm_addr, HP3478A_TRIG_HOLD HP3478A_CMD_SRQ_CLEAR);
app.current_mode = MODE_MENU; app.current_mode = MODE_MENU;
app.menu_pos = MENU_REL; app.menu_pos = MENU_REL;
app.data.menu.timer = millis(); app.data.menu.timer = millis();
dmm_display("M: REL", HP3478A_DISP_TEXT_FAST); dmm_display("M: REL", HP3478A_DISP_TEXT_FAST);
gpib_send(sys_cfg.dmm_addr, HP3478A_CMD_MASK_BTN_ONLY HP3478A_CMD_SRQ_CLEAR);
} }
static void handle_feature_logic(void) { static void handle_feature_logic(void) {
@@ -2675,11 +2676,6 @@ static void handle_menu_navigation(void) {
// update display // update display
prepare_menu_base_string(); prepare_menu_base_string();
dmm_display(scratch.disp.full_cmd, HP3478A_DISP_TEXT_FAST); dmm_display(scratch.disp.full_cmd, HP3478A_DISP_TEXT_FAST);
// re-arm SRQ
gpib_send(sys_cfg.dmm_addr,
HP3478A_CMD_MASK_BTN_ONLY HP3478A_CMD_SRQ_CLEAR);
return; return;
} }
} }
@@ -2694,10 +2690,13 @@ static void handle_menu_navigation(void) {
if (dots > 3) dots = 3; if (dots > 3) dots = 3;
for (int i = 0; i < dots; i++) strcat(scratch.disp.full_cmd, "."); for (int i = 0; i < dots; i++) strcat(scratch.disp.full_cmd, ".");
}
dmm_display(scratch.disp.full_cmd, HP3478A_DISP_TEXT_FAST);
if (elapsed > sys_cfg.menu_commit_delay_ms) { // this does a strncmp every time :c
dmm_display(scratch.disp.full_cmd, HP3478A_DISP_TEXT_FAST);
}
if (elapsed <= sys_cfg.menu_commit_delay_ms) return;
// L0: main menu // L0: main menu
if (app.data.menu.layer == SUBMENU_NONE) { if (app.data.menu.layer == SUBMENU_NONE) {
if (app.menu_pos == MENU_TEMP) { if (app.menu_pos == MENU_TEMP) {
@@ -2750,7 +2749,6 @@ static void handle_menu_navigation(void) {
enter_feature_mode(MENU_TEMP); enter_feature_mode(MENU_TEMP);
return; return;
} }
}
} }
static void cmd_help(void) { static void cmd_help(void) {