Ahoj,
mam asi začátečnický dotaz, ale k věci. Vyvíjím si PWM regulátor topení a potřebuji načítat dva potenciometry skrze AD převodník u PIC 18F46K22, jenže mam problém. Bez problému načtu pouze jeden potenciometr a druhý nikoli, oba dva se mi “třískají” a ovlivňují navzájem. Netuším kde bych mohl mít chybu, nastavení MCU jsem prošel 3x tam i zpátky a chybu tam vysloveně nevidím, vstupy mam nastavené na vstupy skrze TRIS registr, analogy mam nastavené také správně skrze ANSELx registr. KÓd jsem použil z nějakého tutoriálu na webu.Aplikaci budu přepínat skrze push button; dva režimy - auto/manual, přičemž v manuálu budu číst ty dva analogové vstupy. Na nepájivém poli mi to sice sepne LED signalizující změnu režimu, ale při vyplé LED a nastavení potenciometrů se mi LED rozbliká a nebo zhasne.Je možné, že to způsobuje to nepájivé pole? MCU mam odrušené skrze keramiky na napájení i v tom nepájivém poli.
Tady je kód pro ADC:
ADCON1 = 0x0C;
ADCON2 = 0x92;
ADCON0 = (channel << 2);
ADCON0 |= 0x03;
while (ADCON0bits.GO_nDONE);
return ((ADRESH << 8)| ADRESL);
V ADC jsem zadal reálné číslo kanálu - pinu, kde mam připojený potenciometr
ADC_hodnota[0] = ADC(11);
a nastavení MCU:
PMD1 = 0xFF; //setting peripheral module
RCON = 0x1F; //setting reset control register
STATUS = 0xC; //setting status bits
ANSELA = 0x00; //digital port
ANSELB = 0xF0; //RB <0-3> digital, other as analog ports
ANSELC = 0x00; //digital ports
ANSELD = 0x00; //digital ports
ANSELE = 0x00; //digital ports
VREFCON0 = 0x00; //nastaveni napetove reference
TRISEbits.RE0 = 0; //vystup pro LED1
TRISDbits.RD3 = 1; //vstup pro SW_1
TRISEbits.RE2 = 0; // PWM_1 - topeni_1
TRISDbits.RD1 = 0; // PWM_2 - topeni_2
TRISBbits.RB4 = 1; // vstup PTC_1
TRISBbits.RB5 = 1; CCPTMRS1 = 0x4; // vstup PTC_2
CCPTMRS1 = 0x4;
Co se týče frekvence MCU tak ho taktuji na 4 MHz.
Budu rád za pomoct, protože jestli tam mam chybu, tak já jí teda nevidím