📄 slope.c
字号:
/****************************************************************************
文件名:main.c
编写者:czhang
描述:用比较器A进行斜边AD转换模块。用于13xx 14xx 15xx 16xx系列。
MCLK:DCO ACLK:32.768kHz
版本:2005-4 V1.0
*****************************************************************************/
#include <msp430x14x.h>
#include <math.h>
#include "slope.h"
#include "general.h"
#include "comparator.h"
#include "df_bh_timera.h"
#define RDIR P1DIR
#define ROUT P1OUT
#define REF BIT0
#define REF_ZHI 10 //参考电阻的阻值,单位为千欧
unsigned int time_ref; //通过time_ref放电的时间
/****************************************************************************
斜边AD转换
返回值:电压值
*****************************************************************************/
float Slope()
{
float fvin;
unsigned int time_rse,time0,time1;
ROUT |= REF; //通过REF充电
DelayMs(15); //延时15ms
ClearBuHuo();
time0=TAR;
ROUT &= ~REF; //通过REF放电
while(GetTime(&time1)==0); //读REF放电的时间
time_rse=time1-time0;
//计算电压值
fvin=3.3*exp(((float)time_rse/time_ref)*(-1.3862944));
return fvin;
}
/****************************************************************************
测量通过Rref放电时间
*****************************************************************************/
void CeRref()
{
unsigned int time0,time1;
//充电
CompInitRef(); //初始化比较器A
CompOpen(100); //打开比较器
RDIR |= REF; //通过REF充电
ROUT |= REF;
DelayMs(15); //延时15ms
ClearBuHuo();
time0=TAR;
//测通过REF放电时间
ROUT &= ~REF; //通过REF放电
while(GetTime(&time1)==0); //读REF放电的时间
time_ref=time1-time0;
CompInitVin(); //初始化比较器A,准备进行AD转换
CompOpen(100); //打开比较器
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -