From 47a31c1eb487df55ad1942a38f246503c4755e52 Mon Sep 17 00:00:00 2001 From: jhChun Date: Thu, 2 Apr 2026 11:27:28 +0900 Subject: [PATCH] =?UTF-8?q?SAADC=20=ED=83=80=EC=9D=B4=EB=B0=8D=20=EC=B6=A9?= =?UTF-8?q?=EB=8F=8C=EB=A1=9C=20=EC=9D=B8=ED=95=9C=20FW=20RESET=20?= =?UTF-8?q?=EB=B0=A9=EC=A7=80:=20=EB=B0=B0=ED=84=B0=EB=A6=AC=20=EC=A0=80?= =?UTF-8?q?=EC=A0=84=EC=95=95=20=EC=B8=A1=EC=A0=95=20=EC=A3=BC=EA=B8=B0=20?= =?UTF-8?q?=EB=B0=8F=20init=20=EC=8B=A4=ED=8C=A8=EC=8B=9C=20=EC=B2=98?= =?UTF-8?q?=EB=A6=AC=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 배터리 저전압 측정 주기 5초 -> 60초로 변경(충돌 확률 감소) - SAADC init 실패 시 APP_ERROR_CHECK -> 측정 스킵 처리 ***** 현재 에러 처리는 APP_ERROR_CHECK로 되어있는데, 에러 발생 시 APP_ERROR_CHECK에 걸리면 HardFault 무한 루프에 빠져서 기기가 먹통이 됨. 런타임 중 에러가 발생해도 안전하게 복구되도록 에러 처리 전환 필요함. ***** --- .../ble_peripheral/ble_app_bladder_patch/battery_saadc.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/project/ble_peripheral/ble_app_bladder_patch/battery_saadc.c b/project/ble_peripheral/ble_app_bladder_patch/battery_saadc.c index 22c6250..934ee9b 100644 --- a/project/ble_peripheral/ble_app_bladder_patch/battery_saadc.c +++ b/project/ble_peripheral/ble_app_bladder_patch/battery_saadc.c @@ -67,7 +67,7 @@ static nrf_saadc_value_t adc_buf; APP_TIMER_DEF(m_battery_loop_timer_id); /* 배터리 측정 주기: 5초 (밀리초 단위) */ -#define BATTERY_LOOP_INTERVAL 5000 +#define BATTERY_LOOP_INTERVAL 60000 /* 저전압 체크 플래그 — battery_loop에서 true로 설정, 핸들러에서 소비 */ bool low_battery_check = false; @@ -217,7 +217,9 @@ static void battery_configure(void) saadc_config.resolution = NRF_SAADC_RESOLUTION_12BIT; // 10 -> 12bit saadc_config.oversample = NRF_SAADC_OVERSAMPLE_4X; ret_code_t err_code = nrf_drv_saadc_init(&saadc_config, battery_event_handler); - APP_ERROR_CHECK(err_code); + if (err_code != NRF_SUCCESS) { + return; /* SAADC 사용 중 → 이번 측정 스킵, 다음 주기에 재시도 */ + } /* 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);