📄 adc_isr.c
字号:
#include "Spmc75_regs.h"
#include "mcMACRO.h"
#include "Backup_VAR.h"
#include "BCD-BIN.h"
unsigned int ADC_Buffer[3];
//滑动平均缓冲区
unsigned int ADC_Queue_Buffer[16];
unsigned int ADC_Queue_Add;
int ADC_Queue_NUM;
unsigned int DC_BUS_Voltage;
unsigned int Moto_Current;
unsigned int ADC_F_Buffer = 0;
void ADC_Init(void)
{
int i;
P_IOA_Dir->W &= 0xffe3;
P_IOA_Attrib->W |= 0x001c;
P_IOA_Buffer->W |= 0x001c;
P_ADC_Channel->W = 0x001c;
P_ADC_Setup->B.ADCCS = CB_ADC_ADCCS_Select;
P_ADC_Setup->B.ADCEN = CB_ADC_ADCEN;
P_ADC_Setup->B.ADCFS = CB_ADC_ADCFS_CPUCLKdiv64;
P_ADC_Ctrl->B.ADCCHS = CB_ADC_ADCCHS_Ch2;
ADC_Queue_NUM = 0;
ADC_Queue_Add = 0;
for(i = 0;i < 16;i ++)
ADC_Queue_Buffer[i] = 0;
}
//=============================================================
// ----Function: void ADC_conversion(void);
// -Description: ADC转换服务
// --Parameters: None
// -----Returns: None
// -------Notes: 建议10ms采样一次
//=============================================================
void ADC_conversion(void)
{
P_ADC_Ctrl->B.ADCCHS = 2; //电流采集
P_ADC_Ctrl->B.ADCSTR = 1;
while((P_ADC_Ctrl->W & 0x0080) == 0);
ADC_Buffer[0] = 65472 - P_ADC_Data->W;
P_ADC_Ctrl->B.ADCCHS = 3; //电压采集
P_ADC_Ctrl->B.ADCSTR = 1;
while((P_ADC_Ctrl->W & 0x0080) == 0);
ADC_Buffer[1] = 65472 - P_ADC_Data->W;
//根据设置进行下面的转换
if(F_CH_Set == 1)
{
P_ADC_Ctrl->B.ADCCHS = 4;
P_ADC_Ctrl->B.ADCSTR = 1;
while((P_ADC_Ctrl->W & 0x0080) == 0);
ADC_Buffer[2] = P_ADC_Data->W >> 6;
}
}
void ADC_Acc(void)
{
unsigned int Data_Temp;
Moto_Current = MUL_DIV(ADC_Buffer[1],Current_Define,3200); //负载电流 ( *100)
DC_BUS_Voltage = MUL_DIV(ADC_Buffer[0],Voltage_Define,2100); //干线电压
if(F_CH_Set == 1) //滑动平均
{
ADC_Queue_Add -= ADC_Queue_Buffer[ADC_Queue_NUM];
ADC_Queue_Add += ADC_Buffer[2];
ADC_Queue_Buffer[ADC_Queue_NUM] = ADC_Buffer[2];
ADC_Queue_NUM ++;
if(ADC_Queue_NUM > 15) ADC_Queue_NUM = 0;
Data_Temp = DIV16(ADC_Queue_Add,16);
if(Data_Temp > 0x0400) Data_Temp = 0x0400; //防止计算溢出
//频率值计算并存入寄存器 计算为( *100)格式
Data_Temp = MUL_L_Shift6(UP_END_F,Data_Temp); //获得当前模拟设置的频率值
ADC_F_Buffer = Data_Temp;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -