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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? emeter-setup.c

?? msp430F437三相電表DEMO(編譯器 IAR 3.42A)
?? C
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
//--------------------------------------------------------------------------
//
//  Software for MSP430 based e-meters.
//
//  You may not use the Program in non-TI devices.
//
//  File: emeter-setup.c
//
//  Steve Underwood <steve-underwood@ti.com>
//  Texas Instruments Hong Kong Ltd.
//
//  $Id: emeter-setup.c,v 1.23 2005/12/20 10:17:57 a0754793 Exp $
//
/*! \file emeter-structs.h */
//
//--------------------------------------------------------------------------
//
//  MSP430 setup routines for e-meters.
//
//  This software is appropriate for single phase and three phase e-meters
//  using a voltage sensor plus CT or shunt resistor current sensors, or
//  a combination of a CT plus a shunt. 
//
#include <stdint.h>
#include <string.h>
#if !defined(__MSP430__)
#include <stdio.h>
#include <stdlib.h>
#endif
#if defined(__GNUC__)
#include <signal.h>
#endif
#include <io.h>
#include <emeter-toolkit.h>
#include "emeter.h"
#include "emeter-structs.h"

#if defined(__MSP430_HAS_SD16_3__)

#define SD16CONF0_FUDGE     0xC0    //0x70  //0xC0
#define SD16CONF1_FUDGE     0x40    //0x38  //0x40

/*
 * Analog front-end initialization routine.
 *
 * Configures the sigma-delta ADC module as analog front-end for
 * a tamper-resistant meter using a current transformer and a
 * shunt as current sensors (see configuration of channel 0 and 1).
 */
static __inline__ void init_analog_front_end_normal(void)
{
    /*
     * First it makes sure that the Embedded Signal Processing is 
     * disabled, otherwise it will not be possible to modify the 
     * SD16 registers.
     */
    ESPCTL &= ~ESPEN;

    /*
     * Then the general configurations of the analog front-end are done
     * that apply to all channels: clock selection (SMCLK) and divider
     * settings (depending on SMCLK frequency) and reference voltage
     * selections.
     */

    SD16CCTL_VOLTAGE &= ~SD16SC;
    SD16CCTL_LIVE &= ~SD16SC;
    #if defined(SINGLE_PHASE)  &&  defined(NEUTRAL_MONITOR_SUPPORT)
    SD16CCTL_NEUTRAL &= ~SD16SC;
    #endif

    #if defined(SINGLE_PHASE)
    SD16CTL = 0x800
            | SD16SSEL_1  /* Clock is SMCLK */
            | SD16DIV_3   /* Divide by 8 => ADC clock: 1.048576MHz */
            | SD16REFON;  /* Use internal reference */
    SD16INCTL_LIVE = SD16INCH_0 | CURRENT_LIVE_GAIN;            /* Set gain for channel 0 (I1) */
    SD16CCTL_LIVE = SD16OSR_256 | SD16DF | SD16GRP | SD16IE;    /* Set oversampling ratio to 256 (default) */
    SD16PRE_LIVE = 0;

        #if defined(NEUTRAL_MONITOR_SUPPORT)
    SD16INCTL_NEUTRAL = SD16INCH_0 | CURRENT_NEUTRAL_GAIN;      /* Set gain for channel 1 (I2) */
    SD16CCTL_NEUTRAL = SD16OSR_256 | SD16DF | SD16GRP | SD16IE; /* Set oversampling ratio to 256 (default) */
    SD16PRE_NEUTRAL = 0;
        #endif

    /* Configure analog front-end channel 2 - Voltage */
    SD16INCTL_VOLTAGE = SD16INCH_0 | VOLTAGE_GAIN;              /* Set gain for channel 2 (V) */
    SD16CCTL_VOLTAGE = SD16OSR_256 | SD16DF | SD16SC | SD16IE;  /* Set oversampling ratio to 256 (default) */
    SD16PRE_VOLTAGE = 0;
    #else
    SD16CTL = 0x800
            | SD16SSEL_1  /* Clock is SMCLK */
            | SD16DIV_0   /* Divide by 1 => ADC clock: 8*1.048576MHz */
            | SD16REFON;  /* Use internal reference */

    SD16INCTL0 = SD16INCH_0 | SD16GAIN_1;
    SD16CCTL0 = SD16OSR_128 | SD16DF | SD16SNGL | SD16GRP | SD16IE;
    SD16PRE0 = 0;

    SD16INCTL1 = SD16INCH_0 | SD16GAIN_1;
    SD16CCTL1 = SD16OSR_128 | SD16DF | SD16SNGL | SD16GRP | SD16IE;
    SD16PRE1 = 0;

    SD16INCTL_VOLTAGE = SD16INCH_0 | SD16GAIN_1;
    SD16CCTL_VOLTAGE = SD16OSR_128 | SD16DF | SD16SNGL | SD16IE;
    SD16PRE_VOLTAGE = 0;

    SD16CCTL2 |= SD16SC;
    #endif

    SD16CONF0 = SD16CONF0_FUDGE;                /* Tweaks recommended by Freising */
    SD16CONF1 = SD16CONF1_FUDGE;

    #if defined(SINGLE_PHASE)
    chan1.current.sd16_preloaded_offset = 0;
        #if defined(NEUTRAL_MONITOR_SUPPORT)
    chan1.neutral.sd16_preloaded_offset = 0;
        #endif
    #endif
    /*
     * \note 
     * Please note, the oversampling ratio should be the same 
     * for all channels. Default is 256.
     */
}

    #if defined(LIMP_MODE_SUPPORT)
static __inline__ void init_analog_front_end_limp(void)
{
    ESPCTL &= ~ESPEN;
    SD16CCTL_VOLTAGE &= ~SD16SC;
    SD16CCTL_LIVE &= ~SD16SC;
        #if defined(SINGLE_PHASE)  &&  defined(NEUTRAL_MONITOR_SUPPORT)
    SD16CCTL_NEUTRAL &= ~SD16SC;
        #endif
    SD16CTL = 0x800
            | SD16SSEL_1  /* Clock is SMCLK */
            | SD16DIV_3   /* Divide by 8 => ADC clock: 1.048576MHz */
            | SD16REFON   /* Use internal reference */
            | SD16LP;
    SD16INCTL_LIVE = SD16INCH_0 | CURRENT_LIVE_GAIN;                        /* Set gain for channel 0 (I1) */
    SD16CCTL_LIVE = SD16OSR_32 | SD16DF | SD16SNGL | SD16GRP | SD16IE;      /* Set oversampling ratio to 32 */
    SD16PRE_LIVE = 0;
    #if defined(SINGLE_PHASE)  &&  defined(NEUTRAL_MONITOR_SUPPORT)
    SD16INCTL_NEUTRAL = SD16INCH_0 | CURRENT_NEUTRAL_GAIN;                  /* Set gain for channel 1 (I2) */
    SD16CCTL_NEUTRAL = SD16OSR_32 | SD16DF | SD16SNGL | SD16GRP | SD16IE;   /* Set oversampling ratio to 32 */
    SD16PRE_NEUTRAL = 0;
    #endif
    SD16INCTL_VOLTAGE = SD16INCH_0 | VOLTAGE_GAIN;                  /* Set gain for channel 2 (V) */
    SD16CCTL_VOLTAGE = SD16OSR_32 | SD16DF | SD16SNGL | SD16IE;     /* Set oversampling ratio to 32 */
    SD16PRE_VOLTAGE = 0;
    SD16CONF0 = SD16CONF0_FUDGE;                                    /* Tweaks recommended by Freising */
    SD16CONF1 = SD16CONF1_FUDGE;

    chan1.current.sd16_preloaded_offset = 0;
        #if defined(SINGLE_PHASE)  &&  defined(NEUTRAL_MONITOR_SUPPORT)
    chan1.neutral.sd16_preloaded_offset = 0;
        #endif
}
    #endif

static __inline__ void disable_analog_front_end(void)
{
    ESPCTL &= ~ESPEN;

    SD16INCTL_VOLTAGE = 0;
    SD16CCTL_VOLTAGE = 0;
    SD16PRE_VOLTAGE = 0;

    SD16INCTL_LIVE = 0;
    SD16CCTL_LIVE = 0;
    SD16PRE_LIVE = 0;

    #if defined(SINGLE_PHASE)  &&  defined(NEUTRAL_MONITOR_SUPPORT)
    SD16INCTL_NEUTRAL = 0;
    SD16CCTL_NEUTRAL = 0;
    SD16PRE_NEUTRAL = 0;
    #endif

    SD16CTL = 0;

    SD16CONF0 = SD16CONF0_FUDGE;
    SD16CONF1 = SD16CONF1_FUDGE;

    #if defined(SINGLE_PHASE)
    chan1.current.sd16_preloaded_offset = 0;
        #if defined(NEUTRAL_MONITOR_SUPPORT)
    chan1.neutral.sd16_preloaded_offset = 0;
        #endif
    #endif
}
#endif

#if defined(__MSP430__)
void system_setup(void)
{
    #if !defined(SINGLE_PHASE)
    struct phase_parms_s *phase;
    struct phase_nv_parms_s const *phase_nv;
    int j;
    #endif

    #if defined(__MSP430_HAS_BT__)  ||  defined(__MSP430_HAS_BT_RTC__)
    /* Basic timer setup */
    /* Set ticker to 32768/(256*256) */
        #if defined(__MSP430_HAS_BT__)
    BTCTL = BT_fLCD_DIV64 | BT_fCLK2_DIV128 | BT_fCLK2_ACLK_DIV256;
        #else
    BTCTL = BT_fCLK2_DIV128 | BT_fCLK2_ACLK_DIV256;
        #endif
    /* Enable the 1 second counter interrupt */
    IE2 |= BTIE;

    /* We want a real watchdog function, but it doesn't have to be fast. */
    /* Use the longest timer - 1s */
        #if USE_WATCHDOG
    kick_watchdog();    /* Set the watchdog timer to exactly 1s */
        #else
    WDTCTL = (WDTCTL & 0xFF) | WDTPW | WDTHOLD;
        #endif
    #else
    IE1 |= WDTIE;               /* Enable the WDT interrupt */
    #endif

    #if (defined(BASIC_LCD_SUPPORT)  ||  defined(CUSTOM_LCD_SUPPORT))
    LCDinit();
    custom_lcd_init();
        #if defined(LCD_INIT)  &&  defined(__MSP430_HAS_LCD4__)
    LCDCTL = LCD_INIT;
        #endif
        #if defined(LCDACTL_INIT)  &&  defined(__MSP430_HAS_LCD_A__)
    LCDACTL = LCDACTL_INIT;
    LCDAPCTL0 = LCDAPCTL0_INIT;
    LCDAPCTL1 = LCDAPCTL1_INIT;
    LCDAVCTL0 = LCDAVCTL0_INIT;
    LCDAVCTL1 = LCDAVCTL1_INIT;
        #endif
    #endif

    #if defined(P1OUT_INIT)
    P1OUT = P1OUT_INIT;
    #endif
    #if defined(P1DIR_INIT)
    P1DIR = P1DIR_INIT;
    #endif
    #if defined(P1SEL_INIT)
    P1SEL = P1SEL_INIT;
    #endif

    #if defined(P2OUT_INIT)
    P2OUT = P2OUT_INIT;
    #endif
    #if defined(P2DIR_INIT)
    P2DIR = P2DIR_INIT;
    #endif
    #if defined(P2SEL_INIT)
    P2SEL = P2SEL_INIT;
    #endif

    #if defined(P3OUT_INIT)
    P3OUT = P3OUT_INIT;
    #endif
    #if defined(P3DIR_INIT)
    P3DIR = P3DIR_INIT;
    #endif
    #if defined(P3SEL_INIT)
    P3SEL = P3SEL_INIT;
    #endif

    #if defined(P4OUT_INIT)
    P4OUT = P4OUT_INIT;
    #endif
    #if defined(P4DIR_INIT)
    P4DIR = P4DIR_INIT;
    #endif
    #if defined(P4SEL_INIT)
    P4SEL = P4SEL_INIT;
    #endif

    #if defined(P5OUT_INIT)
    P5OUT = P5OUT_INIT;
    #endif
    #if defined(P5DIR_INIT)
    P5DIR = P5DIR_INIT;
    #endif
    #if defined(P5SEL_INIT)
    P5SEL = P5SEL_INIT;
    #endif

    #if defined(P6OUT_INIT)
    P6OUT = P6OUT_INIT;
    #endif
    #if defined(P6DIR_INIT)
    P6DIR = P6DIR_INIT;
    #endif
    #if defined(P6SEL_INIT)
    P6SEL = P6SEL_INIT;
    #endif

    #if defined(IO_EXPANDER_SUPPORT)
    set_io_expander(0, 0);
    #endif
    
    #if defined(BASIC_LCD_SUPPORT)
    display_startup_message();
    #endif

    #if defined(__MSP430_HAS_DCO__)
    /* Set up the DCO clock */
    BCSCTL1 |= (RSEL0 | RSEL1 | RSEL2); /* Select the highest nominal freq */
    BCSCTL2 |= DCOR;                    /* Select the external clock control resistor pin */
    DCOCTL = 0xFF;                      /* Select the highest speed. */
    #endif
    #if defined(__MSP430_HAS_FLLPLUS__)  ||  defined(__MSP430_HAS_FLLPLUS_SMALL__)
    FLL_CTL0 |= XCAP10PF;               /* Configure load caps */
        #if defined(XT2OFF)
    FLL_CTL1 |= XT2OFF;
        #endif
    SCFI0 = FLLD_1;                     /* Freq = 1.024MHz */
    SCFQCTL = 32 - 1;
    FLL_CTL0 |= DCOPLUS;
    /* There seems no benefit in waiting for the FLL to settle at this point. */
    #endif

    #if defined(LIMP_MODE_SUPPORT)
    samples_per_second = LIMP_SAMPLES_PER_10_SECONDS/10;
    #else
    samples_per_second = SAMPLES_PER_10_SECONDS/10;
    #endif

    #if defined(__MSP430_HAS_TA3__)  &&  defined(__MSP430_HAS_ADC12__)
    /* Use timer A to control the ADC sampling interval, and the ADC on/off timing. */
    /* TACCR0 determines the sample period */
    TAR = 0;
        #if defined(LIMP_MODE_SUPPORT)
    TACCR0 = (SAMPLE_PERIOD*LIMP_SAMPLING_RATIO) - 1;
    TACCR1 = (SAMPLE_PERIOD*LIMP_SAMPLING_RATIO) - 3;
    TACCR2 = (SAMPLE_PERIOD*LIMP_SAMPLING_RATIO) - 4;
        #else
    TACCR0 = SAMPLE_PERIOD - 1;
    TACCR1 = SAMPLE_PERIOD - 3;
    TACCR2 = SAMPLE_PERIOD - 4;
        #endif
    TACCTL0 = 0;
    TACCTL1 = OUTMOD_3;
        #if defined(FINE_ENERGY_PULSE_TIMING_SUPPORT)
    TACCTL2 = OUTMOD_0 | OUT;           /* Turn off the pulse LED */
        #endif    
    TACTL = TACLR | MC_1 | TASSEL_1;
    #endif

    #if defined(__MSP430_HAS_TA3__)  &&  defined(__MSP430_HAS_SD16_3__)
    /* Use timer A to control the ADC sampling interval in limp mode. */
    /* CCR0 determines the sample period - 1024Hz */
    TAR = 0;
    TACCR0 = 32 - 1;
    TACCTL0 = 0;
    TACCTL1 = OUTMOD_3;
    TACTL = TACLR | MC_1 | TASSEL_1;
    #endif

    #if defined(PWM_DITHERING_SUPPORT)
    /* Configure timer B to generate a dithering signal, to be added to the     */
    /* analogue signals, something like this.                                   */
    /*                                                                          */
    /*   -----------------                100n                                  */
    /*                    |    __47k_     ||    __1M__       __4K7__            */
    /*                TB1 |->-|______|-- -||---|______|->---|_______|--< Signal */
    /*                    |             | ||              |                     */
    /*                    |           -----               |                     */
    /*                    |           -----2n2            |                     */
    /*                    |             |                 |                     */
    /*                    |            GND                |                     */
    /*                    |                               |                     */
    /*                A0  |-<-----------------------------                      */
    /*                    |                                                     */
    P2SEL |= BIT2;                      /* Select P2.2 for PWM output */
    P2DIR |= BIT2;                      /* Select P2.2 for PWM output */

    TBR = 0;
    TBCCR0 = PWM_FREQ - 1;              /* load period register */
    TBCCR1 = PWM_MID_POINT;             /* start with 50% PWM duty cycle */
    TBCCR2 = PWM_FREQ - 1;
    TBCCTL0 = OUTMOD_4;                 /* set outmode 4 for toggle */
    TBCCTL1 = OUTMOD_6 | CLLD_1;        /* set outmode 6 Toggle/set */
                                        /* load new CCR1 when TBR = 0 */
    TBCCTL2 = OUTMOD_4;
    TBCTL = TBCLR | MC_1 | TBSSEL_2;    /* start TIMER_B up mode, SMCLK as input clock */
    #endif

    #if defined(__MSP430_HAS_ADC12__)
    /* Set up the ADC12 */
    /* Disable conversion while changing the settings */
    ADC12CTL0 = 0;
        #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;

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
香蕉久久一区二区不卡无毒影院| 国产高清精品网站| 国产精品免费av| 日韩欧美中文字幕精品| 一本到一区二区三区| 国产在线看一区| 亚洲观看高清完整版在线观看| 国产亚洲美州欧州综合国| 欧美日韩高清影院| 成人综合在线网站| 国产一区二区不卡| 久久成人av少妇免费| 亚洲国产一区二区a毛片| 亚洲日穴在线视频| 国产精品久久久久久亚洲毛片| 欧美久久一区二区| 欧美亚洲综合另类| 91免费看片在线观看| k8久久久一区二区三区| 国内成+人亚洲+欧美+综合在线 | 久久人人97超碰com| 91精品国产91久久久久久最新毛片 | 欧美日韩一二三| 欧美日韩精品一区视频| 欧美亚洲另类激情小说| 91亚洲国产成人精品一区二三| 国产福利精品导航| 麻豆国产精品官网| 日韩电影在线免费| 毛片不卡一区二区| 国内精品写真在线观看| 国产91富婆露脸刺激对白| 国产精品99久久久| 94-欧美-setu| 91福利精品视频| 51精品视频一区二区三区| 日韩欧美一区在线观看| 久久伊人蜜桃av一区二区| 国产欧美一区二区精品性| 亚洲色图视频网| 首页综合国产亚洲丝袜| 免费一区二区视频| 久99久精品视频免费观看| 国产高清无密码一区二区三区| 91在线观看视频| 在线不卡的av| 国产精品视频一二三| 亚洲黄色片在线观看| 久久爱另类一区二区小说| 丁香婷婷综合网| 欧美理论在线播放| 中文在线资源观看网站视频免费不卡| 亚洲日本一区二区| 美女性感视频久久| 91网上在线视频| 欧美电影免费观看高清完整版在线 | 亚洲欧美综合另类在线卡通| 亚洲国产另类av| 不卡电影一区二区三区| 欧美日韩一级大片网址| 中文字幕不卡的av| 青青青伊人色综合久久| a美女胸又www黄视频久久| 8x8x8国产精品| 亚洲一区二区三区四区在线观看| 蜜臀av性久久久久蜜臀aⅴ四虎 | 久久国产福利国产秒拍| 91免费观看视频| 国产色综合久久| 国产综合色在线视频区| 欧美日韩一区精品| 亚洲色图欧美偷拍| 国产suv一区二区三区88区| 日韩亚洲欧美成人一区| 亚洲成在人线在线播放| av爱爱亚洲一区| 中文字幕日韩av资源站| 国产一区二区导航在线播放| 欧美成人vps| 久久精品国产精品青草| 欧美一级专区免费大片| 日韩精品视频网站| 欧美日韩不卡在线| 一区二区三区影院| 91免费视频观看| 亚洲日本护士毛茸茸| 波多野结衣在线一区| 久久久噜噜噜久噜久久综合| 久久er99热精品一区二区| 欧美一区二区在线播放| 日本美女视频一区二区| 91精品欧美综合在线观看最新| 婷婷国产v国产偷v亚洲高清| 欧美影院午夜播放| 日韩精品欧美精品| 欧美一卡二卡在线观看| 久久www免费人成看片高清| 精品国产123| 成人高清视频在线| 一区二区三区日韩精品| 欧美日韩亚洲不卡| 亚洲va欧美va人人爽| 日韩丝袜美女视频| 国产精品一区在线观看你懂的| 国产精品视频麻豆| 色婷婷综合激情| 99国产精品99久久久久久| 国产精品伦理一区二区| 在线观看日韩一区| 蜜乳av一区二区三区| 欧美激情综合网| 欧美视频一区在线观看| 老司机一区二区| 亚洲欧洲日产国产综合网| 欧美日韩专区在线| 国产精品亚洲专一区二区三区| 综合久久一区二区三区| 在线播放国产精品二区一二区四区| 激情欧美一区二区三区在线观看| 国产精品久久久久桃色tv| 一本一本大道香蕉久在线精品| 视频一区视频二区在线观看| 久久久久国产精品免费免费搜索| 91浏览器打开| 国产剧情一区二区| 亚洲午夜在线视频| 国产精品久久一卡二卡| 制服丝袜av成人在线看| 99精品欧美一区| 国产另类ts人妖一区二区| 午夜伊人狠狠久久| 国产精品第一页第二页第三页| 日韩区在线观看| 欧美色图第一页| 色综合久久久网| 大胆亚洲人体视频| 韩国三级电影一区二区| 亚洲h精品动漫在线观看| 一区在线播放视频| 久久久久久久久免费| 欧美日韩美少妇| 97久久超碰国产精品电影| 国产在线播放一区二区三区| 午夜一区二区三区在线观看| 亚洲欧洲制服丝袜| 亚洲国产精品激情在线观看| 26uuu色噜噜精品一区二区| 777午夜精品免费视频| 欧美日韩精品欧美日韩精品| 色呦呦国产精品| 91蝌蚪国产九色| 99re热这里只有精品免费视频| 成人av午夜电影| 欧美日韩国产精品成人| 欧美日韩日日骚| 制服丝袜国产精品| 欧美精品一区二区三区高清aⅴ | 亚洲一区av在线| 亚洲18女电影在线观看| 亚洲激情一二三区| 亚洲国产精品久久一线不卡| 天天综合日日夜夜精品| 日韩不卡一区二区三区| 精品在线播放免费| 处破女av一区二区| 色域天天综合网| 91精品国产综合久久香蕉的特点| 日韩亚洲欧美在线观看| 国产亚洲欧洲997久久综合| 亚洲国产精品黑人久久久| 亚洲欧美一区二区久久| 午夜精品久久久久| 国产一区二区三区在线看麻豆| 懂色av中文字幕一区二区三区| 91久久精品午夜一区二区| 3atv一区二区三区| 国产欧美一区二区精品婷婷 | caoporen国产精品视频| 欧美最新大片在线看| 88在线观看91蜜桃国自产| 国产日韩欧美高清| 亚洲一区影音先锋| 国产精品一卡二| 欧美亚洲一区三区| 久久综合九色综合97_久久久| 亚洲色大成网站www久久九九| 婷婷激情综合网| 成人avav在线| 日韩女优av电影| 最新中文字幕一区二区三区| 天天操天天综合网| 99精品一区二区| 久久―日本道色综合久久| 亚洲国产精品自拍| 波多野结衣欧美| 欧美一卡2卡三卡4卡5免费| 中文字幕在线不卡| 国产一区二区在线免费观看| 欧美日韩国产a| 亚洲黄色av一区|