PIC 12F629 - snížení spotřeby v režimu sleep

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Jirka
Příspěvky: 2034
Registrován: 01 črc 2005, 00:00
Bydliště: zbídačený kraj
Kontaktovat uživatele:

PIC 12F629 - snížení spotřeby v režimu sleep

#1 Příspěvek od Jirka »

Mám na bastldesce níže uvedné zapojení s 12F629. Je to zatím jen blikání LEDek k odladění programu. V režimu SLEEP to však má docela velkou spotřebu, kolem 100uA. Podle katalogu by maximum při 5V mělo být asi 8uA, typicky ale mnohem méně. Kde je chyba? Na co jsem zapomněl?

Podstatné části programu:

Kód: Vybrat vše

   list   p=12f629, R=DEC
   include   "p12f629.inc"

RAM      equ   20h   ; prvni adresa pameti RAM pro PIC12F629 - 224bajtu (20h-7Fh)

#define   LED4   GPIO,0
#define   tlacitko   GPIO,1
#define   LED3   GPIO,2
#define   LED2   GPIO,4
#define   LED1   GPIO,5


   org   0x2007      ; adresa konfigurace PIC16F629 a 675
   dw _BODEN_ON & _CP_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT & _CPD_OFF & _MCLRE_ON

;************************     Reset procesoru     *************************

   org   0x0000      ; zacatek programu
   goto   INIT      ; skok na pocatecni inicializaci

;************************ Inicializace procesoru  *************************

INIT   bcf   STATUS,RP0   ; banka registru 0

   movlw   B'00110010'
   movwf   GPIO      ; prednastavit 0 na GP0 - GP5

   movlw   b'00000111'   ; =07h, digitalni vstupy na GP0 - GP2 (comparator OFF)
   movwf   CMCON
;       ------------------------
   bsf   STATUS,RP0   ; banka registru 1

   movlw   B'00001010'
   movwf   TRISIO      ; GP0,2,4,5 vystup, GP1 vstup, GP3 vstup trvale

   bcf   STATUS,RP0   ; banka registru 0

;   ------------------------
   bsf   LED2   ; vypnout všechny LED
   bsf   LED1
   bcf   LED3
   bcf   LED4

   goto   MAIN

;************************     Hlavní program      *************************

MAIN   hlavní program, blikání LED, snímání tlačítka na vstupu GP1, za určitých podmínek
   volání podprogramu vypni
   goto   MAIN

;**************************************************************************

vypni   bsf   LED1   ; vypnout všechny LED
   bsf   LED2
   bcf   LED4
   bcf   LED3
   sleep         ; přejít do režimu sleep
   goto   vypni

;**************************************************************************

   end
Přílohy
schema.png
pokusné zapojení
(7.05 KiB) Staženo 119 x
*****
Uživatelský avatar
Chenzee
Příspěvky: 464
Registrován: 26 čer 2007, 00:00
Bydliště: Vysočina

#2 Příspěvek od Chenzee »

Jde o to, jakým napětím to taky napájíš. 5uA je možná pouze pro 3V, pro 5V to bude jinak (co jsem tak letmo vykoukal z datasheetu). Jinak nic špatného nevidím.
Žádnej učenej z nebe nespadl ...
Jirka
Příspěvky: 2034
Registrován: 01 črc 2005, 00:00
Bydliště: zbídačený kraj
Kontaktovat uživatele:

#3 Příspěvek od Jirka »

Napájím to 5V, údaj 8uA by taky měl být pro 5V.
*****
Uživatelský avatar
Davidus
Zablokován
Zablokován
Příspěvky: 2439
Registrován: 01 čer 2005, 00:00

#4 Příspěvek od Davidus »

nemáš tam nějaký filtrační kond?
Uživatelský avatar
procesor
Příspěvky: 5286
Registrován: 02 říj 2009, 00:00
Bydliště: PO

#5 Příspěvek od procesor »

Čím sa to prebúdza zo sleep?
Jirka
Příspěvky: 2034
Registrován: 01 črc 2005, 00:00
Bydliště: zbídačený kraj
Kontaktovat uživatele:

#6 Příspěvek od Jirka »

Kondík tam nemám, je to teď zapojený přesně jako na schématu. Ze sleep se to probouzí přerušením a znovu připojením k napájení.
*****
Jirka
Příspěvky: 2034
Registrován: 01 črc 2005, 00:00
Bydliště: zbídačený kraj
Kontaktovat uživatele:

#7 Příspěvek od Jirka »

Už jsem na to přišel. BODEN OFF. A bere to podle měřáku 0,1uA.
To mám z toho, že do toho koukám, když se mi chce spát. :roll:

A zrovna funkci BODEN bych potřeboval mít aktivovanou ...
*****
Uživatelský avatar
abcdef
Příspěvky: 134
Registrován: 01 bře 2007, 00:00

#8 Příspěvek od abcdef »

čo je BODEN_OFF , a na čo je dobrý keď ho potrebuješ ?
Jirka
Příspěvky: 2034
Registrován: 01 črc 2005, 00:00
Bydliště: zbídačený kraj
Kontaktovat uživatele:

#9 Příspěvek od Jirka »

Detekce poklesu napájecího napětí.
Při poklesu pod určitou úroveň dojde k resetu.
*****
Uživatelský avatar
abcdef
Příspěvky: 134
Registrován: 01 bře 2007, 00:00

#10 Příspěvek od abcdef »

aha, takže tá detekcia je aktívna aj keď MCU spí, preto viac žerie však ? Ale pri takejto jednoduchej aplikáci BODEN_ON nie je potrebné. Či ?
Jirka
Příspěvky: 2034
Registrován: 01 črc 2005, 00:00
Bydliště: zbídačený kraj
Kontaktovat uživatele:

#11 Příspěvek od Jirka »

Obvod detekce odebírá proud, ikdyž procesor spí. Tohle zapojení je jen pro odladění jednotlivých částí programu, takže tady detekce není potřeba. Ve finální aplikaci bych ji však potřeboval ...
*****
Uživatelský avatar
jankop
Příspěvky: 679
Registrován: 04 dub 2007, 00:00
Kontaktovat uživatele:

#12 Příspěvek od jankop »

Dávej pozor na jednu věc. U 12f629 je u některých revizí známá chyba, kdy se procesor při poklesu napětí kousne BODEN ne BODEN. Já na to narazil při konstrukci zařízení s nízkou spotřebou téměř okamžitě. Nějak moc nevěřím erratům, že nové revize těchto PIC už tím netrpí.
Jirka
Příspěvky: 2034
Registrován: 01 črc 2005, 00:00
Bydliště: zbídačený kraj
Kontaktovat uživatele:

#13 Příspěvek od Jirka »

Hmm, tohle ani nevím. Mám tu funkci spolehlivě odzkoušenou na 16F628, tak přepokládám, že je stejně funkční i 12F629.
*****
Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“