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