타이밍 최적화

- 온도 측정, Piezo 측정 사이 딜레이 줄이기
- Piezo 한 채널에서 평균화를 위한 반복 측정 사이 딜레이 줄이기

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
jhChun
2026-03-20 10:43:59 +09:00
parent 1f1c4b0b25
commit 310ca152cf
5 changed files with 22 additions and 14 deletions

View File

@@ -507,7 +507,8 @@ int imu_read_direct(void)
{
uint8_t pwr_cmd[2] = { 0x1F, 0x0F }; /* reg=0x1F, val=0x0F */
icm42670_twi_tx(IMU_I2C_ADDR, pwr_cmd, 2, false);
nrf_delay_ms(80); /* 자이로 스타트업: 최소 45ms + 안전 마진 */
//nrf_delay_ms(80); /* 자이로 스타트업: 최소 45ms + 안전 마진 */
dr_sd_delay_ms(80);
}
/* ACCEL_DATA_X1(0x0B)부터 12바이트 연속 읽기 (0x0B~0x16) */

View File

@@ -1576,6 +1576,9 @@ void dr_binary_tx_safe(uint8_t const *ble_bin_buff, uint16_t length) // BLE
}
} while (retry_count < MAX_RETRIES);
if (retry_count > 0) {
DBG_PRINTF("[BLE TX] retry=%u (+%ums)\r\n", retry_count, retry_count * 5);
}
if (retry_count >= MAX_RETRIES) { // 최대 재시도(100회) 초과 시 해당 패킷 드롭, 연결은 유지
DBG_PRINTF("[BLE TX] FAIL %u retries\r\n", retry_count);
data_tx_in_progress = false;

View File

@@ -228,15 +228,21 @@ void dr_piezo_power_on(void)
DBG_PRINTF("[PIEZO] Power ON: +/-20V ready\r\n");
}
/* 피에조 전원 OFF: TX 비활성화 DC/DC 컨버터 차단 */
/* 피에조 전원 OFF: TX 비활성화 → MUX 비활성화 → DC/DC 컨버터 차단 */
void dr_piezo_power_off(void)
{
dr_piezo_disable();
/* MUX enable 핀 클리어: select_channel() 이후 HIGH로 남은 핀 해제 */
nrf_gpio_pin_clear(DR_PIEZO_EN_MUXA);
nrf_gpio_pin_clear(DR_PIEZO_EN_MUXB);
nrf_gpio_pin_clear(DR_PIEZO_MUX_SEL0);
nrf_gpio_pin_clear(DR_PIEZO_MUX_SEL1);
nrf_gpio_pin_clear(DR_PIEZO_PWR_EN);
m_power_enabled = false;
DBG_PRINTF("[PIEZO] Power OFF\r\n");
}