배터리 전압 TACQ 조정 및 콜백 대기 조건 변경

- 배터리, 온도 모두 오버샘플링 X4 및 TACQ=10us 적용
- 배터리 측정 시 SAADC 콜백 완료 최대 100ms 대기, 콜백 오면 즉시 탈출(온도 측정 시와 동일)
- 전체 측정 시 SAADC 점유 및 충돌 방지
This commit is contained in:
jhChun
2026-03-27 13:54:39 +09:00
parent 4c2948eb43
commit 7459fffc20
3 changed files with 17 additions and 3 deletions

View File

@@ -71,6 +71,9 @@ APP_TIMER_DEF(m_battery_loop_timer_id);
/* 저전압 체크 플래그 — battery_loop에서 true로 설정, 핸들러에서 소비 */
bool low_battery_check = false;
/* SAADC 콜백 완료 플래그 — all_sensors()에서 배터리 측정 완료 대기용 */
volatile bool battery_saadc_done = false;
/* info4: 전체 센서 데이터 수집 모드 플래그 */
extern bool info4; // main.c
@@ -139,6 +142,9 @@ void battery_event_handler( nrf_drv_saadc_evt_t const * p_event )
nrf_drv_saadc_uninit();
nrf_drv_saadc_channel_uninit(0);
/* 콜백 완료 알림 (all_sensors 대기 해제용) */
battery_saadc_done = true;
/* ADC값 → mV 변환 (매크로: ADC x 600/1023 x 6) */
batt_lvl_in_milli_volt_0 = BATTERY_RESULT_IN_MILLI_VOLTS(register_val);
@@ -214,7 +220,7 @@ static void battery_configure(void)
/* AIN2 채널 설정: 싱글엔드 입력, 1/6 gain, burst + TACQ 20μs */
nrf_saadc_channel_config_t config = NRF_DRV_SAADC_DEFAULT_CHANNEL_CONFIG_SE(NRF_SAADC_INPUT_AIN2);
config.burst = NRF_SAADC_BURST_ENABLED;
config.acq_time = NRF_SAADC_ACQTIME_20US; // TACQ test
config.acq_time = NRF_SAADC_ACQTIME_10US;
err_code = nrf_drv_saadc_channel_init(0, &config);
APP_ERROR_CHECK(err_code);

View File

@@ -25,6 +25,9 @@
#define LOW_BATTERY_VOLTAGE 3500 /* Low Battery 임계값 */
/** @brief 배터리 SAADC 콜백 완료 플래그 (all_sensors 대기용) */
extern volatile bool battery_saadc_done;
/** @brief 배터리 전압 1회 측정 시작 (비동기, 결과는 콜백에서 처리) */
void battery_level_meas(void);
/** @brief 배터리 모니터링 5초 반복 타이머 시작 */