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

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

?? emeter-setup.c

?? msp430F437三相電表DEMO(編譯器 IAR 3.42A)
?? C
?? 第 1 頁 / 共 3 頁
字號:
    ADC12CTL0 |= ENC;

        #if defined(__MSP430_HAS_TA3__)
    /* Switch to the normal sampling rate. */
    TAR = 0;
    TACCR0 = SAMPLE_PERIOD - 1;
    TACCR1 = SAMPLE_PERIOD - 3;
    TACCR2 = SAMPLE_PERIOD - 4;
    TACCTL0 = CCIE;
    TACCTL1 = OUTMOD_3;
    TACTL = TACLR | MC_1 | TASSEL_1;
    /* Disable the interrupt routine which re-enables the ADC */
    TACCTL2 = 0;
        #endif
    #endif

    #if defined(__MSP430_HAS_SD16_3__)
        #if defined(__MSP430_HAS_TA3__)
    /* Disable the TIMER_A0 interrupt */
    TACTL = 0;
    TACCTL0 = 0;
        #endif
    _DINT();
    init_analog_front_end_normal();
    #endif

    samples_per_second = SAMPLES_PER_10_SECONDS/10;

    _EINT();

    #if defined(PWM_DITHERING_SUPPORT)
    /* Enable dithering, by enabling Timer B */
    TBR = 0;
    TBCTL = TBCLR | MC_1 | TBSSEL_2;
    #endif

    #if defined(DAC12_DITHERING_SUPPORT)
    DAC12_0CTL &= ~ENC;
    DAC12_1CTL &= ~ENC;
    DAC12_0CTL =
    DAC12_1CTL = DAC12CALON | DAC12IR | DAC12AMP_7 | DAC12LSEL_2;
    DAC12_0CTL |= ENC;
    DAC12_1CTL |= ENC; 
    DAC12_0DAT = 0x800;
    DAC12_1DAT = 0;
    #endif
    
    #if defined(IEC1107_SUPPORT)
    enable_ir_receiver();
    #endif

    operating_mode = OPERATING_MODE_NORMAL;
}

    #if defined(LIMP_MODE_SUPPORT)
void switch_to_limp_mode(void)
{
    /* Switch to minimum consumption, current measurement only mode */

    meter_status &= ~(STATUS_REVERSED | STATUS_PHASE_VOLTAGE_OK);
    clr_normal_indicator();
    clr_reverse_current_indicator();

        #if defined(__MSP430_HAS_ADC12__)
    /* Change the ADC reference to Vcc */
    _DINT();

    /* Must disable conversion while reprogramming the ADC */
    ADC12CTL0 &= ~ENC;

    /* Turn the Vref off and ADC on */
    ADC12CTL0 = MSC | REF2_5V | ADC12ON | SHT0_2 | SHT1_2;

            #if defined(SINGLE_PHASE)
    ADC12MCTL0 = SREF_0 | AGND_INPUT;
    ADC12MCTL1 = SREF_0 | NEUTRAL_CURRENT_INPUT;
    ADC12MCTL2 = SREF_0 | AGND_INPUT;
    ADC12MCTL3 = SREF_0 | LIVE_CURRENT_INPUT;
    ADC12MCTL4 = SREF_0 | AGND_INPUT;
                #if defined(BATTERY_MONITOR_SUPPORT)
    ADC12MCTL5 = SREF_0 | VOLTAGE_INPUT;
    ADC12MCTL6 = EOS | SREF_0 | BATTERY_INPUT;
                #else
    ADC12MCTL5 = EOS | SREF_0 | VOLTAGE_INPUT;
                #endif
    /* Skip the temperature, or the reference switches on! */
            #else
    ADC12MCTL0 = SREF_0 | LIVE_CURRENT_INPUT_1;
    ADC12MCTL1 = SREF_0 | AGND_INPUT;
    ADC12MCTL2 = SREF_0 | VOLTAGE_INPUT_1;
    ADC12MCTL3 = SREF_0 | LIVE_CURRENT_INPUT_2;
    ADC12MCTL4 = SREF_0 | AGND_INPUT;
    ADC12MCTL5 = SREF_0 | VOLTAGE_INPUT_2;
    ADC12MCTL6 = SREF_0 | LIVE_CURRENT_INPUT_3;
    ADC12MCTL7 = SREF_0 | AGND_INPUT;
                #if defined(NEUTRAL_CURRENT_INPUT)
    ADC12MCTL8 = SREF_0 | VOLTAGE_INPUT_3;
    ADC12MCTL9 = EOS | SREF_0 | NEUTRAL_CURRENT_INPUT;
                #else
    ADC12MCTL8 = EOS | SREF_0 | VOLTAGE_INPUT_3;
                #endif
    /* Skip the temperature, or the reference switches on! */ 
            #endif
    ADC12CTL0 |= ENC;

            #if defined(__MSP430_HAS_TA3__)
    /* Switch to a lower sampling rate. */
    TAR = 0;
    TACCR0 = (SAMPLE_PERIOD*LIMP_SAMPLING_RATIO) - 1;
    TACCR1 = (SAMPLE_PERIOD*LIMP_SAMPLING_RATIO) - 3;
    TACCR2 = (SAMPLE_PERIOD*LIMP_SAMPLING_RATIO) - 4;
    TACCTL0 = CCIE;
    TACCTL1 = OUTMOD_3;
    TACTL = TACLR | MC_1 | TASSEL_1;
    /* Enable the interrupt routine which re-enables the ADC */
    TACCTL2 = CCIE;
            #endif
        #endif

        #if defined(__MSP430_HAS_SD16_3__)
            #if defined(__MSP430_HAS_TA3__)
    /* Enable the TIMER_A0 interrupt */
    TACTL = TACLR | MC_1 | TASSEL_1;
    TACCTL0 = CCIE;
            #endif
    _DINT();
    init_analog_front_end_limp();
        #endif

    samples_per_second = LIMP_SAMPLES_PER_10_SECONDS/10;

        #if defined(IEC1107_SUPPORT)
    disable_ir_receiver();
        #endif

    _EINT();

        #if defined(PWM_DITHERING_SUPPORT)
    /* Disable dithering, by disabling Timer B */
    TBCTL = TBCLR | TBSSEL_2;
        #endif
    operating_mode = OPERATING_MODE_LIMP;
}
    #endif

    #if defined(POWER_DOWN_SUPPORT)
void switch_to_powerfail_mode(void)
{
    operating_mode = OPERATING_MODE_POWERFAIL;

    /* Note that a power down occured */
    meter_status |= POWER_DOWN;

    /* Turn off all the LEDs. */
    meter_status &= ~(STATUS_REVERSED | STATUS_EARTHED | STATUS_PHASE_VOLTAGE_OK);
    clr_normal_indicator();
    clr_reverse_current_indicator();
    clr_earthed_indicator();
    clr_total_energy_pulse_indicator();
    clr_total_reactive_energy_pulse_indicator();
    
    /* Make the EEPROM signals inputs, and rely on pullups. */
    disable_eeprom_port();

    /* Shut down the LCD */
    custom_lcd_sleep_handler();

        #if defined(__MSP430_HAS_TA3__)  &&  (defined(__MSP430_HAS_ADC12__)  ||  defined(__MSP430_HAS_SD16_3__))
    /* Disable the TIMER_A0 interrupt */
    TACTL = 0;
    TACCTL0 = 0;
    /* Disable the interrupt routine which re-enables the ADC */
    TACCTL2 = 0;
        #endif

        #if defined(__MSP430_HAS_ADC12__)
    /* Now the interrupts have stopped it should be safe to power
       down the ADC. */
    ADC12CTL0 &= ~ENC;
    ADC12CTL0 &= ~(REFON | REF2_5V | ADC12ON);
        #endif
        #if defined(__MSP430_HAS_SD16_3__)
    disable_analog_front_end();
        #endif
        #if defined(PWM_DITHERING_SUPPORT)
    /* Disable dithering, by disabling Timer B */
    TBCTL = TBCLR | TBSSEL_2;
        #endif
        #if defined(IEC1107_SUPPORT)  ||  defined(SERIAL_CALIBRATION_SUPPORT)  ||  defined(SERIAL_CALIBRATION_REF_SUPPORT)
    /* Disable the serial port. */
    U0ME &= ~(UTXE0 | URXE0);
            #if defined(IEC1107_SUPPORT)
    disable_ir_receiver();
            #endif
        #endif

        #if defined(BATTERY_MONITOR_SUPPORT)
    /* Battery sensing control pin */
    P3DIR &= ~(BIT1);
    P3OUT |= (BIT1);
        #endif

        #if defined(__MSP430_HAS_FLLPLUS__)  ||  defined(__MSP430_HAS_FLLPLUS_SMALL__)
    /* Slow the clock to 1MHz as quickly as possible. The FLL will not be active
       in LPM3, so switch it off now, and force the FLL's RC oscillator to
       about 1MHz. The exact frequency is not critical. */
    _BIS_SR(SCG0);                  /* switch off FLL locking */
    SCFI0 = FLLD_1;
    SCFQCTL = (32 - 1) | SCFQ_M;
    SCFI0 = 0x0;
    SCFI1 = 0x37;
        #endif
        #if defined(__MSP430_HAS_SVS__)
    /* At 1MHz it is safe to turn off the SVS, and rely on the brownout
       detector. Now the meter can survive on a very weak battery. */
    SVSCTL = 0;
        #endif
    custom_power_fail_handler();

    /* ******************** LOW POWER STATE ************************** */
    /* Go to LPM3 mode and exit only when power comes back on. The timer
       interrupt that ticks every second should be checking for power
       restored while we sit here. When it sees the unregulated supply
       at a healthy voltage, it will wake us up. */
    _BIS_SR(LPM3_bits);

    /* Waking up from power down mode */
        #if defined(__MSP430_HAS_SVS__)
    /* Before we go to high speed we need to make sure the supply voltage is 
       adequate. If there is an SVS we can use that. There should be no wait
       at this point, since we should only have been woken up if the supply
       is healthy. However, it seems better to be cautious. */
    SVSCTL |= (SVSON | 0x60);
    /* Wait for adequate voltage to run at full speed */
    while ((SVSCTL & SVSOP))
        /* dummy loop */;
    /* The voltage should now be OK to run the CPU at full speed. Now it should
       be OK to use the SVS as a reset source. */
    SVSCTL |= PORON;
        #endif

        #if defined(__MSP430_HAS_FLLPLUS__)  ||  defined(__MSP430_HAS_FLLPLUS_SMALL__)
    /* Speed up the clock to 8.388608MHz */
    SCFI0 = FN_3 | FLLD_4;
    SCFQCTL = 64 - 1;
    /* There seems no good reason to wait until the FLL has settled at this point. */
        #endif

    /* Take control of the EEPROM signals again. */
    enable_eeprom_port();

    /* Enable the serial port */
        #if defined(IEC1107_SUPPORT)  ||  defined(SERIAL_CALIBRATION_SUPPORT)  ||  defined(SERIAL_CALIBRATION_REF_SUPPORT)
            #if defined(SERIAL_CALIBRATION_REF_SUPPORT)
    U0ME |= (UTXE0 | URXE0);
            #elif defined(SERIAL_CALIBRATION_SUPPORT)
    U0ME |= URXE0;
            #else
    U0ME |= UTXE0;
            #endif
        #endif

        #if defined(__MSP430_HAS_TA3__)  &&  (defined(__MSP430_HAS_ADC12__)  || defined(__MSP430_HAS_SD16_3__))
    /* Enable the TIMER_A0 interrupt */
    TACTL = TACLR | MC_1 | TASSEL_1;
    TACCTL0 = CCIE;
        #endif

    kick_watchdog();

        #if defined(LOSE_FRACTIONAL_PULSE_AT_POWER_ON)
            #if defined(PER_PHASE_ENERGY_SUPPORT)
    phase->power_counter = 0;
            #endif
            #if defined(TOTAL_ENERGY_SUPPORT)
    total_power_counter = 0;
                #if TOTAL_ENERGY_PULSES_PER_KW_HOUR < 1000
    extra_total_power_counter = 0;
                #endif
            #endif
            #if defined(TOTAL_REACTIVE_ENERGY_SUPPORT)
    total_reactive_power_counter = 0;
                #if TOTAL_ENERGY_PULSES_PER_KW_HOUR < 1000
    extra_total_reactive_power_counter = 0;
                #endif
            #endif
        #endif

        #if defined(BATTERY_MONITOR_SUPPORT)
    if (battery_countdown)
    {
        battery_countdown = 1000;
        /* Battery sensing control pin */
        P3DIR |= (BIT1);
        P3OUT &= ~(BIT1);
    }
        #endif
    /* Come out of power down in limp mode, as we don't know
       if there is sufficent power available to driver the meter
       at full speed. We will soon switch to normal mode if a
       voltage signal is available. */
    /* Limp mode will fire up the ADC again. */
        #if defined(LIMP_MODE_SUPPORT)
    switch_to_limp_mode();
        #else
    switch_to_normal_mode();
        #endif
    custom_power_restore_handler();
}
    #endif
#else
void switch_to_normal_mode(void)
{
}

    #if defined(LIMP_MODE_SUPPORT)
void switch_to_limp_mode(void)
{
}
    #endif

    #if defined(POWER_DOWN_SUPPORT)
void switch_to_powerfail_mode(void)
{
}
    #endif
#endif

#if defined(__MSP430_HAS_TA3__)
int32_t assess_rtc_speed(void)
{
    int32_t period;
    uint16_t this_capture;
    uint16_t last_capture;
    uint16_t step;
    int32_t counter;
    int limit;

    /* The fast clock should be an exact multiple of the crystal clock, once the FLL has
        settled. If we capture many cycles of an accurate external 32768Hz clock, using
        timer A (or B), we can measure the speed difference between the MSP430's crystal
        and the external clock in a reasonable time. */
    /* The SM clock should be running at 244*32768Hz at this time. */
    _DINT();
    /* Change timer A to running fast, and sampling the external 32768Hz reference. */
    P2SEL |= BIT0;
    TACCR0 = 0xFFFF;
    TACCTL0 = CAP | CCIS_0 | CM_1;
    TACCTL2 = CAP | CCIS_0 | CM_1 | SCS;
    TACTL = TACLR | MC_2 | TASSEL_2;    /* start TIMER_A up mode, SMCLK as input clock */
    period = 0;
    last_capture = TACCR2;
    limit = -1;
    TACCTL2 &= ~CCIFG;
    for (counter = 0;  counter < 32768*5 + 1;  counter++)
    {
        limit = 1000;
        while (!(TACCTL2 & CCIFG))
        {
            if (--limit <= 0)
                break;
        }
        if (limit <= 0)
            break;
        TACCTL2 &= ~CCIFG;
        this_capture = TACCR2;
        step = this_capture - last_capture;
        last_capture = this_capture;
        /* Skip the first sample, as it will be meaningless */
        if (counter)
        {
    #if 0
            if (step < (244 - 5)  ||  step > (244 + 5))
            {
                limit = -2;
                break;
            }
    #endif
            period += step;
        }
        kick_watchdog();
    }
    if (limit <= 0)
        period = limit;
    #if defined(__MSP430_HAS_ADC12__)
    /* Change timer A back to controlling the ADC sampling interval, and the ADC on/off timing. */
    /* CCR0 determines the sample period */
    TACCR0 = SAMPLE_PERIOD - 1;
    TACCR1 = SAMPLE_PERIOD - 3;
    TACCR2 = SAMPLE_PERIOD - 4;
    TACCTL1 = OUTMOD_3;
    #endif
    TACTL = TACLR | MC_1 | TASSEL_1;
    TACCTL0 = CCIE;
    P2SEL &= ~BIT0;
    _EINT();
    return  period;
}
#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91色九色蝌蚪| 亚洲精品久久久久久国产精华液| 国产精品午夜免费| 亚洲一卡二卡三卡四卡五卡| 国产精一品亚洲二区在线视频| 一本色道综合亚洲| 久久综合色之久久综合| 亚洲午夜视频在线| 91蝌蚪porny| 国产亚洲综合av| 久久国产精品72免费观看| 欧美性感一区二区三区| 国产精品传媒入口麻豆| 高清beeg欧美| 久久蜜桃av一区精品变态类天堂| 亚洲一区二区三区激情| 91无套直看片红桃| 国产精品拍天天在线| 久久99久久99小草精品免视看| 欧美男人的天堂一二区| 亚洲一区二区三区中文字幕| 一本色道久久综合狠狠躁的推荐| 久久精品网站免费观看| 久久电影网站中文字幕| 欧美一三区三区四区免费在线看| 亚洲最新在线观看| 色欧美日韩亚洲| 亚洲综合色噜噜狠狠| 91小视频在线免费看| 中文字幕日韩一区| 成人av在线一区二区| 久久一区二区视频| 国产成人午夜精品影院观看视频 | 国产福利视频一区二区三区| 日韩欧美一级片| 婷婷成人激情在线网| 日本一区二区免费在线| 国产精品白丝jk黑袜喷水| www国产成人| www.欧美精品一二区| 国产精品久久久一本精品 | 欧美在线影院一区二区| 日韩一区在线播放| 欧美午夜一区二区三区免费大片| 亚洲一区在线视频| 欧美一区二区日韩一区二区| 免费在线观看不卡| 精品国产人成亚洲区| 国产91精品入口| 亚洲精品国产a久久久久久| 欧美日韩亚洲综合一区| 久久精品国产亚洲一区二区三区| 久久综合色综合88| 一本色道久久综合亚洲91| 亚洲一卡二卡三卡四卡五卡| 欧美变态tickle挠乳网站| 国产成人aaaa| 亚洲第一搞黄网站| 久久久久9999亚洲精品| 色综合久久综合网97色综合| 视频一区欧美日韩| 中文字幕不卡在线观看| 欧美性大战xxxxx久久久| 精品一区二区在线看| 中文字幕一区在线| 3atv在线一区二区三区| 成人毛片视频在线观看| 调教+趴+乳夹+国产+精品| 国产日韩欧美一区二区三区乱码| 日本道免费精品一区二区三区| 蜜臀av一区二区在线观看| 国产精品色哟哟网站| 制服丝袜av成人在线看| 不卡大黄网站免费看| 日韩av一区二区三区| 亚洲同性gay激情无套| 日韩欧美一区二区免费| 91香蕉视频黄| 国产91精品一区二区麻豆网站| 亚洲成av人在线观看| 中文一区二区完整视频在线观看| 欧美美女bb生活片| 99精品欧美一区二区三区小说 | 亚洲卡通欧美制服中文| 欧美大片在线观看一区| 欧美三级电影网站| 成人激情小说乱人伦| 蜜桃在线一区二区三区| 一区二区成人在线| 国产精品久久夜| 精品精品国产高清a毛片牛牛| 欧美性大战xxxxx久久久| 国产成人免费在线视频| 美女爽到高潮91| 手机精品视频在线观看| 亚洲欧洲日本在线| 欧美国产乱子伦| 久久精品视频一区| 精品国精品国产| 精品噜噜噜噜久久久久久久久试看| 欧美男女性生活在线直播观看| 91首页免费视频| 99免费精品视频| 国产99久久久精品| 国产福利一区二区三区在线视频| 狠狠色丁香九九婷婷综合五月| 日韩中文字幕av电影| 亚洲福利视频导航| 亚洲成人一二三| 亚洲aaa精品| 午夜精品久久久久久久| 婷婷国产v国产偷v亚洲高清| 洋洋av久久久久久久一区| 夜夜精品视频一区二区| 亚洲一卡二卡三卡四卡五卡| 一区二区免费在线| 亚洲成国产人片在线观看| 一区二区三区四区在线播放| 亚洲三级在线看| 亚洲色欲色欲www| 亚洲一区中文日韩| 日本视频免费一区| 老司机午夜精品| 国产成人精品网址| 白白色 亚洲乱淫| 日本久久电影网| 欧美日韩dvd在线观看| 555www色欧美视频| wwww国产精品欧美| 国产精品理论片在线观看| 亚洲美女精品一区| 午夜视频一区二区三区| 美国毛片一区二区三区| 国产mv日韩mv欧美| 色哟哟国产精品| 欧美美女bb生活片| 国产色一区二区| 亚洲精品你懂的| 免费日韩伦理电影| 成人av动漫在线| 欧美人妇做爰xxxⅹ性高电影| 欧美xxxxx牲另类人与| 国产精品色一区二区三区| 亚洲最大成人综合| 日本欧美加勒比视频| 国产成人免费在线观看| 欧美日韩精品一区二区三区蜜桃| 欧美mv日韩mv| 一区二区三区高清在线| 久久精品国产77777蜜臀| www..com久久爱| 日韩一区二区电影在线| 亚洲欧美中日韩| 日本午夜一本久久久综合| 菠萝蜜视频在线观看一区| 日韩一区二区三区视频在线 | 亚洲一区在线观看视频| 久久99精品视频| 在线观看网站黄不卡| 国产欧美1区2区3区| 视频一区二区三区入口| av毛片久久久久**hd| 欧美成人video| 亚洲v中文字幕| 91伊人久久大香线蕉| 精品国产伦一区二区三区免费| 一区二区三区久久久| 成人免费av资源| 日韩亚洲电影在线| 亚洲永久精品国产| av在线免费不卡| 欧美精品一区二区蜜臀亚洲| 亚洲成人av中文| 91久久免费观看| 日本一区二区不卡视频| 狠狠网亚洲精品| 日韩一区二区三区视频在线观看| 玉足女爽爽91| av在线不卡电影| 欧美国产日韩亚洲一区| 国产一区二区三区精品视频| 91精品国产91热久久久做人人| 亚洲午夜免费福利视频| 色哟哟一区二区在线观看| 中文字幕一区二区三区在线不卡| 激情久久久久久久久久久久久久久久| 欧美视频在线观看一区| 亚洲精品乱码久久久久久黑人| 顶级嫩模精品视频在线看| 久久婷婷色综合| 国产传媒一区在线| 久久久久久9999| 国产盗摄视频一区二区三区| 欧美不卡一二三| 黑人巨大精品欧美一区| 久久久精品国产99久久精品芒果 | 精品伦理精品一区| 国产一区二区三区在线观看免费 | 91麻豆精品91久久久久同性| 亚洲高清免费观看高清完整版在线观看|