현재 IMU 센서는 폴링 방식 적용

- app_raw_main.c: 인터럽트 방식 적용을 위한 레거시 파일
This commit is contained in:
jhChun
2026-03-26 11:06:52 +09:00
parent f1de268f26
commit ea595f87b7
6 changed files with 19 additions and 574 deletions

View File

@@ -472,7 +472,10 @@ extern const nrfx_twi_t m_twi_icm42670;
#define IMU_I2C_ADDR 0x68
#define REG_ACCEL_X1 0x0B /* ACCEL_DATA_X1 — 가속도 X축 상위 바이트 레지스터 */
/* Direct IMU register read — raw I2C, no DRDY, sends rsp: via BLE */
/* --------------------------------------------------------------------------------------
* Direct IMU register read — raw I2C, no DRDY, sends rsp: via BLE
* 직접 I2C로 레지스터 읽는 방식 (인터럽트 X, IMU 드라이버 API X)
* -------------------------------------------------------------------------------------- */
int imu_read_direct(void)
{
uint8_t raw[12]; /* 가속도 6바이트 + 자이로 6바이트 */
@@ -512,12 +515,17 @@ int imu_read_direct(void)
/* ACCEL_DATA_X1(0x0B)부터 12바이트 연속 읽기 (0x0B~0x16) */
reg = REG_ACCEL_X1;
ret = icm42670_twi_tx(IMU_I2C_ADDR, &reg, 1, true); /* 레지스터 주소 전송 (STOP 없음) */
if (ret) {
if (ret)
{
DBG_PRINTF("[IMU] tx FAIL %u\r\n", ret);
return -1;
}
ret = icm42670_twi_rx(IMU_I2C_ADDR, raw, 12); /* 12바이트 데이터 수신 */
if (ret) {
if (ret)
{
DBG_PRINTF("[IMU] rx FAIL %u\r\n", ret);
return -2;
}

View File

@@ -6,6 +6,13 @@
* @brief
******************************************************************************/
/*******************************************************************************
* 2026.03.26 jhChun
* 현재 이 파일은 실제 런타임에 실행되지 않고 있음
* 인터럽트 방식 대신 app_raw.c imu_read_direct()에서 직접 레지스터 읽는 방식 사용 중
* 추후 필요 여부에 따라 정리 예정
******************************************************************************/
/*******************************************************************************
* [모듈 개요] ICM42670P 메인 초기화 및 폴링 루프
*
@@ -196,8 +203,7 @@ int icm42670_init(void)
* 3) 플래그가 세팅되어 있으면 센서 데이터 읽기 (get_imu_data)
* 4) 데이터 읽기 완료 후 플래그 클리어
*
* 참고: 인터럽트 기반 폴링 방식으로, ISR에서는 플래그만 세팅하고
* 실제 I2C 통신은 메인 컨텍스트에서 수행한다.
* 참고: 인터럽트 기반 폴링 방식으로, ISR에서는 플래그만 세팅하고 실제 I2C 통신은 메인 컨텍스트에서 수행한다.
*/
void icm42670_main(void)
{