Piezo power off 타이밍 조정
- 기존: 커맨드 핸들러에서 응답 전송 후 off - 변경: piezo sweep 직후 off
This commit is contained in:
@@ -98,7 +98,7 @@ int cmd_mbb(const uint8_t *data, uint8_t data_len)
|
|||||||
cmd_send_response_u16("raa:", (uint16_t)status); // 최종 상태 raa: 전송
|
cmd_send_response_u16("raa:", (uint16_t)status); // 최종 상태 raa: 전송
|
||||||
DBG_PRINTF("[CMD] mbb status=0x%04X\r\n", status);
|
DBG_PRINTF("[CMD] mbb status=0x%04X\r\n", status);
|
||||||
|
|
||||||
piezo_power_off();
|
//piezo_power_off();
|
||||||
processing = false;
|
processing = false;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@@ -187,7 +187,7 @@ int cmd_mtb(const uint8_t *data, uint8_t data_len)
|
|||||||
|
|
||||||
DBG_PRINTF("[CMD] mtb status=0x%04X rim=%u\r\n", status, rim_count);
|
DBG_PRINTF("[CMD] mtb status=0x%04X rim=%u\r\n", status, rim_count);
|
||||||
|
|
||||||
piezo_power_off();
|
//piezo_power_off();
|
||||||
processing = false;
|
processing = false;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@@ -278,7 +278,7 @@ int cmd_maa(const uint8_t *data, uint8_t data_len)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
piezo_power_off();
|
//piezo_power_off();
|
||||||
cmd_send_response_u16("raa:", (uint16_t)status); // 최종 상태 raa: 전송
|
cmd_send_response_u16("raa:", (uint16_t)status); // 최종 상태 raa: 전송
|
||||||
DBG_PRINTF("[CMD] maa status=0x%04X\r\n", status);
|
DBG_PRINTF("[CMD] maa status=0x%04X\r\n", status);
|
||||||
|
|
||||||
|
|||||||
@@ -39,10 +39,10 @@
|
|||||||
#define PIEZO_AVG_INTER_BURST_GAP_US 500
|
#define PIEZO_AVG_INTER_BURST_GAP_US 500
|
||||||
|
|
||||||
/* real capture 전에 같은 채널에서 버스트+ADC capture를 버리는 횟수(dummy) */
|
/* real capture 전에 같은 채널에서 버스트+ADC capture를 버리는 횟수(dummy) */
|
||||||
#define PIEZO_DUMMY_CAPTURE_COUNT 1
|
#define PIEZO_DUMMY_CAPTURE_COUNT 3
|
||||||
|
|
||||||
/* 채널 0 시작 전 안정을 위한 추가 딜레이 */
|
/* 채널 0 시작 전 안정을 위한 추가 딜레이 */
|
||||||
#define PIEZO_CH0_WARMUP_TO_REAL_SETTLE_US 2000
|
#define PIEZO_CH0_WARMUP_TO_REAL_SETTLE_US 500
|
||||||
|
|
||||||
/* 6채널 sweep 결과 (각 채널의 평균 완료 후 최종만 저장) */
|
/* 6채널 sweep 결과 (각 채널의 평균 완료 후 최종만 저장) */
|
||||||
static uint16_t piezo_channels[PIEZO_NUM_CHANNELS][PIEZO_MEASURE_MAX_SAMPLES];
|
static uint16_t piezo_channels[PIEZO_NUM_CHANNELS][PIEZO_MEASURE_MAX_SAMPLES];
|
||||||
@@ -215,6 +215,7 @@ int piezo_measure_sweep(void)
|
|||||||
if (err)
|
if (err)
|
||||||
{
|
{
|
||||||
DBG_ERR("[PIEZO] mux fail ch=%d err=%d\r\n", ch, err);
|
DBG_ERR("[PIEZO] mux fail ch=%d err=%d\r\n", ch, err);
|
||||||
|
piezo_power_off();
|
||||||
return ECHO_STATUS_MUX;
|
return ECHO_STATUS_MUX;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -225,6 +226,7 @@ int piezo_measure_sweep(void)
|
|||||||
if (err)
|
if (err)
|
||||||
{
|
{
|
||||||
DBG_ERR("[ECHO] dummy read fail ch=%d err=%d\r\n", ch, err);
|
DBG_ERR("[ECHO] dummy read fail ch=%d err=%d\r\n", ch, err);
|
||||||
|
piezo_power_off();
|
||||||
return ECHO_STATUS_CAPTURE;
|
return ECHO_STATUS_CAPTURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -232,15 +234,19 @@ int piezo_measure_sweep(void)
|
|||||||
{
|
{
|
||||||
piezo_power_on();
|
piezo_power_on();
|
||||||
k_msleep(PIEZO_POWER_STABILIZE_MS);
|
k_msleep(PIEZO_POWER_STABILIZE_MS);
|
||||||
k_busy_wait(PIEZO_AVG_INTER_BURST_GAP_US);
|
|
||||||
piezo_burst_sw_freq(freq, cycles);
|
|
||||||
k_busy_wait(capture_delay_us);
|
|
||||||
err = echo_adc_capture(echo_capture, samples);
|
|
||||||
|
|
||||||
if (err)
|
for (uint8_t dummy = 0; dummy < PIEZO_DUMMY_CAPTURE_COUNT; dummy++)
|
||||||
{
|
{
|
||||||
DBG_ERR("[ECHO] dummy capture fail ch=%d err=%d\r\n", ch, err);
|
k_busy_wait(PIEZO_AVG_INTER_BURST_GAP_US);
|
||||||
return ECHO_STATUS_CAPTURE;
|
piezo_burst_sw_freq(freq, cycles);
|
||||||
|
k_busy_wait(capture_delay_us);
|
||||||
|
err = echo_adc_capture(echo_capture, samples);
|
||||||
|
if (err)
|
||||||
|
{
|
||||||
|
DBG_ERR("[ECHO] dummy capture fail ch=%d err=%d\r\n", ch, err);
|
||||||
|
piezo_power_off();
|
||||||
|
return ECHO_STATUS_CAPTURE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 마지막 dummy capture와 첫 real capture 사이에도 같은 회복 시간 + 추가 안정화
|
// 마지막 dummy capture와 첫 real capture 사이에도 같은 회복 시간 + 추가 안정화
|
||||||
@@ -268,6 +274,7 @@ int piezo_measure_sweep(void)
|
|||||||
if (err)
|
if (err)
|
||||||
{
|
{
|
||||||
DBG_ERR("[ECHO] capture fail ch=%d avg=%d err=%d\r\n", ch, a, err);
|
DBG_ERR("[ECHO] capture fail ch=%d avg=%d err=%d\r\n", ch, a, err);
|
||||||
|
piezo_power_off();
|
||||||
return ECHO_STATUS_CAPTURE;
|
return ECHO_STATUS_CAPTURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -287,6 +294,9 @@ int piezo_measure_sweep(void)
|
|||||||
//DBG_PRINTF("[SWEEP] ch=%d done\r\n", ch);
|
//DBG_PRINTF("[SWEEP] ch=%d done\r\n", ch);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 6채널 ADC capture가 모두 끝난 직후 전원 off (BLE 전송 전에 끊기)
|
||||||
|
piezo_power_off();
|
||||||
|
|
||||||
//DBG_PRINTF("[SWEEP] done\r\n");
|
//DBG_PRINTF("[SWEEP] done\r\n");
|
||||||
return ECHO_STATUS_OK;
|
return ECHO_STATUS_OK;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user