I have made an experimental circuit board containing an MSP430i2041
chip for testing. I am driving the first 3 A/D channels with
potentiometers, and I have the 4th channel's inputs both grounded.
Everything works, but I am getting TREMENDOUS crosstalk between
channels. Varying any channel affects the other channels by maybe
20 percent! Any ideas why this is happening? The experimental
board is not shielded or protected in any way, but these are low
impedance and essentially DC inputs we are talking about. I would
expect ZERO crosstalk between channels (which is what I see with
similar test setups with my ST Micro A/D converters).
Note that I also tried using only three of the four A/D channels
(with the 4th still grounded), with the 3rd channel being the
Master channel. No difference. All ideas welcomed. My code
shown below:
//Initialize the A/D converter
SD24CTL = SD24REFS; //use Internal Voltage-Reference
SD24CCTL0 |= SD24GRP | SD24DF; //Channel #0 grouped with last channel
SD24CCTL1 |= SD24GRP | SD24DF; //Channel #1 grouped with last channel
SD24CCTL2 |= SD24GRP | SD24DF; //Channel #2 grouped with last channel
SD24CCTL3 |= SD24IE | SD24DF; //Channel #3 the Master-Channel
SD24CCTL3 |= SD24OSR_128; //set the Oversampling Ratio to 128
SD24CCTL3 |= SD24SC; //start conversions
__interrupt void SD24_ISR(void)
{
SACount16 = SD24MEM0; //fetch the Channel #0 16-bit result
TVCount16 = SD24MEM1; //fetch the Channel #1 16-bit result
BVCount16 = SD24MEM2; //fetch the Channel #2 16-bit result
Extra16 = SD24MEM3; //fetch the Channel #3 16-bit result
}