PIC16F15323 / ADC / sleep
Jindrich Fucik
fulda na seznam.cz
Úterý Srpen 13 21:57:39 CEST 2019
Uff, asi tomu nerozumím.
Ale mohu napsat, co mám nastavené
; Timer2 management ; 100ms for AD conversion
T2CLKCON_INI equ 0x04 ; T2CS LFINTOSC;
T2HLT_INI equ 0x00 ; T2PSYNC Not Synchronized; T2MODE Software
control; T2CKPOL Rising Edge; T2CKSYNC Not Synchronized;
T2RST_INI equ 0x00 ; T2RSEL T2INPPS pin;
T2PR_INI equ d'193' ; T2PR 194 (0.C2); = 193*16 = 3088; 31000Hz /
3088 = cca 10Hz read frequency (100ms)
;T2TMR = 0x00; TMR2 0;
T2CON_INI equ 0xC0 ; T2CKPS 1:16; T2OUTPS 1:1; TMR2ON on;
; Analog to digital converter
ADCON0_INI equ b'01000001' ; input is RC0, AD is enabled
ADCON1_INI equ b'01110000' ; Right justified, ADCRC oscillator, Vdd = Vref
ADACT_INI equ 0x04 ; Match between Timer2 postscaled value and PR2
Tedy timer2 přetéká cca jednou za 100ms a to má spustit ADC. Nezdá se mi
na tom moc složitého.
K tomu jsou dvě kombinace PIE - první funguje, ale budí procesor 2x,
druhá nefunguje
První:
PIE1_INI equ 0x01 ; analog to digital converter enabled to wake up
PIE4_INI equ 0x02 ; timer2 to wake up
INTC_INI equ 0x40 ; no interrupt enabled (PIE is enabled to wake up only)
Druhá:
PIE1_INI equ 0x01 ; analog to digital converter enabled to wake up
PIE4_INI equ 0x00 ; no timer to wake up
INTC_INI equ 0x40 ; no interrupt enabled (PIE is enabled to wake up only)
Ještě pro zvídavé čtenáře doplním PMD, mám skoro vše vypnuté:
PMD0_INI equ b'11000111' ; CLKRMD CLKR disabled; SYSCMD SYSCLK enabled;
FVRMD FVR disabled; IOCMD IOC disabled; NVMMD NVM disabled;
PMD1_INI equ b'10000011' ; TMR0MD TMR0 disabled; TMR1MD TMR1 disabled;
TMR2MD TMR2 enabled; NCOMD DDS(NCO) disabled;
PMD2_INI equ b'01000111' ; ZCDMD ZCD disabled; CMP1MD CMP1 disabled;
ADCMD ADC enabled; CMP2MD CMP2 disabled; DAC1MD DAC1 disabled;
PMD3_INI equ b'00111111' ; CCP2MD CCP2 disabled; CCP1MD CCP1 disabled;
PWM4MD PWM4 disabled; PWM3MD PWM3 disabled; PWM6MD PWM6 disabled; PWM5MD
PWM5 disabled;
PMD4_INI equ b'01010001' ; CWG1MD CWG1 disabled; MSSP1MD MSSP1 disabled;
UART1MD EUSART disabled;
PMD5_INI equ b'00011110' ; CLC3MD CLC3 disabled; CLC4MD CLC4 disabled;
CLC1MD CLC1 disabled; CLC2MD CLC2 disabled;
a naopak OSCEN má vynuceně zapnuté LFOEN a ADOEN, to ale asi není nutné.
Zase to moc nevadí:
OSCEN_INI equ 0x14 ; MFOEN disabled; LFOEN enabled; ADOEN enabled;
EXTOEN disabled; HFOEN disabled;
Přiznám se, že jsem moc dlouho ne-experimentoval. Mohl bych se pokusit
probudit převodník ještě TMR1 v 8 bit režimu, nebo NCO1, v obou
případech by to bylo hodně podobné.
Dne 13.8.2019 v 20:57 Jan Waclawek napsal(a):
> [preposielam]
>
> Ahoj,
>
> mam este par poznamok pre p.Fucika, kedze aspon tusi, co som mal na
> mysli vcera a co som chcel povedat tym kratkym programom s dvoma
> preruseniami.
>
> Ja sice pouzivam na debugovanie osciloskop a dve LED-ky, ale logicky
> analyzator sa da uplne plnohodnotne debugovanie a ladenie pouzit tiez.
>
> P.Fucik spravne zistil, ze problem je s nastavenim TMR2. Myslel som
> si, ze ked ma v AR clanky s 16f628, tak ten problem s TMR2 najde velmi
> rychlo. Ale asi som sa zmylil. To je totizto ta cast odpovede
> bonusovej otazky preco pouzit prave TMR2. Ked zoberiete datasheet
> 16f628, tak zistite, ze ked budete chciet generovat periodicky
> interrupt povedzme 250usec., ano to dalsia cast odpovede bonusovej
> otazky, tak mate dve moznosti. Bud budete v preruseni od TMR2
> programom zapisovat periodu do TMR2, alebo si nastavite periodu do
> registra PR2 a hardware TMR2 si ju nastavi sam. A toto musite nastavit
> aj na tom novom cipe 16f15313. A potom ostava urobit vsetky ostatne
> kroky, ktore som uz napisal skor.
>
> Ako pedagog som sa velmi neosvedcil, ale aspon som snad niekomu trochu
> pomohol.
>
> Prajem pekny den a vela uspesnych krocikov pri debugovani. :)
>
> A.
>
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>
Další informace o konferenci Hw-list