Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
09/27/09 22:46
Read: times


 
#169205 - ADuC848: Trouble of reading all 10 ADC channels, pleas help!
Hi guys, I am using ADuC848 that has 10 ADC channels. I am having a trouble that if I only read 5 or 6 channels of 10 then I can see this message on the PC's terminal:
e.g.
Time start now
Head #1&2: 1000, 1000

But if I read all 10 channel then I only can see message:

e.g.
Time start now

Is that because the effect of delay in reading all of 10 ADC channels? And what is a better method to overcome that? I do appreciate any advice.. Thanks guys!

	if(!CONDVOL_Time_Flag)

void Test (void)
{
//...some codes here
	{	
		CONDVOL=1;		//start 10s timing + turn on 10VDC
		CONDVOL_Time_Flag=1;	//start 10s timer
		printf("Time start nown"); 
	}
	if(CONDVOL_Time>=400 && CONDVOL_Time_Flag)//10s due since voltage is on, read ADC now	
	{
		Head1_ADC=ADC_read(1);
		Head2_ADC=ADC_read(2);
		Head3_ADC=ADC_read(3);
		Head4_ADC=ADC_read(4);
		Head5_ADC=ADC_read(5);
		Head6_ADC=ADC_read(6);
		Head7_ADC=ADC_read(7);
		Head8_ADC=ADC_read(8);
		Head9_ADC=ADC_read(9);
		Head10_ADC=ADC_read(10);

		printf("Head #1&2: %u, %u n", Head1_ADC,Head2_ADC)  ;
		CONDVOL=0;		//10s timing expired, turn OFF 10VDC
		CycOut=1;		//turn off cylinder		
		CONDVOL_Time_Flag=0;	//reset timer flag	
	   	CONDVOL_Time=0;		//reset timer
		Start_Flag=0;		//READY for the next cycle
	}
}

int ADC_read(unsigned char ch)
{
	int ADC_result;
	if(ch==1) 
		ADC0CON2 = 0x40;	//Refin+/-, Ain1->AINCOM			   1000000
	else if(ch==2)	
		ADC0CON2 = 0x41;	//Refin+/-, Ain2->AINCOM			   1000001
	else if(ch==3)	
		ADC0CON2 = 0x42;	//Refin+/-, Ain3->AINCOM			   1000010
	else if(ch==4)	
		ADC0CON2 = 0x43;	//Refin+/-, Ain4->AINCOM			   1000011
	else if(ch==5)	
		ADC0CON2 = 0x44;	//Refin+/-, Ain5->AINCOM			   1000100
	else if(ch==6)	
		ADC0CON2 = 0x45;	//Refin+/-, Ain6->AINCOM			   1000101
	else if(ch==7)	
		ADC0CON2 = 0x46;	//Refin+/-, Ain7->AINCOM			   1000110
	else if(ch==8)	
		ADC0CON2 = 0x47;	//Refin+/-, Ain8->AINCOM			   1000111
	else if(ch==9)	
		ADC0CON2 = 0x48;	//Refin+/-, Ain9->AINCOM			   1001000
	else if(ch==10)	
		ADC0CON2 = 0x49;	//Refin+/-, Ain10->AINCOM			   1001001

	ADCMODE = 0x23;		// continuous conversion on Main channel on main channel

	while (! RDY0) {}

	ADCIN =   ADC0H*0x100 + ADC0M;    //Combine ADC data registers into one.
													  
	ADC_result=	ADCIN;

	RDY0 =0;                                          //Clear the ADC interrupt
 	return ADC_result;
}

 



List of 14 messages in thread
TopicAuthorDate
ADuC848: Trouble of reading all 10 ADC channels, pleas help!            01/01/70 00:00      
   Watchdog?            01/01/70 00:00      
      Yes, it's watchdog reset problem!            01/01/70 00:00      
      Style            01/01/70 00:00      
   IF-ELSE problem            01/01/70 00:00      
      Re: IF-ELSE problem            01/01/70 00:00      
         still rather clunky!            01/01/70 00:00      
            Re: still rather clunky!            01/01/70 00:00      
               read all 10 ADC channels at once            01/01/70 00:00      
                  Re: read all 10 ADC channels at once            01/01/70 00:00      
                     Refresh            01/01/70 00:00      
                        Re: Refresh            01/01/70 00:00      
                           That slow?            01/01/70 00:00      
                              Re: That slow?            01/01/70 00:00      

Back to Subject List