⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dsp28_adc.c

📁 使用芯片为TI公司的DSP2812。该程序用以完成对直流电机的控制
💻 C
字号:
//
//      TMDX ALPHA RELEASE
//      Intended for product evaluation purposes
//
//###########################################################################
//
// FILE:	DSP28_Adc.c
//
// TITLE:	DSP28 ADC Initialization & Support Functions.
//
//###########################################################################
//
//  Ver | dd mmm yyyy | Who  | Description of changes
// =====|=============|======|===============================================
//  0.55| 06 May 2002 | L.H. | EzDSP Alpha Release
//  0.56| 20 May 2002 | L.H. | No change
//  0.57| 27 May 2002 | L.H. | No change
//###########################################################################

#include "DSP28_Device.h"

//---------------------------------------------------------------------------
// InitAdc: 
//---------------------------------------------------------------------------
// This function initializes ADC to a known state.
//
void InitAdc(void)
{
    unsigned int i;
	
	EALLOW;
    SysCtrlRegs.PCLKCR.bit.ADCENCLK=1;
	EDIS;
	AdcRegs.ADCTRL1.bit.RESET=1;
	for(i=0;i<20;i++) asm("NOP");
	AdcRegs.ADCTRL1.bit.RESET=0;
	AdcRegs.ADCTRL1.bit.SUSMOD=3;
	AdcRegs.ADCTRL1.bit.ACQ_PS=2; // 
	AdcRegs.ADCTRL1.bit.CPS=0;
	AdcRegs.ADCTRL1.bit.CONT_RUN=1;  // 0
	AdcRegs.ADCTRL1.bit.SEQ_CASC=1;
	
	AdcRegs.ADCTRL3.bit.ADCBGRFDN=3;
//	for(i=0;i<10000;i++)	NOP;
	AdcRegs.ADCTRL3.bit.ADCPWDN=1;
//	for(i=0;i<5000;i++)	NOP;                  
	AdcRegs.ADCTRL3.bit.ADCCLKPS=3; // 15
	AdcRegs.ADCTRL3.bit.SMODE_SEL=0;
	
	AdcRegs.MAX_CONV.bit.MAX_CONV=0;
	
	AdcRegs.CHSELSEQ1.bit.CONV00=8;  // ADCINB0
	AdcRegs.CHSELSEQ1.bit.CONV01=8;
	AdcRegs.CHSELSEQ1.bit.CONV02=8;
	AdcRegs.CHSELSEQ1.bit.CONV03=8;
	
	AdcRegs.CHSELSEQ2.bit.CONV04=8;
	AdcRegs.CHSELSEQ2.bit.CONV05=8;
	AdcRegs.CHSELSEQ2.bit.CONV06=8;
	AdcRegs.CHSELSEQ2.bit.CONV07=8;
	
	AdcRegs.CHSELSEQ3.bit.CONV08=8;
	AdcRegs.CHSELSEQ3.bit.CONV09=8;
	AdcRegs.CHSELSEQ3.bit.CONV10=8;
	AdcRegs.CHSELSEQ3.bit.CONV11=8;
	
	AdcRegs.CHSELSEQ4.bit.CONV12=8;
	AdcRegs.CHSELSEQ4.bit.CONV13=8;
	AdcRegs.CHSELSEQ4.bit.CONV14=8;
	AdcRegs.CHSELSEQ4.bit.CONV15=8;
	
	AdcRegs.ADC_ST_FLAG.bit.INT_SEQ1_CLR=1;
	AdcRegs.ADC_ST_FLAG.bit.INT_SEQ2_CLR=1;	
	
	AdcRegs.ADCTRL2.bit.EVB_SOC_SEQ=0;
	AdcRegs.ADCTRL2.bit.RST_SEQ1=0;
	AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1=1;
	AdcRegs.ADCTRL2.bit.INT_MOD_SEQ1=0;
	AdcRegs.ADCTRL2.bit.EVA_SOC_SEQ1=1;
	AdcRegs.ADCTRL2.bit.EXT_SOC_SEQ1=0;
	AdcRegs.ADCTRL2.bit.RST_SEQ2=0;
	AdcRegs.ADCTRL2.bit.SOC_SEQ2=0;
	AdcRegs.ADCTRL2.bit.INT_ENA_SEQ2=0;
	AdcRegs.ADCTRL2.bit.INT_MOD_SEQ2=0;
	AdcRegs.ADCTRL2.bit.EVB_SOC_SEQ2=0;
	AdcRegs.ADCTRL2.bit.SOC_SEQ1=0;
}	

static int SlipFilter[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
static int index = 0;

int Adc()
{
    int value, i;
    long sum;
	AdcRegs.ADCTRL2.bit.SOC_SEQ1 = 1;
	Delay(20);
	value = (((unsigned int)AdcRegs.RESULT0)>>4)&0x0FFF;
	SlipFilter[index++] = value;
	if(index>=16)
	{
	    index = 0;
	}
	sum = 0;
	for(i=0;i<16;i++)
	{
	    sum += SlipFilter[i];
	}
	sum >>= 4;
	value = sum;
	if(value ==  0)  value = 1;
	return(value);
}
//===========================================================================
// No more.
//===========================================================================

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -