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

📄 dsp2812-extad.c

📁 dsp2812平台下的例程
💻 C
字号:
/*************************************************************************
	filename:	DPS2812-AD.C
	designer:	戴展波
	date:		2004/12/17
*************************************************************************/
#include <string.h>
#include <math.h>
#include "DSP28_Device.h"
#include "DPS2812_FFT.h"
#include "DPS2812_REGISTER.h"

unsigned int adc_dealdata_flag;

unsigned long timer0_period;
unsigned long timer1_period;
unsigned long timer2_period;

void InitVariable(void);
void addata_deal(void);
interrupt void EXTERN_AD_INTERRUPT(void);

void main(void)
{
	//初始化定值
	InitVariable();
	//初始化系统控制
	InitSysCtrl();
	//关总中断
	DINT;
	IER = 0x0000;
	IFR = 0x0000;
	//初始化PIE控制
	InitPieCtrl();
	//初始化PIE矢量表
	InitPieVectTable();
	//初始化外设
	InitPeripherals();
	//初始化外部AD
	init_extern_ad();
	/*初始化EV*/
	InitEv();
	//AD中断服务子程序
	EALLOW;	// This is needed to write to EALLOW protected registers
	PieVectTable.XINT1 = &EXTERN_AD_INTERRUPT;	//XINT1_ISR;
	EDIS;   // This is needed to disable write to EALLOW protected registers
	//开启IER
	IER |= M_INT1;
	//使能总中断
	EINT;
	//使能全局实时中断DBGM
	ERTM;

	
	for(;;)
	{
		if(adc_dealdata_flag == 1)
		{
			//本次转换完成
			adc_dealdata_flag = 0;
			
		}
		KickDog();
	}
}

void InitVariable(void)
{
	adc_current_cannel = 0;
	ptr = 0;
	preptr = 0;
	ptrint = 0;
	halfptr = 0;
	halfpreptr = 0;
	halfptrint = 0;
	adc_dealdata_flag = 0;
	//timer2_period = 150000000 / 50 / ADC_N;
	
}

void addata_deal(void)
{
	
	
}

/*********************************************************************
	函数名:	void EEPROM_Write_Enable(void)
	目的:		EEPROM的写使能
	输入:		无
	输出:		无
*********************************************************************/
void init_extern_ad(void)
{
	unsigned int i;
	//清空ADC中断
	i = *EXT_ADC_READ;
	//清掉CPLD的AD
	*EXT_ADC_MODE = 0;
	//设置ADC模式
	*EXT_ADC_MODE = 0x1F;
	adc_cannel = 0x0F;
	adc_current_cannel = 0;
}

interrupt void EXTERN_AD_INTERRUPT(void)
{
	dataresult = *EXT_ADC_READ;
	if(dataresult < ZERO_POINT)
	{
		dataresult = dataresult | 0x8000;
	}
	else
	{
		dataresult = dataresult & 0x7fff;
	}
	switch(adc_current_cannel)
	{
		case 0:
			ad_result1[ptr] = dataresult;
			break;
			
		case 1:
			ad_result2[ptr] = dataresult;
			break;
			
		case 2:
			ad_result3[ptr] = dataresult;
			break;
			
		case 3:
			ad_result4[ptr] = dataresult;
			break;
			
		case 4:
			ad_result5[ptr] = dataresult;
			break;
			
		case 5:
			ad_result6[ptr] = dataresult;
			break;
			
		case 6:
			ad_result7[ptr] = dataresult;
			break;
			
		case 7:
			ad_result8[ptr] = dataresult;
			break;
			
		case 8:
			ad_result9[ptr] = dataresult;
			break;
			
		case 9:
			ad_result10[ptr] = dataresult;
			break;
			
		case 10:
			ad_result11[ptr] = dataresult;
			break;

		case 11:
			ad_result12[ptr] = dataresult;
			break;
			
		case 12:
			ad_result13[ptr] = dataresult;
			break;
		
		case 13:
			ad_result14[ptr] = dataresult;
			break;
		
		case 14:
			ad_result15[ptr] = dataresult;
			break;
		
		case 15:
			ad_result16[ptr] = dataresult;
			break;

		default:
			break;
	}
	
	if(adc_current_cannel == adc_cannel)
	{
		adc_current_cannel = 0;
		ptr++;
		if(ptr == ADC_N)
		{
			ptr = 0;
		}
		
		//设置标志位
		adc_dealdata_flag = 1;
	}
	else
	{
		adc_current_cannel++;
	}
	
	PieCtrl.PIEACK.bit.ACK1 = 1;
	EINT;
}

⌨️ 快捷键说明

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