Tema: Re: PIC programavimas 2
Autorius: Shadowed
Data: 2017-02-09 08:06:18
Nu jo... Reiktų kokius mokymus palankyti. Gal būna kokie Kauna? tipo 
čajnikam ? Jaučiu bus būrys aštuntokų ir aš :D.

"Gediminas"  parašė naujienų news:o7g1am$41u$1@trimpas.omnitel.net...

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ą.