?? example_281xevpwm.c
字號:
#include "DSP281x_Device.h"
#include "DSP281x_Examples.h"
interrupt void adc_isr(void);
Uint16 AdcData=0;
Uint16 count,m=0;
long int i=0;
void Adc_Init()
{
AdcRegs.ADCTRL3.bit.ADCCLKPS = 5; // ADCCLK=7.5Mhz
AdcRegs.ADCTRL1.bit.ACQ_PS = 2; // Acq Time=3ADC CLK
AdcRegs.ADCTRL1.bit.CPS = 0; //不分頻
AdcRegs.ADCTRL1.bit.SEQ_CASC = 1; //級聯(lián)模式
AdcRegs.ADCMAXCONV.bit.MAX_CONV1 = 0; // 通道數(shù)為1
AdcRegs.ADCCHSELSEQ1.bit.CONV00 =0x3; //選擇ADCIN3
AdcRegs.ADCTRL2.bit.EVA_SOC_SEQ1 = 1; // Enable EVASOC to start SEQ1
AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1 = 1; // Enable SEQ1 interrupt (every EOS)
//EvaRegs.GPTCONA.bit.T1TOADC = 1;
}
/*void Adc_PowerUP()
{ AdcRegs.ADCTRL3.bit.ADCBGRFDN = 0x3; // Power up bandgap/reference circuitry
for(i=0;i<1000000;i++){} // Delay before powering up rest of ADC
AdcRegs.ADCTRL3.bit.ADCPWDN = 1; // Power up rest of ADC
for(i=0;i<10000;i++){}
}*/
void EVA_Timer()
{
EvaRegs.GPTCONA.all=0;
EvaRegs.T1PR=1000;//
// EvaRegs.EXTCONA.bit.INDCOE=1;
EvaRegs.GPTCONA.all=0x81;//比較輸出低有效
EvaRegs.GPTCONA.bit.T1TOADC=1;//下溢中斷 開AD
// EvaRegs.GPTCONA.bit.T1PIN=1;//比較中斷
EvaRegs.T1CNT=0;
EvaRegs.T1CON.all=0x1742;//增計數(shù) 開定時器 開比較中斷
/* EvaRegs.T2PR=18;
//EvaRegs.T2PR=0x9895;
EvaRegs.GPTCONA.bit.T2PIN=1;//比較中斷
EvaRegs.T2CNT=0x0000;
EvaRegs.T2CON.all=0x1742;*/
}
void main(void)
{
InitSysCtrl();//初始化
EALLOW;
SysCtrlRegs.HISPCP.all=0x3;//設置時鐘頻率為25MHz
EDIS;
DINT; //關中斷
IER = 0x0000;
IFR = 0x0000;
InitPieCtrl();
InitPieVectTable();
InitAdc();
EVA_Timer();
Adc_Init();
count=0;
EALLOW;
PieVectTable.ADCINT=&adc_isr;
EDIS;
PieCtrlRegs.PIEIER1.bit.INTx6=1;
IER|=M_INT1;
EINT;
ERTM;
while (1)
{
}
}
interrupt void adc_isr(void)
{ count=0;
m++;
AdcRegs.ADCTRL2.bit.SOC_SEQ1=1;
while (AdcRegs.ADCST.bit.SEQ1_BSY == 1)
{}
AdcData=AdcRegs.ADCRESULT0>>4;
if(AdcData>=4095)
{AdcData=4095;}
if(AdcData<=0)
{AdcData=0;}
while(AdcData<=4095&&AdcData>2047)
{
EvaRegs.T2CMPR=(int16)(AdcData--)*18/4095;}
while(AdcData<=2047&&AdcData>0)
{ EvaRegs.T2CMPR=(int16)(AdcData++)*18/4095;}
// EvaRegs.T2CMPR=AdcData*18/4095;
AdcRegs.ADCTRL2.bit.RST_SEQ1=1;
AdcRegs.ADCST.bit.INT_SEQ1_CLR=1;
PieCtrlRegs.PIEACK.all=PIEACK_GROUP1;
return;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -