From 4282b9967cb6395d72207a2c4985005a91354299 Mon Sep 17 00:00:00 2001 From: jhchun Date: Tue, 25 Aug 2026 18:17:56 +0900 Subject: [PATCH] =?UTF-8?q?piezo=20power=20on/off=20=EC=8B=9C=EC=A0=90=20?= =?UTF-8?q?=EC=A1=B0=EC=A0=95(=EC=A0=84=EB=A0=A5=20=EC=A0=88=EA=B0=90)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - on 구간 최소화 --- src/command/handlers/cmd_piezo.c | 10 ++++++++-- src/measurement/piezo_measure.c | 6 +++--- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/command/handlers/cmd_piezo.c b/src/command/handlers/cmd_piezo.c index 5a59342..b42e379 100644 --- a/src/command/handlers/cmd_piezo.c +++ b/src/command/handlers/cmd_piezo.c @@ -64,7 +64,11 @@ int cmd_mbb(const uint8_t *data, uint8_t data_len) cmd_send_response_bundle((uint16_t)batt_mv, accel, gyro, temp_cdeg); DBG_PRINTF("[MBB] piezo sweep start\r\n"); + status = piezo_measure_sweep(); + + piezo_power_off(); + if (status == ECHO_STATUS_OK) { for (uint8_t ch = 0; ch < PIEZO_NUM_CHANNELS; ch++) @@ -75,7 +79,7 @@ int cmd_mbb(const uint8_t *data, uint8_t data_len) } } - piezo_power_off(); + DBG_PRINTF("[MBB] done\r\n"); cmd_send_response_u16("raa:", (uint16_t)status); // 최종 상태 raa: 전송 DBG_PRINTF("[CMD] mbb status=0x%04X\r\n", status); @@ -123,6 +127,9 @@ int cmd_mtb(const uint8_t *data, uint8_t data_len) { DBG_PRINTF("[MTB] piezo sweep start\r\n"); status = piezo_measure_sweep(); + + piezo_power_off(); + if (status == ECHO_STATUS_OK) { for (uint8_t ch = 0; ch < PIEZO_NUM_CHANNELS; ch++) @@ -157,7 +164,6 @@ int cmd_mtb(const uint8_t *data, uint8_t data_len) } DBG_PRINTF("[CMD] mtb status=0x%04X\r\n", status); - piezo_power_off(); DBG_PRINTF("[CMD] mtb status=0x%04X rim=%u\r\n", status, rim_count); processing = false; diff --git a/src/measurement/piezo_measure.c b/src/measurement/piezo_measure.c index 7db90e9..9b60305 100644 --- a/src/measurement/piezo_measure.c +++ b/src/measurement/piezo_measure.c @@ -167,9 +167,6 @@ int piezo_measure_start_session(void) return ECHO_STATUS_PIEZO; } - piezo_power_on(); - k_msleep(PIEZO_POWER_STABILIZE_MS); - err = echo_adc_init(); if (err) { @@ -233,6 +230,9 @@ int piezo_measure_sweep(void) if (ch == 0U) // 채널 0 시작 전에만 dummy burst + ADC capture 수행 { + piezo_power_on(); + k_msleep(PIEZO_POWER_STABILIZE_MS); + // Dummy burst + ADC caputre /* for (uint8_t dummy = 0; dummy < PIEZO_DUMMY_CAPTURE_COUNT; dummy++)