色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          關(guān) 閉

          新聞中心

          EEPW首頁(yè) > 工控自動(dòng)化 > 設(shè)計(jì)應(yīng)用 > 觸控設(shè)備手勢(shì)喚醒的設(shè)計(jì)思路及其實(shí)現(xiàn)

          觸控設(shè)備手勢(shì)喚醒的設(shè)計(jì)思路及其實(shí)現(xiàn)

          作者: 時(shí)間:2012-07-14 來(lái)源:網(wǎng)絡(luò) 收藏
          示例代碼2

          本文引用地址:http://cafeforensic.com/article/160306.htm

            // example interrupt function where this might be implemented

            __interrupt void TimedInterrupt( void )

            {

            uint8 proximity_counts;

            uint8 filtered_counts;

            ....

            ....

            if ( device_status == SLEEP_MODE )

            {

            // read one byte from register 0x16

            proximity_counts = read_i2c_register(MAX44000_ADDR,0x16,1);

            // weights[QUEUE_SIZE] contains the filter weights for the FIR filter

            // data_queue[QUEUE_SIZE] is a FIFO queue meant to be the input to the filter

            filtered_counts = fir_filter(proximity_counts,weights,data_queue);

            if (filtered_counts 》 WAKEUP_THRESHOLD)

            {

            device_status = WAKE_MODE;

            ...

            }

            else

            {

            // do whatever it is you need to in sleep mode

            ...

            ...

            }

            }

            ...

            ...

            }

            /**

            * fir_filter()

            *

            * Implements an FIR filter in the form

            * y = w[0]*x[0] + w[1]*x[1] + 。。.+ w[QUEUE_SIZE]*x[QUEUE_SIZE]

            *

            * Arguments:

            * uint8 input - newest datapoint taken (that is, x[0])

            * uint8 *weights - w[0]。。.w[QUEUE_SIZE]

            * uint8 *queue - the discrete sequence x[0]。。.x[QUEUE_SIZE]

            *

            * Returns:

            * The FIR-filtered output, y

            */

            uint8 fir_filter(uint8 input, uint8 *weights, uint8 *queue)

            {

            uint8 i;

            int sum = 0;

            // pop first entry in the queue, then

            // push new data into the last position

            push_into_queue(queue,input);

            // input is now x[0]

            for (i=0; i {

            sum += weights[i]*queue[i];

            }

            return (sum/QUEUE_SIZE);

            }



          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉