Daug prirasyta, tingiu gilintis o tuo labiau nusikraudinet reference manualus. Tik keletas pastabu: - Kam naudot ADC vietoj mygtuko? Mygtukus paprastai arba skaitai pino reiksme pastoviai (tu ta ir darai), arba naudoji external interupta. Pas PICus bet kuris IO portas gali but external inpterrut. - Periferijos registram sustatyt taip kaip reikia daug patogiau naudot padefainintas bitu maskes ir po to rasyt konfiguracija daug suprantamesnej formoj. Pvz: AD1CON1 = ADC1_EN | ADC1_EI | ADC_blabla; Kur kazkur ADC.h faile #define ADC1_EN 0x0400 ir taip toliau. Bus daug aiskiau ka tu cia konfiguruoji. Kazkur turi buti bibliotekos su visais periferijos bitais, registrais. Susirask ir prisiskirk, bus lengvesnis gyvenimas. Examplai uzrodys kur jie guli. - Pries kazka darant su periferija butu sveika paskaityt reference manuala apie tai. Kad butu supratimas ka ji daro, ir kaip ja naudot. - ADC periferija daznokai (realybej beveik visur kur sutikau) reikia vienokiu ar kitokiu budu nuskaityt ADC reiksme is registro, tam kad butu vykdoma sekanti ADC konversija. Tu cia jos niekur nenuskaitai. - Kas pas tave vyksta ar nevyksta debugeris, breakpointai ir watch listai daugiau papasakos negu as. > Tęsiu su tuo programavimu. Kad jau LEDas mirksi, tai toliau noriu > pridėti mygtuką. Šiaip tai veikia, bet nesuprantu kodėl. Man lyg turėtų > neveikti, arba veikti kitaip... Trumpai - vienas dvispalvis LEDas per > tranzus valdosi nuo RC7 ir RC9. Iš RA1 įsijungia LEDo maitinimas. Prie > RC2, o tiksliau AN8 (tas pats pinas) prijungtas "mygtukas". Kabutėse - > nes ten ne mygtukas, o temperatūros sensoriaus jungtis, po to per opampą > jau pajungimas prie AN8. Pagalvojau tuo pačiu ir ADC išmoksiu įjungt, > tai pažiūrėjau, kad ribinėse padėtyse (užtumpinus daviklį ir palikus > atvirą) ant AN8 įtampa kinta praktiskai nuo VCC iki VDD, kas visai > neblogai atitiktų mygtuką. Ir kas keisčiausia programikė veikia... Kad > išlaikytų colorcodingą ir formatavima prisegu paveiksliuką (gal kas > žino, kaip kopijuoti išlaikant tuos dalykus?). > > 1 dalykas - kodėl veikia "atvirkščiai" ? LEDai pajungti lyg ir be > sudėtingų navarotų, jeigu maitinimas yra (RA1 = 1 visada) tai galvojau > kol RC7 ir/ar RC9 0 arba 1 tai atitinkamai degs arba nedegs. O dabar > teisingumo lentelė tokia: > > LEDx RC7 | RC9 > 0 | 1 | 1 > R | 0 | 1 > Ž | 1 | 0 > 2 | 0 | 0 > > Kai abu pinai 1 - LED nedega (bet vienetai yra RC7, RC9 ir RA1). Tranzų > bazės irgi turi tuos vienetus... > Kai abu pinai 0 - dega ir Raudonas ir Žalias LEDai. Blin, ir tranzų > bazės irgi turi po 1. Iš kur ? Pakeliui nieko nėra, tik rezistorius > (prieš rezistorių yra apie 2,3V, už jo link uCPU 0V, o toliau uCPU. Arba > dar pamečiau kokį takelį... > Kai dega po vieną - ant bazės gažus 3,3V. > Nu bet čia tik man labai įdomi smulkmena perpratimui. > > 2 dalykas - kodėl iš viso tokia programa veikia taip kaip aš noriu :D ? > Juk įjungiu ADC, o nuskaitau if (PORTCbits.RC2 == 0b0), kas būtų > skaitmeninis nuskaitymas (tik 1 arba 0, bet ne 0...1023). Chm... O gal > dėl to ir veikia ? Nors ir deklaruoju apie ADC, bet nuskaito kaip > skaitmeną ir pagal atitinkamus thresholdus duoda tik 1 arba 0, vietoj > sakykim 1019 ir 5. Chm... Nežinau kaip nuskaityti kaip analogą, > PORTCbits.AN8 meta klaidą.