Post Go back to editing

Will any volunteer help me to validate bug of ADUC7061

I have post a thread to check DAC problem of ADUC7061.

But it is hard. very hard.

Engineer of ADI can't give convincing proof.

I used this device for about 6 years. Recently, i find the DAC will not work correctly. when i change P0 from GPIO mode to ADC input MOD(port multiplex), The DAC is not linear. My device will generate abnormal vlotage to external inductor, for exaple transform, it will destroy something.

ADI's engiineer, don't have oscillator, even don't have voltage meter. 

I deem that the way or method they used can't to be used to validate the DAC is ok, because engineer could operates wrongly. In fact, junior.

Auxiliary_ADC_new.zip

I upload the project and test result 

The code is like this:

	while (1)
	{
		if (SwapFlag == 0)
		{
			GP0KEY1 = 0x7; 
			GP0CON1 = 0x0; 
			GP0KEY2 = 0x13;				
		}
		else
		{
			//adc input
			GP0KEY1 = 0x7; 
			GP0CON1 = 0x1; 
			GP0KEY2 = 0x13;	
		}
		//for stable
		DelayMs(1);
		
		DACDAT = 0x8000000;
		//for stable
		DelayMs(20);
		
		
		bSendResultToUART = 0;
		// open interrupt
		ADCMSKI = BIT1; //Enable ADC1 result ready interrupt source
		
		//open ADC1
		ADC1CON = BIT9 + BIT8 	// ADC1 input channel 4 in Single-Ended mode.
		+ BIT15;	    // Auxiliary-ADC Enabled
									// Also, Int reference, 		
		
		//read to clear
		ulADC0Result = ADC0DAT;	// Read ADC0 conversion result
		ulADC1Result = ADC1DAT;	// Read ADC1 conversion result
		//open ADC1
		ADCMDE = 0 + BIT1;	// single Conversion mode, Normal mode
		
		//wait for at least one sample
		while (bSendResultToUART == 0)
		{
			DelayMs(1);
		}
		
	 if (bSendResultToUART == 1) // Is there an ADC1 result ready for UART transmission?
	 {	
		 //if i receive one sample, then close ADC1 and interrupt for UART business.
		 //if all uart send all text, then open them again
		 ADC1CON = 0;
		 ADCMSKI = 0;
		 bSendResultToUART = 0;
		 
			if (SwapFlag == 1)
			{
				sprintf ( (char*)szTemp, "%05.3f\r ADC1(Ch4) Result(ADC input)\r",ulADC1Result*lsb10r9/1000000000 );// Send the ADC1 Result to the UART                          
			}
			else
			{
				sprintf ( (char*)szTemp, "%05.3f\r ADC1(Ch4) Result(GPIO)\r",ulADC1Result*lsb10r9/1000000000 );// Send the ADC1 Result to the UART                          
			}
			nLen = strlen((char*)szTemp);
			for ( i = 0 ; i < nLen ; i++ )	// loop to send ADC1 result
			{
				 COMTX = szTemp[i];
					 ucTxBufferEmpty = 0;
				 while (ucTxBufferEmpty == 0)
					 {
					 }
			}
		}		
	 
		//swap for next test
		if (SwapFlag == 0)
		{
			DelayMs(50);
			SwapFlag = 1;
		}
		else
		{
			//adc input
			DelayMs(150);
			SwapFlag = 0;
		}		
	}
}

Because engiineer of ADI refuse to test code offer by me, (Perhaps, he is junior, he is hard to change the project to math his test tool, for example, he doesn't have voltagemeter )

The method he used is not convincing.

Of course, he refuse to admite the bug. But is not important. It is imortant to find out solution to fix it.

The engineer said there mybe something wrong with my board. but if i download with jtag, the board works correctly.

the problem is : 

1. when P0 is configured as ADC input

2 and code is running from flash

3 Then: the DAC will work wrongly.

I assume factory ingore to initiate unknown registers which will be overwritten by jtag module.

If i run the code by debug mode, step by step or freely, it is ok.

This is the reason why we don't find the bug in R&D phase.

would any volunteers who have aduc7061 kit will help me to validate it ?

Recently, we are developmenting new solution, which are external ADC + STM32xxx to replace it.