logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Atmega88V] Zbyt duży pobór prądu w trybie power-down

manekinen 19 Wrz 2009 18:59 2430 2
REKLAMA
  • #1 7035420
    manekinen
    Poziom 29  
    Witam.

    Schemat całego układu:

    [Atmega88V] Zbyt duży pobór prądu w trybie power-down

    Przed położeniem uC do snu ustawiam stany wysokie na bazach tranzystorów (zmierzyłem prąd samych tranzystorów, poniżej 0.00uA bo miernik nie chwyta).

    Ustawiam wszystkie pozostałe piny w stan wysoki oprócz: pinów przycisków S1-S4 które mają być masą dla pinu przerwania INT0 (który ustawiam jako wejście i podciągam wewnętrznie), i pinu PB.1 który wyłącza dzielnik R/R do mierzenia napięcia.

    Wsio działa, ale procesor zasilany 2V w trybie power-down pobiera aż 9uA, gdzie producent obiecuje złote góry i mówi o 0.1uA przy 1.8V. Co tu nie gra? Chciałbym jeszcze zjechać z tym prądem bo całość zasilana jest z bateryjki pastylkowej CR2032. Program w bascomie, ale nie sądze że to jest przyczyną. Czy ktoś ma jakieś doświadczenia z takim prockiem? Czy powinienem coś jeszcze ręcznie wyłączać? (ADC wyłączam od razu po dokonaniu pmiaru). Fragment kodu:

    Konfiguracja przerwania:
    
    Config Int0 = Low Level
    On Int0 Pobudka
    

    
    Pobudka:
    Return
    

    Jeśli program zdecyduje że chce przejść w power-down.
    
    If Ktory_napis = 0 Then                                     
       Disable Timer0                                        
       Disable Timer1
       Disable Timer2
       Timer0 = 0
       Timer1 = 0
       Znak_next = 1                                     
       Portb = &B01111101                                    
       Portc = &B111111
       Portd = &B00011111
       Config Portd.2 = Input                                 
       Set Portd.2
       Waitms 10                                             
       Enable Int0                                            
    
       Powerdown                                             
    
       Disable Int0                                            
       Config Portd.2 = Output
       Enable Timer0
       Enable Timer1
       Enable Timer2
    
    End If
    


    I tak, wiem że mam jeszcze wybudzanie przez pin-change ale chcem żeby było to kompatybilne z Atmega8.
  • REKLAMA
  • #2 7035510
    alien_audio
    Poziom 21  
    Witam.
    Atmega88V posiada kilka trybów uśpienia. Instrukcja Bascoma Powerdown
    usypia procesor ale nie jest to najbardziej oszczędny tryb. Z dokumentacji
    odszukaj rejestry trybu oszczędnego i ustaw ręcznie ich wartość. Wtedy po
    instrukcji Powerdown procesor pójdzie spać porządnie.
    Należy zauważyć, ze w tym trybie pracy istnieją tylko określony sposoby pobudki,
    to wszystko jest w dokumentacji Atmegi88
  • #3 7036001
    manekinen
    Poziom 29  
    No to dziwne, bo w dokumentacji którą mam napisano że to power-down jest najoszczędniejszym trybem, tabelka na stronie 40. Pracuje tylko watchdog, int0 i int1, i TWI adress match. WDTON oczywiście mam wyłączony.

    Tak czy siak, ręczne ustawienie rejestru daje taki sam pobór prądu więc nie jest to wina bascoma
    
    SMCR = &B0101
    SLEEP
    

    Bawiłem się też rejestrem PRR, powyłączałem wszystko ale nie daje to nic bo najwidoczniej uC sam sobie wsio wyłącza przy przejściu w power-down.
    
    PRR = &B11101111
    




    DODANO 22:38



    Brown-out detection pobiera około 9uA gdy jest włączony, po wyłączeniu uC może wyłączyć wewnętrzne napięcie odniesienia i pobór pradu spada do 1.95uA. Reszte chyba ciągną piny przycisków w stanie niskim i rezystor podciągający na INT0, choć to i tak wydaje mi się za dużą wartościa.



    DODANO 23:08


    No więc nie ma znaczenia czy piny pozostawie jako wejścia czy jako wyjścia, czy w stanie niskim czy w stanie wysokim, pobór prądu nie zmienia się nawet o 0.1uA.

    Przy 1.8V jest 1.2uA
    Przy 2V jest 1.45uA
    Przy 3V jest 7uA
REKLAMA