📄 adc.c
字号:
#include <MSP430X42X.h>
#include "SysConfig.h"
#include "Global.h"
#define Analog_PWRON P2OUT|= BIT2
#define Analog_PWROFF P2OUT&=!BIT2
unsigned char ADCFlag0=0;
unsigned char ADCFlag1=0;
void ADC_Init()
{
#if (OUT_MODE==FREQ)
SD16CTL=SD16DIV_3+SD16SSEL_0;
#else
SD16CTL=SD16DIV_2+SD16SSEL_0;
#endif
SD16INCTL0 = SD16GAIN_1 + SD16INCH_0; // 1x gain, channel pair0
SD16CCTL0 = SD16DF+SD16IE; // Continuous conv., 2s compl.
SD16INCTL1 = SD16GAIN_1 + SD16INCH_1; // 1x gain, channel pair1
SD16CCTL1 = SD16DF+SD16SNGL ;//+ SD16IE; // Continuous conv., 2s compl.
}
#pragma vector = SD16_VECTOR
__interrupt void SD16_ISR(void)
{
if ((SD16CCTL0 & SD16IFG)) ADCFlag0=1;
if ((SD16CCTL1 & SD16IFG)) ADCFlag1=1;
SD16CCTL0 &=~ SD16IFG;
SD16CCTL0 &=~ SD16OVIFG;
SD16CCTL1 &=~ SD16IFG;
SD16CCTL1 &=~ SD16OVIFG;
__low_power_mode_off_on_exit();
}
long int ADC_MeasureInput()
{
long int var,sum=0;
unsigned int i;
SD16CCTL0 |= SD16SC;
for(i=0;i<128;i++)
{
while(1)
{
if(ADCFlag0) break;
LPM0;
}
ADCFlag0=0;
SD16CCTL0 &= ~SD16LSBACC;
var = (long)(int)SD16MEM0 << 6;
SD16CCTL0 |= SD16LSBACC;
var |= ((int)SD16MEM0 & 0xFC) >> 2;
sum+=var;
}
SD16CCTL0 &=~SD16SC;
return(sum/128); //光电测试技术 朴少光
}
long int ADC_MeasureInput_AVE()
{
long int var;
long long int sum=0;
unsigned int i;
SD16CCTL0 |= SD16SC;
for(i=0;i<2048;i++)
{
while(1)
{
if(ADCFlag0) break;
LPM0;
}
ADCFlag0=0;
SD16CCTL0 &= ~SD16LSBACC;
var = (long)(int)SD16MEM0 << 6;
SD16CCTL0 |= SD16LSBACC;
var |= ((int)SD16MEM0 & 0xFC) >> 2;
sum+=var;
}
SD16CCTL0 &=~SD16SC;
return(sum/2048); //光电测试技术 朴少光
}
int ADC_MeasureBattery()
{
int BattVal;
SD16CCTL1 |= SD16SC;
while((SD16CCTL1 & SD16IFG)==0);
BattVal=(int)SD16MEM1;
if(BattVal>(BATT_FULL*655360)/(VOL_REF*11)) return(3) ;
if(BattVal>(BATT_2*655360)/(VOL_REF*11)) return(2) ;
if(BattVal>(BATT_1*655360)/(VOL_REF*11)) return(1) ;
return(0) ;
}
void ADC_Measure()
{
Analog_PWRON;
Batt_Level=ADC_MeasureBattery();
Batt_Level=ADC_MeasureBattery();
InputValue=ADC_MeasureInput();
Analog_PWROFF;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -