Nigel Goodwin said:
10K is too high, maximum source impedance should be 2K, how long a delay do you have after switching channels, before reading the ADC?.
If you check my tutorial it explains the problem.
yap, i had try with your tutorial before that, it seen like can work as normal..
after i change to my source code, with the two ADC setting same with yours, it can't work as normal already..i didn't put any delay before reading ADC...
the concept is like this:
....
....
call LCD_Init
call LCD_CurOff
again
movlw B'01000001' ;channel RA0
movwf ADCON0
bsf STATUS,RP0
movlw B'00000101'
movwf ADCON1
movlw B'11000111' ;TMR0 prescaler,1:256
movwf OPTION_REG
bcf STATUS,RP0
call LCD_Line1
call Read_ADC
(Read_ADC
btfss INTCON,T0IF ;Wait for Timer0 to timeout
goto A2D
bcf INTCON,T0IF
bsf ADCON0,GO ;Start A/D conversion
btfsc ADCON0,GO
goto $-1
Wait
btfss PIR1,ADIF ;Wait for conversion to complete
goto Wait )
call (math calculation ~multiply, divide)
...
...
...
call (display on LCD)
;;2nd part
movlw B'01001001' ;channel RA1
movwf ADCON0
bsf STATUS,RP0
movlw B'00000101'
movwf ADCON1
movlw B'11000111' ;TMR0 prescaler,1:256
movwf OPTION_REG
bcf STATUS,RP0
call LCD_Line2
call Read_ADC
call (another math calculation ~multiply, divide)
...
...
...
call (display on LCD)
goto again