I am working on C8051F120, I am getting a problem in ADC value.
When I am working on Internal Oscillator (24.5 MHz), my PLL Setting makes SYSCLK as 98 MHZ. My Reference is provided from external source (3.0V). when I read 1.5V value on any channel, I get 2048 (which is correct). But when I change the Oscillator to an external one (25MHz), my SYSCLK becomes 100MHz. with all the same settings and no change in the code, my ADC starts reading it as 2080 instead of 2048. I had tried reducing SAR Clock value and also tried increasing the Settling time by providing a much bigger delay but the result is unchanged.
Had anybody encountered such a problem ?
I don't know the C51, but it sounds like the sampling rate of the ADC has changed. This could be related to the peripheral clock frequency.
The difference - 32 counts - is only about 1.5%
Are you sure that your 1.5V input is really stable & accurate to (significantly) better than that?
Yes, My Input is quite stable. when I recompile the code again with the configuration of internal oscillator, the value becomes correct again.
I had tried with many values of ADC SAR Clock, but it resulted in no effect at all
I'd e-mail mcuapps@silabs.com re this
Erik
What, exactly, do you mean by quite stable?
As already noted, the variation you're seeing is only 1.5% - to many (most?) people, that is "quite stable"!!
The 1.5V signal I am refering to is generated by a Reference Generator chip and its value varies by just +-0.001 to 0.002 Volt (At Max)
when I switch to the internal Oscillator, the ADC starts reading the value as 2048 or 2049. I had tried it many times and getting the same results
"The 1.5V signal I am refering to is generated by a Reference Generator chip and its value varies by just +-0.001 to 0.002 Volt (At Max)"
And you're sure that you're board is thoroughly well designed and well-made - with all components of at least that same precision - to maintain that precision?
eg, have you taken care that the external oscillator doesn't inject any noise? or that any higher current consumption due to the higher speed doesn't affect anything? etc?
It all sounds very much like a hardware issue - so, as noted, you should probably be speaking to SiLabs about this, and posting in the SiLabs forum (not forgetting to cross-reference this thread, of course).
A change as big as 1.5% should be easy to verify with a multimeter. No need for a calibrated multimeter with a high precision, since we are talking about a quite big relative change.
And while a multimeter is bad at handling noise, multiple ADC reads by the processor should work well to notice if the analog signal contains lots of noise - if the measured value only varies in the last big of the ADC value, there is very little noise. If the ADC value jumps many ticks up/down, then it isn't too meaningful to consider a change of the mean value. The noise problem should first be taken care of.
I have checked with the hardware specs again and found no issue with the hardware design. I had checked the signal with oscilloscope also, but it it straight DC having no noise on 1.5V input.
My Reference is provided from external source (3.0V). if that reference is supplied from 3V3 then, if the load of the external oscillator drop the 3V3 a bit that could be the reason. 0V3 is not much resistor drop for a reference.
a change in the reference will have the same (reverse) effect as a change in the input which seems to have been the target of the previous posts.
I contacted with Silabs technical team about this particular issue. They suggested me to recreate the same scenario in the Evaluation Board to narrow down the nature of the problem.
I connected the signals from my board to Evaluation board, and found that there is no issue with it.
This test clears that it is something to do with the Board design or maybe with the particular piece of MCU placed on my Board. I'll work with the team to diagnose this hardware issue.
I had checked that there is no variation in reference or signal value on my board
have you checked the reference voltage in the 2 cases?
Yes I have checked the reference voltage and AIN voltage also in all the cases. I'll construct one more board and test it.