WinCE 7 Visual Studio 2008을 사용 중이며 ALS (MAX44009)에 대한 드라이버 코드를 작성하고 있습니다. 인터럽트 상태 레지스터를 읽고 인터럽트가 발생할 때 메시지를 표시하기 위해 다음 코드를 작성했습니다. 하지만, 몇 번만 무작위로 작동합니다. 예를 들어, 손으로 센서를 닫을 때 메시지가 몇 번 밖에 나오지 않고 인터럽트되어 루프가 계속되는 경우에도 메시지가 data==1
상태로 들어 가지 않습니다. 임계 값 타이머는 0입니다. AlsRegRead
함수는 I2CRead를 수행합니다. pAlsDrvInfo
은 드라이버 컨텍스트입니다. ADD_ALS_INT_STATUS
은 0
입니다. DumpAlsRegistry
함수는 레지스터 0x0
을 제외한 모든 레지스터의 내용을 인쇄합니다.앰비언트 라이트 센서 인터럽트 상태 레지스터가 업데이트되지 않음
while(1)
{
AlsRegRead(pAlsDrvInfo, ADD_ALS_INT_STATUS, &data, sizeof(UINT8));
if (data == 1)
{
DumpAlsRegistry(pAlsDrvInfo);
RETAILMSG(1,(L"Interrupt Received...\r\n"));
}
}
실수로 나를 안내합니다.