【问题标题】:Ambient Light Sensor Interrupt Status register not getting updated环境光传感器中断状态寄存器未更新
【发布时间】:2014-02-11 04:36:38
【问题描述】:

我正在使用 WinCE 7 Visual Studio 2008 并为 ALS (MAX44009) 编写驱动程序代码。我编写了以下代码来读取中断状态寄存器并在发生中断时显示消息。但是,它只随机工作几次。例如,当我用手关闭传感器时,我只收到几次消息,然后,即使它必须中断并继续循环,它也不会进入data==1 条件。阈值计时器为 0。AlsRegRead 函数执行 I2CRead。 pAlsDrvInfo 是驱动程序上下文。 ADD_ALS_INT_STATUS0DumpAlsRegistry函数将打印除寄存器0x0之外的所有寄存器的内容。

        while(1)
        {

            AlsRegRead(pAlsDrvInfo, ADD_ALS_INT_STATUS, &data, sizeof(UINT8));

            if (data == 1)
            {
                DumpAlsRegistry(pAlsDrvInfo);
                RETAILMSG(1,(L"Interrupt Received...\r\n"));
            }

        }

请指导我哪里出错了。

【问题讨论】:

    标签: windows-ce sensors light ambient


    【解决方案1】:

    我找到了这背后的原因。这背后有两个问题,它们都同样重要。

    1) 传感器处于部分损坏状态。

    2) 它需要一些延迟。所以,我在循环的开头添加了Sleep(1000)

        while(1)
        {
            Sleep(1000);
    
            AlsRegRead(pAlsDrvInfo, ADD_ALS_INT_STATUS, &data, sizeof(UINT8));
    
            if (data == 1)
            {
                DumpAlsRegistry(pAlsDrvInfo);
                RETAILMSG(1,(L"Interrupt Received...\r\n"));
            }
    
        }
    

    谢谢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-21
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多