亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? emeter.c

?? MSP430電能測量程序,用的是電力線載波通訊.即PLC
?? C
?? 第 1 頁 / 共 2 頁
字號:
  *    In this example current I1 would be scaled by 0.44/0.30 = 1.46667
  *    and current I2 would be scaled by 0.44/0.32 = 1.25.
  *    (The RMS values at the maximum current are used to calculate the
  *     factor. VFSR(Peak) = 0.625 (see datasheet) => VFSR(RMS) = 0.44)
  */
  set_parameter(mSET_ADAPTI1, defSET_ADAPTI1); // = 1 * POW_2_14 = 16384
  set_parameter(mSET_ADAPTI2, defSET_ADAPTI2); // = 1 * POW_2_14 = 16384

/** \par Adjustment parameters Offset settings: */
  set_parameter(mSET_V1OFFSET, s_parameters.pSET_V1OFFSET);
  set_parameter(mSET_I1OFFSET, s_parameters.pSET_I1OFFSET);
  set_parameter(mSET_I2OFFSET, s_parameters.pSET_I2OFFSET);

/** \par Adjustment parameters start up currents: */
  set_parameter(mSET_STARTCURR_INT, s_parameters.pSET_STARTCURR_INT);
  set_parameter(mSET_STARTCURR_FRAC, s_parameters.pSET_STARTCURR_FRAC);

/** \par Adjustment parameters for DC Removal Periods: */
  set_parameter(mSET_DCREMPER, defSET_DCREMPER);

} // End of init_esp_parameter()

//====================================================================
/**
  * Starts energy measurement.
  *
  */
void start_measurement(void)
{
  // Set event message request flags: 

  set_parameter(mSET_EVENT, defSET_EVENT );

//  total_energy = 0;

  MBCTL= IN0IE;
  
  // Start measurement (set Embedded Signal Processing into "Measurement" mode)
  MBOUT1= modeMEASURE; //ESP_MEASURE;
  MBOUT0= mSET_MODE;
  OP_Mode = measure;
} // End of start_measurement()

//====================================================================
//
//  * Starts calibration.
//  *
//
void start_calibration(void)
{
  volatile unsigned int timeout;
  //  /\  Prevent variable from being "optimized".

//
//  * ensure that it is not in measurement or calibration mode,
//
  if ((RET0 & 0x8000) != 0) 
  { 
    // Set Embedded Signal Processing into "Idle" mode
    MBOUT1= modeIDLE; // ESP_IDLE;
    MBOUT0= mSET_MODE;
    timeout= TIMEOUT;
    while (((RET0 & 0x8000) != 0) && (--timeout > 0)) ;
  }

  total_energy= 0;

  // Set event message request flags: 
  set_parameter(mSET_EVENT,
                CALRDYME);  // Interrupt on "Calibration values ready"
  
  set_parameter(mSET_CALCYCLCNT, CalCyclCnt); // = set requested cycles for measurement

  // Start measurement (set Embedded Signal Processing into "Calibration" mode)
  set_parameter(mSET_MODE, modeCALIBRATION);
  OP_Mode = calibration;
} // End of start_measurement()


//====================================================================
void idle_esp(void)
{
      // Stop measurement (set Embedded Signal Processing into "Idle" mode)
      // Set Embedded Signal Processing into "Idle" mode
      MBOUT1= modeIDLE; // ESP_IDLE;
      MBOUT0= mSET_MODE;
      while ((RET0 & 0x8000) != 0); // Wait for Idle mode

      // Shut down ESP (set Embedded Signal Processing into "Suspend" mode)
      // ensure that it is not in measurement or calibration mode,
      if ((RET0 & 0x8000) == 0) 
      { 
          ESPCTL |= ESPSUSP;   // Set ESP into Suspend Mode
//          ESPCTL = 0;            // Set ESP into Off Mode
      }

      // wait 10 clock till proper access to the SD16 is possilbe (9 clock are required)
      _NOP();_NOP();_NOP();_NOP();_NOP();
      _NOP();_NOP();_NOP();_NOP();_NOP();
      SD16CTL &= ~SD16REFON; // Switch Reference off
      OP_Mode = idle;
#ifdef withDisplay
      DisplayIDLE();
      //LCD_OFF;        // Switch LCD off
#endif // withDisplay
}	// End of idle_esp()
	

void wakeup_esp(void)
{
    ESPCTL &= ~(ESPSUSP|ESPEN);   // Turn off enable and suspend mode bits
    // wait 10 clock ticks (needed? Probably.)
    _NOP();_NOP();_NOP();_NOP();_NOP();
    _NOP();_NOP();_NOP();_NOP();_NOP();

	SD16CTL |= SD16REFON; // Switch Reference on

    // wait 10 clock ticks (needed? Probably not.)
    _NOP();_NOP();_NOP();_NOP();_NOP();
    _NOP();_NOP();_NOP();_NOP();_NOP();

  	ESPCTL |= ESPEN;	// Enable the Embedded Signal Processor
}	
//====================================================================
/**
  * Interrupt service routine for messages sent by ESP430CE1.
  *
  */
#ifdef __IAR_SYSTEMS_ICC__
#if __VER__ < 200
interrupt[ESP430_VECTOR] void esp_isr(void)
#else
#pragma vector=ESP430_VECTOR
__interrupt void esp_isr( void )
#endif
#endif

#ifdef __CROSSWORKS__
void esp_isr(void)   __interrupt[ESP430_VECTOR] 
#endif
{
  unsigned int msg_data = MBIN1;
  unsigned int msg      = MBIN0;

#ifdef ExtIntLevel
unsigned int i = def_togglerepeat;
#endif

//  P1OUT |= 0x01;    // set P1.0
  P1OUT &= ~0x01;    // clear P1.0 (Turn on User0 LED)
  
  if (msg == mEVENT)
  {
    //
    //  * Get the Calibration data
    //
    if ((msg_data & CALRDYFG) == CALRDYFG) // Calibration data available
    {
        if ( OP_Mode == calibration)
        {
          energy.w[0] = ACTENERGY1_LO;
          energy.w[1] = ACTENERGY1_HI;
#ifdef withUARTComm
          TX_Mode = tx_cal;
#endif // withUARTComm
          OP_Mode = done;
          // Set Embedded Signal Processing into "Idle" mode
//          MBOUT1= modeIDLE; // ESP_IDLE;
          MBOUT1= modeMEASURE; //ESP_MEASURE;
          MBOUT0= mSET_MODE;
          
          msg_data = 0; // prevent that the other functions in the ISR are executed
        }
    } // End of if ((msg_data & CALRDY)

    msg_data = msg_data & defSET_EVENT ; //mask with event request mask

    //
    //  * Get the WFS
    //
//    if ((msg_data & WFSRDYFG)) // New Waveform Samples available
// WFS could always be copied
    {
        wfs1 = WAVEFSV1;
        wfs2 = WAVEFSI1;
        wfs3 = WAVEFSI2;   
    }

//
//  * Get Energy and create Pulses
//
#ifndef ExtIntLevel
    if ((msg_data & ILREACHEDFG)) // 
    {
        static unsigned int i = defSET_INTRPTLEVL_REPEAT;
        i--;
        if (i == 0)
        {
          P1OUT ^= 0x02;    // toggle P1.1
          i = defSET_INTRPTLEVL_REPEAT;
        }
    }
#else
    if (msg_data & ZXTRFG)
    {
        ZXLDFGedge = 1;
        if (sumenergy >= s_parameters.pSET_TOGGLELEVEL)
        {
            sumenergy -= s_parameters.pSET_TOGGLELEVEL;
            i--;
            if (i == 0)
            {
              P1OUT ^= 0x02;    // toggle P1.1
              i = s_parameters.pSET_TOGGLELEVEL;
            }
        }
    }
    if ((msg_data & ZXLDFG) && ZXLDFGedge)
    {
        
        ZXLDFGedge = 0;
        
        tempenergy.w[0] = ACTENSPER1_LO;
        tempenergy.w[1] = ACTENSPER1_HI;
        sumenergy += tempenergy.l;
        if (tempenergy.l > maxenergy) {maxenergy = tempenergy.l;};
        if (sumenergy >= s_parameters.pSET_TOGGLELEVEL)
        {
            sumenergy -= s_parameters.pSET_TOGGLELEVEL;
            i--;
            if (i == 0)
            {
              P1OUT ^= 0x02;    // toggle P1.1
              i = def_togglerepeat;
            }
        }
    }
#endif

/**
  * Accumulates the active energy depending on the tampering flag so
  * that always the "worst case" energy is calculated.
  */
    if ((msg_data & ENRDYFG)) // Tampering (I1 << I2 or I2 >> I1)?
//    if ((msg_data & ILREACHED) == ILREACHED) // Tampering (I1 << I2 or I2 >> I1)?
    {
//      unsigned int i;
//      unsigned int * a = (unsigned int *) RET0_;
//      unsigned int * b = (unsigned int *) &savedRET[0];
      static unsigned char temp_count = defTemp_repeat;


      
      
//      for (i=0; i != ((RET31_ - RET0_)/2); i++)
//      {
//         *b++ = *a++;
//      }
      
      if (!(msg_data & I2GTI1FG) ) // I1 > I2?
      {
        energy.w[0] = RET8;
        energy.w[1] = RET9;
      } else // I1 < I2!
      {
        energy.w[0] = ACTENERGY1_LO;
        energy.w[1] = ACTENERGY1_HI;
      }
      
      total_energy += (float)energy.l;

      //
      //  * The seconds are counted based on the ESP430CE1 energy ready interrupts.
      //
      temp_count--;
      if (temp_count == 0)
      {
        //
        //  * Every minute a temperature measurement is requested.
        //
        temp_count = defTemp_repeat;
        MBOUT0= mTEMP;
      }  

      sys_status |= NewValues;           // set mark that new samples are available
      if (OP_Mode != idle) LPM3_EXIT;    // back to active mode after ISR

    } // End of if ((msg_data & ENRDY) 

  } // End of if (MBIN0 == mEVENT)  

  
  if (msg == mTEMPRDY)
  {
    //
    //  * The temperature is saved as soon as it is delivered by the ESP430.
    //
    temperature= msg_data;
  } 

#ifndef withRS485
  // Test if S1 was pressed
  if (P2IFG & 0x04)  
  {
      P2IFG &= ~0x04;  //clear flag
#ifdef withDisplay
      DisplayNextData(); //next display mode
#endif // withDisplay
  }

  // Test if S2 was pressed
  if (P2IFG & 0x08)  
  {
      signed char scOffCount = -1;

      if (scOffCount < 0) scOffCount = 10;
      if (scOffCount > 0) scOffCount --;
      if (scOffCount > 0)
      {
	      P2IFG &= ~0x08;  //clear flag
	      
		  idle_esp();	  // Set Embedded Signal Processor into Idle Mode
		  
	      P2IE  |= 0x08;  //enable interrupt
	      _BIS_SR_IRQ(LPM3_bits);   // not back to active mode after ISR
	  } 
  }
#endif
  
//  P1OUT &= ~0x01;    // clear P1.0
  P1OUT |= 0x01;    // set P1.0 (Turn off USer0 LED)

}



?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
天天av天天翘天天综合网色鬼国产| 欧美日韩大陆在线| 国产福利不卡视频| 成人免费三级在线| 欧美主播一区二区三区美女| 欧美日韩国产另类一区| 日韩精品中午字幕| 亚洲日本中文字幕区| 午夜激情一区二区| 国产99久久久国产精品潘金| 日韩欧美一区中文| 国产精品免费aⅴ片在线观看| 亚洲图片欧美色图| 国产不卡免费视频| 欧美一区二区三区在线观看视频| 久久久久久久久久久久电影| 亚洲丝袜精品丝袜在线| 视频一区二区中文字幕| a亚洲天堂av| 精品国产免费久久| 国产精品第13页| 久久黄色级2电影| 91九色02白丝porn| 亚洲国产成人一区二区三区| 亚洲国产色一区| 色欧美片视频在线观看| 国产日韩亚洲欧美综合| 久久99久国产精品黄毛片色诱| 在线观看日产精品| 国产精品国产a级| 成人黄色大片在线观看| 久久久久久久性| 国产成人av电影在线观看| 欧美大白屁股肥臀xxxxxx| 日韩中文字幕不卡| 欧美三区在线视频| 日韩精品免费专区| 欧美一区二区三区视频| 免费看日韩精品| 欧美变态凌虐bdsm| 国产成人亚洲综合a∨婷婷| 欧美激情在线免费观看| a4yy欧美一区二区三区| 国产精品久久久久久久久搜平片| 国产乱人伦偷精品视频不卡| 欧美大尺度电影在线| 国产成人av在线影院| 欧美激情一区二区三区不卡| 9i看片成人免费高清| 亚洲激情在线激情| 精品久久免费看| 99久久99久久免费精品蜜臀| 亚洲v日本v欧美v久久精品| 日韩一区二区在线看片| 成人av电影在线观看| 亚洲第一久久影院| 国产欧美日韩卡一| 欧美日韩大陆在线| 不卡视频免费播放| 视频一区二区中文字幕| 国产精品日产欧美久久久久| 欧美日韩国产首页| 国产1区2区3区精品美女| 亚洲综合视频在线观看| 久久久亚洲精品石原莉奈| 欧美性大战久久| 91丨九色丨黑人外教| 老色鬼精品视频在线观看播放| 国产精品久久久久久久久免费相片| 91丨九色丨尤物| 成人久久视频在线观看| 韩国女主播成人在线| 日韩国产高清影视| 亚洲第一久久影院| 午夜影院久久久| 香蕉影视欧美成人| 精品一区精品二区高清| 亚洲免费电影在线| 亚洲青青青在线视频| 一区二区三区av电影| 自拍偷拍欧美激情| 亚洲一区在线免费观看| 亚洲老妇xxxxxx| 一级女性全黄久久生活片免费| 国产精品麻豆99久久久久久| 国产偷v国产偷v亚洲高清| 日韩欧美亚洲国产另类| 精品国产91久久久久久久妲己| 日韩欧美国产不卡| 欧美韩国日本综合| 亚洲毛片av在线| 亚洲国产欧美日韩另类综合 | 自拍偷拍亚洲欧美日韩| 日本一区二区成人| 一区二区三区日本| 青青草原综合久久大伊人精品 | 91美女福利视频| 91精品视频网| 久久久久青草大香线综合精品| 国产精品二区一区二区aⅴ污介绍| 亚洲青青青在线视频| 视频在线观看91| av电影一区二区| 欧美不卡一区二区三区| 亚洲人成小说网站色在线| 另类小说色综合网站| 成+人+亚洲+综合天堂| 欧美一区二区福利视频| 国产精品免费视频观看| 麻豆精品蜜桃视频网站| 91国偷自产一区二区开放时间| 精品国产123| 日韩av电影免费观看高清完整版| 成人黄色av网站在线| 日韩欧美一级精品久久| 夜夜嗨av一区二区三区四季av| 国内不卡的二区三区中文字幕| 一本久久a久久精品亚洲| 久久蜜桃香蕉精品一区二区三区| 亚洲成人7777| 在线这里只有精品| 亚洲免费观看在线视频| 成人的网站免费观看| 国产欧美精品一区二区色综合| 日韩中文字幕麻豆| 欧美日韩免费不卡视频一区二区三区| 中文文精品字幕一区二区| 国产在线不卡一区| 国产无遮挡一区二区三区毛片日本| 久久99精品久久久久久动态图| 久久综合成人精品亚洲另类欧美| 亚洲第一电影网| 欧美在线免费观看视频| 午夜国产精品一区| 欧美一区二区三区在线视频| 亚洲va天堂va国产va久| 91精品国产一区二区三区香蕉| 蜜桃91丨九色丨蝌蚪91桃色| 2023国产精品自拍| 国产.欧美.日韩| 亚洲综合丝袜美腿| 久久婷婷成人综合色| aaa国产一区| 天堂精品中文字幕在线| 久久久久久久网| 欧美视频一二三区| 国产成人免费在线视频| 亚洲人一二三区| 2022国产精品视频| 色悠悠久久综合| 国产精一品亚洲二区在线视频| 日韩毛片高清在线播放| 精品久久久久久久久久久院品网 | 中文字幕欧美三区| 制服丝袜成人动漫| 91激情在线视频| 国产成人自拍网| 激情深爱一区二区| 亚洲电影在线免费观看| 久久色.com| 日韩一区二区三区免费看| 91亚洲精品一区二区乱码| 久久丁香综合五月国产三级网站| 一区二区三区欧美日| 国产精品天美传媒| 久久网这里都是精品| 亚洲精品在线网站| 亚洲精品在线观看视频| 2021久久国产精品不只是精品| 欧美另类久久久品| 欧美羞羞免费网站| 欧美精品乱码久久久久久按摩 | 性久久久久久久久| 亚洲午夜在线电影| 亚洲成人av在线电影| 亚洲国产精品久久一线不卡| 偷拍一区二区三区四区| 亚洲一二三级电影| 美女诱惑一区二区| 国产麻豆精品视频| 不卡电影一区二区三区| 91免费在线播放| 精品视频999| 久久亚洲春色中文字幕久久久| 久久精品欧美一区二区三区不卡| 国产视频一区不卡| 亚洲欧洲一区二区三区| 樱花影视一区二区| 麻豆91免费观看| 91在线高清观看| 91.成人天堂一区| 中文字幕一区二| 亚洲成精国产精品女| 国产成人精品一区二| 在线精品视频小说1| 久久精品亚洲国产奇米99| 亚洲美女视频在线| 国产成人久久精品77777最新版本| 91免费视频网址| 国产精品欧美精品|