<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應用 > 簡單手勢喚醒便攜設(shè)備的設(shè)計思路及其代碼

          簡單手勢喚醒便攜設(shè)備的設(shè)計思路及其代碼

          作者: 時間:2012-07-12 來源:網(wǎng)絡 收藏

          * 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);

          }示例代碼3


          // this handles hardware-level interrupts on the micro

          __interrupt void irq_handler( void )

          {

          ...


          // if the hardware interrupt came from the MAX44000 sensor

          // pulling its INT pin low

          if ( irq_source == MAX44000 )

          {

          // if the device is in sleep mode

          if (device_status == SLEEP_MODE)

          {

          device_status = WAKE_MODE; // wake up the device

          ...

          // reconfigure whatever else you need here as the system wakes up

          }

          // otherwise, handle it however it is you wish

          else

          {

          ...

          }

          }


          ...

          }


          /**

          * configure_max44000_for_sleep_mode()

          *

          * Sets up the MAX44000 to trigger a hardware interrupt when the proximity

          * counts go above some set threshold.

          *

          * Arguments:

          * uint8 upper_threshold - the set threshold (8-bit mode)

          *

          * Returns:

          * n/a

          */

          void configure_max44000_for_sleep_mode(uint8 upper_threshold)

          {

          uint8 max44000_thresh_registers[] = {0x0B,0x0C};

          uint8 max44000_upper_thresh[] = {0x40,0};


          max44000_upper_thresh[1] = upper_threshold;


          // do a consecutive write of 0 followed by upper_threshold to

          // registers 0xB and 0xC, respectively

          // MAX44000_ADDR is usually 0x94

          // interrupt will trigger only if proximity value is above the threshold

          write_i2c_register(MAX44000_ADDR,max44000_thresh_registers,

          max44000_upper_thresh,2);

          // write to bits 2 and 3 of register 0x0A here if you wish to set the

          // persist time to anything other than one sample


          // writes to register 0x01 to enable interrupts on the MAX44000

          max44000_enable_interrupt();


          return;

          }


          上一頁 1 2 3 下一頁

          評論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();