Det som händer är att om jag läser från 2 kanaler så påverkar de varandra, jag får inte 2 separata värden.
Processorn är en PIC18F14K50.
Om jag bara läser vardera för sig så är det inga problem, men försöker jag läsa båda i min reglerloop så påverkar de varandra. Men av de första faktumet kan slutsats dras att kopplingen inte är fel, ingångarna fungerar var för sig.
Min ADC-funktion ser ut såhär:
Kod: Markera allt
unsigned int Read_ADC(u8 ADC_channel){
unsigned int ADRES;
ADCON0 = 0b00000001;
ADCON0 = ADCON0 | (0b00111100 & (ADC_channel << 2));
GODONE = 1;
while(GODONE);
ADRES = ADRESL;
ADRES += (ADRESH << 8);
return ADRES;
}
När jag försöker läsa in båda i min reglerloop så påverkar potentiometern temperatursensor-värdet.
Jag har prövat att lägga in "ADRESH = 0; och ADRESL = 0;" men det gör ingen skillnad.
I min reglerloop ligger dessa läsningar:
Kod: Markera allt
temperature.TempC = (Read_ADC(6)*3)/10;
temperature.ad5 = Read_ADC(5);
Har prövat olika hastigheter på reglerloopen utan resultat...
Tacksam för input!
Här är lite register som kan vara intressanta från min initiering:
Kod: Markera allt
ADCON0 = 0b00000001; // A/D CONTROL REGISTER 0
ADCON1 = 0b00000000; //A/D CONTROL REGISTER 1
ADCON2 = 0b10000110; // A/D CONTROL REGISTER 2