온도 센서 콜백 대기 조건 변경

- parser.c: 콜백 완료 플래그 무한대기 -> 최대 100ms 대기, 콜백 오면 즉시 탈출
This commit is contained in:
jhChun
2026-03-24 17:59:58 +09:00
parent 880f1838ae
commit 4e880bca86

View File

@@ -92,6 +92,7 @@ extern int imu_read_direct(void); /* IMU 레지스터 직접 읽기 + BLE 전
extern volatile uint16_t info_batt; /* 배터리 전압 (mV) */ extern volatile uint16_t info_batt; /* 배터리 전압 (mV) */
extern volatile uint16_t info_temp; /* 온도 (°C x 100) */ extern volatile uint16_t info_temp; /* 온도 (°C x 100) */
extern volatile uint16_t info_imu[6]; /* IMU 6축 (accel XYZ + gyro XYZ) */ extern volatile uint16_t info_imu[6]; /* IMU 6축 (accel XYZ + gyro XYZ) */
extern volatile bool tmp235_saadc_done; /* TMP235 SAADC 콜백 완료 플래그 */
extern void pressure_all_level_meas(void); /* 압력 센서 전체 측정 */ extern void pressure_all_level_meas(void); /* 압력 센서 전체 측정 */
extern void battery_timer_stop(void); /* 배터리 타이머 중지 */ extern void battery_timer_stop(void); /* 배터리 타이머 중지 */
@@ -1003,6 +1004,9 @@ static int Cmd_maa(const ParsedCmd *cmd)
*/ */
static void all_sensors(void) static void all_sensors(void)
{ {
uint8_t *buf;
uint32_t timeout_cnt;
info4 = true; /* 센서값을 전역 변수에 저장 (BLE 전송 안 함) */ info4 = true; /* 센서값을 전역 변수에 저장 (BLE 전송 안 함) */
/* 1. 배터리 전압 측정 → info_batt에 저장 */ /* 1. 배터리 전압 측정 → info_batt에 저장 */
@@ -1019,15 +1023,18 @@ static void all_sensors(void)
dr_piezo_power_on(); dr_piezo_power_on();
} }
extern volatile bool tmp235_saadc_done;
tmp235_saadc_done = false; tmp235_saadc_done = false;
tmp235_voltage_level_meas(); tmp235_voltage_level_meas();
while (!tmp235_saadc_done) { dr_sd_delay_ms(1); } /* SAADC 콜백 완료 대기 */
for (timeout_cnt = 0; !tmp235_saadc_done && timeout_cnt < 100; timeout_cnt++)
{
dr_sd_delay_ms(1); /* 콜백 오면 즉시 탈출, 최대 100ms, 타임아웃 시 이전 값 또는 쓰레기값.. */
}
info4 = false; info4 = false;
/* rbb: 패킷 조립 및 전송 : [TAG 4B] [배터리 2B] [IMU 12B] [온도 2B] = 20바이트 = 10워드 */ /* rbb: 패킷 조립 및 전송 : [TAG 4B] [배터리 2B] [IMU 12B] [온도 2B] = 20바이트 = 10워드 */
uint8_t *buf = ble_bin_buffer; buf = ble_bin_buffer;
buf[0] = 'r'; buf[1] = 'b'; buf[2] = 'b'; buf[3] = ':'; buf[0] = 'r'; buf[1] = 'b'; buf[2] = 'b'; buf[3] = ':';
buf[4] = (uint8_t)(info_batt & 0xFF); buf[4] = (uint8_t)(info_batt & 0xFF);