- 배터리, 온도 모두 오버샘플링 X4 및 TACQ=10us 적용 - 배터리 측정 시 SAADC 콜백 완료 최대 100ms 대기, 콜백 오면 즉시 탈출(온도 측정 시와 동일) - 전체 측정 시 SAADC 점유 및 충돌 방지
42 lines
1.6 KiB
C
42 lines
1.6 KiB
C
/*******************************************************************************
|
|
* @file battery_saadc.h
|
|
* @author CandyPops Co.
|
|
* @version V1.0.0
|
|
* @date 2022-09-05
|
|
* @brief
|
|
******************************************************************************/
|
|
|
|
/*******************************************************************************
|
|
* [헤더 개요] 배터리 전압 SAADC 측정 인터페이스
|
|
*
|
|
* nRF52840 SAADC를 이용한 배터리 전압 측정 API를 선언한다.
|
|
*
|
|
* 주요 API:
|
|
* - battery_level_meas() : 배터리 전압 1회 측정 (AIN2)
|
|
* - battery_timer_init/start/stop() : 5초 주기 배터리 모니터링 타이머 제어
|
|
*
|
|
* LOW_BATTERY_VOLTAGE(3500mV) 이하가 10회 연속 감지되면 자동 전원 OFF
|
|
******************************************************************************/
|
|
|
|
#ifndef _BATTERY_SAADC_H_
|
|
#define _BATTERY_SAADC_H_
|
|
|
|
/* 저전압 판정 임계값 (mV) — 이 값 이하가 10회 연속이면 자동 전원 OFF */
|
|
#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초 반복 타이머 시작 */
|
|
void battery_timer_start(void);
|
|
/** @brief 배터리 모니터링 타이머 정지 */
|
|
void battery_timer_stop(void);
|
|
/** @brief 배터리 모니터링 타이머 초기화 (앱 시작 시 1회 호출) */
|
|
void battery_timer_init(void);
|
|
|
|
#endif //_BATTERY_SAADC_H_
|
|
|