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

📄 epower_28x_interrupt.c.bak

📁 在TI的TMSF2812平台上
💻 BAK
📖 第 1 页 / 共 2 页
字号:
                	samplen ++;
                	samplen_temp = 1;
				}
			}
			else					// 其他点开始采集插值程序
			{
				phaze = 0;
				
				adcdata_time[timen] = adcdata_timef - adcdata_time[timen];

				if(adcdata_time[timen] < realtime)
            	{
					if((samplen == 0)||(samplen == 64)||(samplen == 128)||(samplen == 192))
					{
                		if(dcyc > (cyclen/2)) dcyc --;
						else if(dcyc < (cyclen/2)) dcyc ++;
					}
                
                	samplen_temp = 0;
                	//插入其它程序30uS以内完成
				}
            	else
            	{
                	if(adcdata_time[timen] == realtime)
                	{
						adcdata_ua[samplen] = adc_ua[tempn];
                    	adcdata_ub[samplen] = adc_ub[tempn];
                    	adcdata_uc[samplen] = adc_uc[tempn];
                    	adcdata_ia[samplen] = adc_ia[tempn];
                    	adcdata_ib[samplen] = adc_ib[tempn];
						adcdata_ic[samplen] = adc_ic[tempn];
                	}
					else
                	{
                    	time1 = realtime - adcdata_time[timen - 1];
                    	time2 = adcdata_time[timen] - adcdata_time[timen - 1];

                    	if(tempn == 0) tempn_1 = 1;
                    	else tempn_1 = 0;

                    	adcdata_ua[samplen] = (adc_ua[tempn] - adc_ua[tempn_1])*time1/time2 + adc_ua[tempn_1];
                    	adcdata_ub[samplen] = (adc_ub[tempn] - adc_ub[tempn_1])*time1/time2 + adc_ub[tempn_1];
                    	adcdata_uc[samplen] = (adc_uc[tempn] - adc_uc[tempn_1])*time1/time2 + adc_uc[tempn_1];
                    	adcdata_ia[samplen] = (adc_ia[tempn] - adc_ia[tempn_1])*time1/time2 + adc_ia[tempn_1];
                		adcdata_ib[samplen] = (adc_ib[tempn] - adc_ib[tempn_1])*time1/time2 + adc_ib[tempn_1];
                		adcdata_ic[samplen] = (adc_ic[tempn] - adc_ic[tempn_1])*time1/time2 + adc_ic[tempn_1];
                	}
					realtime += dcyc;
					samplen_temp = 1;
					samplen ++;
        		}
        	}
        }
        
        /* 实时插值程序 */
		if(sample_cap == 1)
		// 仅捕获一次,CAPB捕获下降沿,开始插值
		{
			samplen = samplen_1;
			
			adcdata_ua[samplen] = adc_ua[tempn];
        	adcdata_ub[samplen] = adc_ub[tempn];
			adcdata_uc[samplen] = adc_uc[tempn];
			adcdata_ia[samplen] = adc_ia[tempn];
			adcdata_ib[samplen] = adc_ib[tempn];
			adcdata_ic[samplen] = adc_ic[tempn];
			
			time_temp = ReadCpuTimer0Counter();
			time_temp = adcdata_time[timen] - time_temp;
			ReloadCpuTimer0();
        	StartCpuTimer0();
        	adcdata_timef = ReadCpuTimer0Counter() + time_temp;
        	timen = 0;
			adcdata_time[timen] = 0;
			realtime = dcyc;
			
			samplen_temp = 1;
			samplen ++;
			sample_cap = 0;
			sampleflag = 1;
		}
        
        /* 纠正串扰程序 */
        if((McbspaRegs.MFFRX.bit.RXFFST != 0)&&(McbspaRegs.MFFRX.bit.RXFFST != 6))
    	{
    		if(tempn == 0)
    		{
    			adc_ua[0] = adc_ua[1];
    			adc_ub[0] = adc_ub[1];
    			adc_uc[0] = adc_uc[1];
    			adc_ia[0] = adc_ia[1];
    			adc_ib[0] = adc_ib[1];
    			adc_ic[0] = adc_ic[1];
    		}
    		else
    		{
    			adc_ua[1] = adc_ua[0];
    			adc_ub[1] = adc_ub[0];
    			adc_uc[1] = adc_uc[0];
    			adc_ia[1] = adc_ia[0];
    			adc_ib[1] = adc_ib[0];
    			adc_ic[1] = adc_ic[0];
    		}
    		
    		if(samplen_temp == 1)
    		{
    			if(tempn == 0) tempn_1 = 255;
                else tempn_1 = samplen - 1;
                
    			if(tempn == 0)
    			{
    				adcdata_ua[tempn_1] = adc_ua[1];
    				adcdata_ub[tempn_1] = adc_ub[1];
    				adcdata_uc[tempn_1] = adc_uc[1];
    				adcdata_ia[tempn_1] = adc_ia[1];
    				adcdata_ib[tempn_1] = adc_ib[1];
    				adcdata_ic[tempn_1] = adc_ic[1];
    			}
    			else
    			{
    				adcdata_ua[tempn_1] = adc_ua[0];
    				adcdata_ub[tempn_1] = adc_ub[0];
    				adcdata_uc[tempn_1] = adc_uc[0];
    				adcdata_ia[tempn_1] = adc_ia[0];
    				adcdata_ib[tempn_1] = adc_ib[0];
    				adcdata_ic[tempn_1] = adc_ic[0];
    			}
    		}

    		McbspaRegs.MFFRX.bit.RXFIFO_RESET = 0;  // Reset Receive channel
        	McbspaRegs.MFFRX.bit.RXFIFO_RESET = 1;  // Enable Receive channel
    	}
    	/* 纠正串扰程序结束 */
        
        timen ++;
		tempn ++;
    	
    	if(tempn == 2) tempn =0;
    	if(samplen == 256 ) samplen = 0;
    	
    	/* 零点时修正程序段 */
/*    	if((samplen == 129)&&(samplen_temp == 1))		// 下降沿时修正
    	{
    		if((xxua_old > 0)&&(xxua > 0))				// 采样慢修正
    		{
    			if(samplen_1 == 0) samplen_1 = 255;
    			else samplen_1 --;						// 对于起始取值数修正
    		}
    		else
    		{
    			if((xxua_old < 0)&&(xxua < 0))			// 采样快修正
    			{
    				if(samplen_1 == 255) samplen_1 = 0;
    				else samplen_1 ++;					// 对于起始取值数修正
    			}
    		}
    	}
    	
    	// 下降沿修正结束
    	if((samplen == 2)&&(samplen_temp == 1))			// 上降沿时修正
    	{
    		if((xxua_old < 0)&&(xxua < 0))				// 采样慢修正
    		{
    			if(samplen_1 == 0) samplen_1 = 255;
    			else samplen_1 --;						// 对于起始取值数修正
    		}
    	
    	if((samplen == 0)&&(samplen_temp == 1))
    	{
    		if((xxua_old > 0)&&(xxua > 0))				// 采样快修正
    		{
    			if(samplen_1 == 255) samplen_1 = 0;
    			else samplen_1 ++;						// 对于起始取值数修正
    		}
    	}*/												// 上降沿修正结束
    	/* 零点修正程序段结束 */
    	
    	if((fftflag == 0)&&(fftstart == 0)&&(phaze == 1))
    	{
    		fftstart = 1;
    	}
    	
    	phaze =0;
    	
    	/* 取FFT运算所需的数组 */
		if(fftstart == 1)
		{
			if(fftn == 0)
			{
				if(arc_temp > up_t_old) arc_temp -= up_t_old;
				else arc_temp = 65536 + arc_temp - up_t_old;
				arc = arc_temp;
				
				if(samplen == 0)
				{
					fftdata_ua[0] = adcdata_ua[255];
					fftdata_ub[0] = adcdata_ub[255];
					fftdata_uc[0] = adcdata_uc[255];
        			fftdata_ia[0] = adcdata_ia[255];
         			fftdata_ib[0] = adcdata_ib[255];
         			fftdata_ic[0] = adcdata_ic[255];
         		}
         		else
         		{
         			fftdata_ua[0] = adcdata_ua[samplen - 1];
					fftdata_ub[0] = adcdata_ub[samplen - 1];
					fftdata_uc[0] = adcdata_uc[samplen - 1];
        			fftdata_ia[0] = adcdata_ia[samplen - 1];
         			fftdata_ib[0] = adcdata_ib[samplen - 1];
         			fftdata_ic[0] = adcdata_ic[samplen - 1];
         		}
         		samplen_2 = samplen;
         		fftn++;
			}
			else
			{
				if(samplen != samplen_2)
				{
					if(samplen == 0)
					{
						fftdata_ua[fftn] = adcdata_ua[255];
						fftdata_ub[fftn] = adcdata_ub[255];
						fftdata_uc[fftn] = adcdata_uc[255];
        				fftdata_ia[fftn] = adcdata_ia[255];
         				fftdata_ib[fftn] = adcdata_ib[255];
         				fftdata_ic[fftn] = adcdata_ic[255];
         			}
         			else
         			{
         				fftdata_ua[fftn] = adcdata_ua[samplen - 1];
						fftdata_ub[fftn] = adcdata_ub[samplen - 1];
						fftdata_uc[fftn] = adcdata_uc[samplen - 1];
        				fftdata_ia[fftn] = adcdata_ia[samplen - 1];
         				fftdata_ib[fftn] = adcdata_ib[samplen - 1];
         				fftdata_ic[fftn] = adcdata_ic[samplen - 1];
         			}
         		samplen_2 = samplen;
         		fftn++;
         		}
         	}
		}
		
		if(fftn == 1024)
    	{
    		fftflag = 1;
    		fftstart = 0;
    		fftn = 0;
    	}
    	/* 取FFT运算所需数组结束 */

    	if((samplen == samplen_1)&&(samplen_temp == 1))
    	{
        	for(i=0;i<6;i++) z_ui[i] = sum_ui[i]/256;
        	for(i=0;i<6;i++) sum_ui[i] = 0;
    	}	
    }
    
    xxua_old = xxua;

    McbspaRegs.MFFRX.bit.RXFFOVF_CLEAR=1;   // Clear Overflow flag
    McbspaRegs.MFFRX.bit.RXFFINT_CLEAR=1;   // Clear Interrupt flag
    PieCtrlRegs.PIEACK.all|=0x20;           // Issue PIE ACK
    
	GpioDataRegs.GPBDAT.bit.GPIOB15 = 0;
}

⌨️ 快捷键说明

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