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

📄 diag.c

📁 DSP 5409 plc应用程序,调试通过,是用在电力线通讯上的演示程序.
💻 C
字号:
//==========================================================================================
// Filename:		diag.c
//
// Description:		Diagnostic functions ofdm power line modem.
//
// Copyright (C) 2001 - 2003 Texas Instruments Incorporated
// Texas Instruments Proprietary Information
// Use subject to terms and conditions of TI Software License Agreement
//
//	---- list of error codes as of 23Sep03 -------------------------------------------
//	code	 function			file			desc
//	0xBAD0	"main"	 			"dsp_modem.c"	"Good Packet Received!"
//	0xBAD1	"getFreqEq"	 		"preDet.c"	 	"Failed doing power scale factor"
//	0xBAD2	"frameAlign"	 	"preDet.c"	 	"Signal power too low to equalize"
//	0xBAD3	"aveDistance"	 	"dataDet.c"	 	"Overran distance metric"
//	0xBAD4	"aveFFT"	 		"preDet.c"	 	"Overflow of real part of average carrier in preamble"
//	0xBAD5	"aveFFT"	 		"preDet.c"	 	"Overflow of imag part of average carrier in preamble"
//	0xBAD6	"aveFFT"	 		"preDet.c"	 	"Failed to find Sync frame"
//	0xBAD7	"frameAlign"	 	"preDet.c"	 	"Insufficient number of frames averaged"
//	0xBAD8	"ReadRxDMAPointer"	"AFE.c"	 		"DMA Counter corrupted"
//	0xBAD9	"sample_interrupt"	"agc.c"	 		"RxDMAPointer outside Rx buffer "
//	0xBADA	"sample_interrupt"	"agc.c"	 		"RxDMAPointer miscompare "
//	0xBADB	"sample_interrupt"	"agc.c"	 		"Long delay between SNR Flags"
//	0xBADC	"main"	 			"dsp_modem.c"	"Timeout waiting for receive packet"
//	0xBADD	"sample_interrupt"	"agc.c"	 		"Odd value for recSignal"
//	0xBADE	"sample_interrupt"	"agc.c"	 		"Odd/Even misalignment in recSignal buffer"
//	0xBADF	"main"	 			"dsp_modem.c"   "Parity errors"
//	0xBAE0	"main"	 			"dsp_modem.c"	"Transmitting Packet"
//	0xBAE1	"AdjustTxPeaks"		"transmit.c"	"Clipped transmit waveform"
//	0xBAE2	"getFreqEq"	 		"preDet.c"	 	"Overflowed carrier power"
//	0xBAE3 	"viterbiDecodeFrame""viterbi.c"		"Viterbi PathMetric Overflow"
//
//	0xBAE5 	"CheckPLC" 			"dsp_modem.c" 	"Re-enabling Global interrupts"

//SaveTrace data format:
//	ReceivePacket			0x1151		ulLastRxCounter	ulLastTxCounter
//	TINT0_ISR				0x1180+agcState	recSignal	uRxDMA
//	TestInterruptFlag		0x1333		ST1Shadow		ST1Shadow2
//	WaitForRxBufferFree		0x2000+uCnt	uStart			ReadRxDMAPointer()
//	WaitForLastFrame		0x2112		uStart			uFirstSrc
//	FillIdleBuffer			0x3333		recSignal		(AFEctrl2>>3) & 7
//	makePreamble			0x5000		recSignal		pTxSignal
//	makeDataFrames			0x5001,2	recSignal		pTxSignal
//	CalcTxStartAddr			0x55nn		uStart			ReadRxDMAPointer()-txSignalArray
//								nn=uCnt-FFT_LEN;
//	lookForPacket			0x8gac 		recSignal		phError	 
//							  p=pgaGain a=agcState 		c=preambleDetCount
//	ddphase					0x9999		cc0Max			cc1Max
//							  0x0000  	xMax		   	yMax

//	ReceivePacket			0xACCA		recSignal		uRxDMA
//	ReceivePacket			0xACCB		recSignal		uRxDMA
//	ReceivePacket			0xACCC		recSignal		errCount

//	ReceivePacket			0xBAD0		recSignal		errCount
//	getFreqEq (BIN)			0xBAD1		carrierNum		carrierPwr	
//										b=block			f=frame
//	frameAlign				0xBAD2		recSignal		worstPwr
//	frameAlign				0xBAD7		recSignal		numFramesAve
//	ReadRxDMAPointer		0xBAD8		pRxDest			uRxCtr
//	sample_interupt			0xBADB		recSignal		dmaPtr		
//							  prevSnrSample	sample		SNRflag
//	CheckPLC				0xBADC		recSignal		uRxDMA
//	sample_interupt			0xBADD		recSignal		dmaPtr
//	sample_interupt			0xBADE		recSignal		dmaPtr
//	ReceivePacket			0xBADF		recSignal		uNonZeroBits
//	TransmitPacket			0xBAE0		recSignal		SNRflagBackup
//	CheckPLC				0xBAE5		recSignal		uRxDMA
//	frameAlign				0xCnff		recSignal		worstPwr
//										n=numFramesAve	ff=frameStartFirst 
//	viterbiDecodeFrame		0xD888		pathMetric0		maxPathMetric
//	viterbiDecodeFrame		0xD99A		state			pathMetricA[state]
//	viterbiDecodeFrame		0xD99B		state			pathMetricB[state]
//	dataFFT					0xDADA		recPtr			rxDMA
//	getFrameStartFromImpulse0xDDDD		maxSample		maxValue
//	AdjustTxPeaks			0xDFbf		maxReal			txGain
//	compareParityCheckBytes	0xEEEE		parity			reg
//
//
// Revision History:
//==========================================================================================

#include "ofdm_modem.h"
#if COMPILE_MODE == DSP_COMPILE
	#include "intr.h"
#endif


//==========================================================================================
// Set global vars
//==========================================================================================
volatile void*	voidptr;	// Used to suppress compiler remarks only. No real function.



 //==========================================================================================
// Function:		SaveTraceData()
//
// Description: 	Save a value into the trace data array, if there is space available.
//
// Revision History:
//==========================================================================================
#if (SAVETRACE == TRUE)
void SaveTraceData(u16 uDat)
{
	if (uTraceIndex < TRACE_BUFF_SIZE)
	{
		uTraceData[uTraceIndex++] = uDat;
	}
	else
	{
		DebugDelay();			// Flush C54x if in debug mode.
		uTraceIndex = 0;		// Restart the trace 
		memset((u16*)uTraceData, 0xABCD, TRACE_BUFF_SIZE*sizeof(uTraceData[0]));	// Fill with known characters
		uTraceData[uTraceIndex++] = uDat;
		DebugDelay();			// Flush C54x if in debug mode.
	}
}
#endif
#if( SAVESYMBOLS == TRUE )
void SaveTraceData(u16 uDat)
{
	if( uTraceEnable == TRUE )
	{
		if (uTraceIndex >= TRACE_BUFF_SIZE)
		{
			uTraceIndex = 0;		// Restart the trace 
		}
		uTraceData[uTraceIndex++] = uDat;
	}
}
#endif


//==========================================================================================
// Function:		postError()
//
// Description: 	Error Handler:  Stop and report an error
//
// Revision History:
//==========================================================================================
void postError( char *errText ) 
{
#if COMPILE_MODE == MEX_COMPILE
	mexErrMsgTxt(errText);
#else
	volatile i16	hang;
	
	ClearXF();				// Turn off XF flag for debug

	//!!!TEMPORARY FOR BRING-UP ONLY:  Halt the MCBSP so we don't lose the data in the receive buffer.
	// Shut off frame sync generation (FS)
	MCBSP_SUBREG_BITWRITE(AFE_MCBSP, SPCR2_SUBADDR, FRST, FRST_SZ, 0);
	DebugDelay();			// Flush C54x if in debug mode.
	DebugDelay();			// Flush C54x if in debug mode.

	#ifdef	SHOW_FLOW
		printf("ERROR: %s\n", errText);
	#else
		voidptr = (void*) errText;	// Used to suppress compiler remarks only. No real function.
	#endif

	hang = 0;		// 0= return immediately, 1= hang until user intervention
	while( hang )
	{
		DebugDelay();				// Flush C54x if in debug mode.
	}
#endif
}

//==========================================================================================
// Function:		PostErrorCode()
//
// Description: 	Error Handler:  Stop and report an error
//
// Revision History:
//==========================================================================================
void PostErrorCode(u16	uErrCode, char *errFunc, char* errFile, char* errText ) 
{
	volatile i16	hang;

	uErrCnt[uErrCode-0xBAD0]++;
		
	#if COMPILE_MODE == MEX_COMPILE
		mexPrintf("ERROR #%X in %s (%s): %s.\n", uErrCode, errFunc, errFile, errText);
		hang = 0;		// 0= return immediately, 1= hang until user intervention
		while( hang )
		{
			NOP();				// Hang here.
		}
		//mexErrMsgTxt(errText);

	#else			// DSP_COMPILE
		#ifdef	SHOW_FLOW
			printf("ERROR #%X in %s (%s): %s.\n", uErrCode, errFunc, errFile, errText);
		#else
			voidptr = (void*)errText;	// Used to suppress compiler remarks only. No real function.
			voidptr = (void*)errFunc;	// Used to suppress compiler remarks only. No real function.
			voidptr = (void*)errFile;	// Used to suppress compiler remarks only. No real function.
		#endif

		hang = 0;		// 0= return immediately, 1= hang until user intervention
		if (hang)
		{	
			ClearXF();				// Turn off XF flag for debug
		
			//!!!TEMPORARY FOR BRING-UP ONLY:  Halt the MCBSP so we don't lose the data in the receive buffer.
			// Shut off frame sync generation (FS)
			MCBSP_SUBREG_BITWRITE(AFE_MCBSP, SPCR2_SUBADDR, FRST, FRST_SZ, 0);
			DebugDelay();				// Flush C54x if in debug mode.

			while( hang )
			{
				NOP();
				NOP();				// Hang here.
			}
		}
		DebugDelay();				// Flush C54x if in debug mode.
	#endif
}



⌨️ 快捷键说明

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