PIC16F15323 / ADC / sleep
Jindrich Fucik
fulda na seznam.cz
Středa Srpen 14 09:02:10 CEST 2019
Asi se nacházím moc daleko za jazykovou bariérou. Myslím, že dostávám rady na to, co považuji za elementární.
Tak znova - situace:
Mám správně nastavený Timer2, který se reloaduje po cca 100ms (prostě potřebuji 100ms vzorkování). Ten funguje jak má, pokud mu povolím dělat přerušení, dělá ho, pokud mu povolím probouzet procesor, probouzí ho. Žádná velká matematika v tom není.
...
bsf PIE4,1
Main:
bsf LED1
SLEEP
bcf LED1
bcf PIR4,1
goto Main
Tohle funguje parádně, ledka bliká
mám nastavený ADC, který se normálně autotrigruje. Program ve tvaru:
...
bcf PIE4,1
Main:
;SLEEP - odkomentovano
nop
btfsc PIE1,0
call ObsluhaADC
goto Main
ObsluhaADC
bsf LED1
bcf PIE1,0
bcf LED1
return
tahle také funguje parádně.
Pokud vrátím sleep a zároveň povolím PIE4, také to funguje, jen se procesor probouzí 2x častěji:
...
bsf PIE4,1 ; povoleno probouzeni od timer2
Main:
SLEEP
nop
btfsc PIE4,1
call ObsluhaTimer2
btfsc PIE1,0
call ObsluhaADC
goto Main
ObsluhaADC
bsf LED1
bcf PIE1,0
bcf LED1
return
ObsluhaTimer2
bsf LED2
bcf PIE4,1
bcf LED2
return
Tohle také funguje jak má, funguje to úplně v klidu bez toho, abych jakkoli sahal na aktivaci ADC, prostě jen mažu flag a hotovo.
To jediné, co mi nefunguje je situace, kdy Timer2 NEprobouzí procesor a zároveň má reloadovat ADC
...
bcf PIE4,1 ; zakazano probouzeni od Timer2
Main:
SLEEP
nop ; sem se program nikdy nedostane!!!
bsf LED1 ; LED1 nikdy neblikne
btfsc PIE4,1
call ObsluhaTimer2
btfsc PIE1,0
call ObsluhaADC
goto Main
ObsluhaADC
bsf LED1
bcf PIE1,0
bcf LED1
return
ObsluhaTimer2
bsf LED2
bcf PIE4,1
bcf LED2
return
Takže asi v takovém jsem stavu. Pro jistotu jsem si zkoušel povolit system clock bus a clock reference. Ale ani jedno nemá žádný vliv.
Trochu si myslím, že problém je v tom, že je ve sleep nedostupná paměť a že aktivace ADC znamená manipulaci s pamětí, která právě není dostupná
P.S. v programech není přepínání bank, to je jen aby nebyl tak dlouhý, normálně tam je
P.P.S. LEDx není LEDka, ale vstup 24KHz logického analyzátoru, takže bliknutí na 3usec je docela hezky zřetelné.
---------- Původní e-mail ----------
Od: Jan Waclawek <konfera na efton.sk>
Komu: HW-news <hw-list na list.hw.cz>
Datum: 13. 8. 2019 23:18:59
Předmět: Re: PIC16F15323 / ADC / sleep
[preposielam]
Ahoj,
p.Fucik ja uz nemam dost sil, aby som napisal cely hotovy program...
Ale este som si vsimol aj v kode pana Viceka, ze nikde nie su napisane
nastavenia config registrov, teda tych ich relevantnych bitov
tykajucixh sa oscilatorov. A zacnite tym, co je jasne a funkcne na
starych typoch 16f628, 16f87x...
Takze oscilator v config ekvivalent ku HS, 4MHz
Potom by malo nasledovat nastavenie modulu oscilatora. To su vsetky
tie nove delicky a PLL... Tak aby bolo Fosc/4 = 1MHz.
Potom si nastavte TMR2 na 8-bitovy reload s periodou 250usec. Teda
PR2=250... Delicky TMR2 na 1:1...
Nastavte si interrupt flagy a pustite TMR2ON = 1;
V obsluhe prerusenia TMR2 si bliknite ledkou, instrukcie bsf,bcf a
skontrolujte si analyzotorom/osciloskopom 250us medzi blikmi ledky.
Toto treba nastavit aj v tom novom cipe. Ked bude toto fungovat ako
ma, tak sa mozete hrat s oscilatorom LFINTOSC a sleepom.
Potom si pridajte AD prevodnik a autotriger...
Toto sa tu snazim dva dni vysvetlit Vam a p.Vicekovi. Ale program si
napiste sami, to uz za Vas robit naozaj nebudem. Uprimne povedane mal
som o Vasich schopnostiach trochu lepsiu mienku... To bude asi ta
inflacia a nove typy.
Vela uspechov pri ladeni a ozivovani novych mikrokontrolerov... Ja
idem uz pomaly spat.
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