PIC16F15323 / ADC / sleep
Jindrich Fucik
fulda na seznam.cz
Pondělí Srpen 12 21:16:49 CEST 2019
Tak nějak jsem i postupoval. Tedy s tím rozdílem, že jsem nepoužíval
ledky a osciloskop, ale Saleae Logic přímo na pinech. mám to tak raději.
Jak říkám, celé to fungovalo celkem dobře. do té doby, než jsem smazal
PIE4.TMR2IF. (tedy timer 2 neprobudí procesor)
Pokud ho tam mám, klidně mohu dát dva sleep za sebou a funguje to. Ale
když timer2 neprobudí procesor, jen spustí ADC, tak už se mi procesor
nikdy neprobudil.
Ale v mém případě je to stejně jen takové hraní. Z hlediska spotřeby
energie je to mimo, samotné odpory v tom joysticku mají větší spotřebu
než běžící procesor.
Vlastně ještě jedna drobnost - já nemám povolené GIE. Prostě používám
PIEx k probuzení procesoru, ale nepoužívám přerušení, všechno obsluhuji
v mainu. Stejně je to jen pár instrukcí. (vezmi horní 4 bity z ADC a
pokud se liší od minule, tak je odešli na výstup). Jen dálkové ovládání,
nic složitého.
Dne 12.8.2019 v 16:48 Jan Waclawek napsal(a):
> [preposielam]
>
>
> Ahoj,
>
> ked uz teda riesime ten aj sleep s ADC, tak som si pozrel datasheet od
> tej 16f15313. A kupodivu periferie to ma skoro rovnake ako ta
> 18...k42. Takze zase by som poradil napisat si ten isty soft ako som
> doporucil p.Vicekovi s timerom 2, 250us a LED1,LED2. Napisat si to bez
> sleepu, normalne za plneho chodu mcu. Tim2 by mal mat hw-reload, takze
> LED1 by mala sama blikat v nastavenom intervale. Potom pustat ADC. V
> dalsom kroku pouzit auto-triger Mali by blikat LED1 a LED2. Potom uz
> vypnut int od timera a nechat len ten LED2. A ked bude toto vsetko
> fungovat tak to prepnut na spravne oscilatory a pridat sleep. Ten
> sleep je dobre mat osetreny nop-mi nejako takto
> nop(),nop(),sleep(),nop(),nop(). Podla datasheetu by malo vsetko
> fungovat.
>
> A este ma napadla jedna moznost inspiracie, stiahnut si demo-kod pre
> periferie zo stranky microchipu. On sa sice potom bude na vas stale
> usmievat taky maly sikmooky cinan s velkym klobukom, ale snad nebude
> velmi otravny.
>
> p.s.: Bonusova otazka: preco treba osciloskop, 250us a tim2?
>
> A.
>
> ---
>
> Ahoj,
>
> Budu reagovet jen na ten sleep.
>
> Ano, to že Fosc není k dispozici to vím, respektive došlo mi to
> relativně brzo a v dokumentaci jsem si dohledal jak používat periferie
> bez něj.
> Právě ten PIC16F153xx má k dispozici větší množství hodin. Je k
> dispozici jak LFINTOSC (31kHz), tak MFINTOSC 31,25kHz/500kHz a nebo
> HFINTOSC 1-32MHz, které mohu používat pro timery a mohu jim zakázat
> spánek (nebo ho regulovat)
>
> Já mám použitý Timer2 poháněný tím LFINTOSC. Timer běží a přetéká jak
> má, to se chová naprosto mravně.
>
> Pak mám ten AD převodník, který má svůj ADRC oscilátor, který ho
> pohání a také se chová celkem mravně. Tedy chová se jak je popsáno -
> měření probíhá a pokud při něm CPU usne, tak to nevadí a na konci
> měření je probuzen.
>
> Jediné co nefunguje je spouštění ADC měření na spícím procesoru.
> Pravděpodobně to má něco společného s tím, že není k dispozici system
> bus a neprobíhá komunikace mezi periferiemi, které "nespí". Což je
> pravda, že dokumentace ani nijak nepopisuje. u AD převodníku je
> napsáno, že měření "doběhne", ale nic o tom, že "začne nové".
>
> (je pravda, že mám vypnuté téměř všechny periferie, včetně "rozvodu hodin")
>
> Jindra
> _______________________________________________
> 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