www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Attiny13+PB2+Sleep

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja AVR-jev
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
TECHNIC
Član
Član



Pridružen-a: Tor 31 Okt 2006 11:18
Prispevkov: 582
Aktiv.: 2.57
Kraj: Senovo

PrispevekObjavljeno: Ned Nov 14, 2010 10:06 pm    Naslov sporočila:  Attiny13+PB2+Sleep Odgovori s citatom

Attiny13 uporabljam v neki baterijski aplikaciji, kjer bi bil odklop akumulatorja po uporabi dokaj nerodna zadeva, zato moram nekako maksimalno zmanjšati porabo, ko je uC v mirovanju.

Ker imam trenutno stikalo (trigger) vezan na PB2 + notranji pull-up, bi rad iz tega porta uC tudi zbudil iz spanja, če se to sploh da? S tem še nisem nikoli delal, tako da nimam pojma.

Sam program je v bistvu zelo preprost, uC samo čaka na spremembo stanja na PB2, potem izvede par vrstic (pri tem je tudi interakcija z drugimi in-out pini) in nato zopet čaka na spremembo na PB2 (iz višjega na nižje stanje). Napajalnik (5V LDR) je izbran tak, da ima zelo nizko mirovno porabo, nekaj uA.

Kako se torej uC postavi v spanje in kasneje iz njega? Pišem v Bascomu, zato bi bilo idealno, da bi lahko nekdo pokazal na takem primeru, hvaležen pa bom kakršnim koli napotkom.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
lojzek
Član
Član



Pridružen-a: Pet 25 Jan 2008 8:00
Prispevkov: 3387
Aktiv.: 16.00

PrispevekObjavljeno: Pon Nov 15, 2010 7:26 am    Naslov sporočila:   Odgovori s citatom

Pri uporabi pina PB2 imaš na voljo Pin Change Interrupt, ki ti lahko zbudi uC. VENDAR, tak način interrupta lahko procesor zbudi samo iz Idle Mode in ADC Noise Reduction Mode. Ta dva pa ne omogočata zelo velikih prihrankov energije.

Če bi lahko spremenil hardware tako, da bi pogoj za bujenje imel na INT0 pinu (PB0), imaš na izbiro tudi več različnih načinov spremembe pina, ki zbudijo uC. Pa v tem primeru bi ga lahko spravil tudi v Power Down Mode, kjer pa bi bil prihranek energije največji.

O prihrankih elektrike si preberi v poglavju 19. Typical characteristics v datasheetu. Tam si mogoče tudi ogledaš, kateri sleep mode ti bo ustrezal

Preberi si še poglavja 7. Power management and sleep modes, 9. Interrupts (external interrupts) iz "tavelikega" datasheeta in ti bodo stvari jasnejše.
S primerom ti pa ne morem pomagati, ker pišem v C-ju.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
TECHNIC
Član
Član



Pridružen-a: Tor 31 Okt 2006 11:18
Prispevkov: 582
Aktiv.: 2.57
Kraj: Senovo

PrispevekObjavljeno: Pon Nov 15, 2010 12:38 pm    Naslov sporočila:   Odgovori s citatom

Hvala za odgovor, mi je jasno že več stvari.
Vseeno pa nisem prepričan, če PB2 omogoča zbujanje iz power down ali ne?
"INT0 and pin change", ali to pomeni tudi kater drug pin, PCINT2 je na PB2.

Bom poskusil nekaj spisati v Bascomu, čeprav dlje ko ga uporabljam, bolj se mi upira. Bi preklopil na C, samo moram najprej usposobiti AVRstudio, oziroma fukcijo Compile.



ScreenShot001.png
 Opis:
 Velikost datoteke:  21.83 KB
 Pogledana:  3 krat

ScreenShot001.png


Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
lojzek
Član
Član



Pridružen-a: Pet 25 Jan 2008 8:00
Prispevkov: 3387
Aktiv.: 16.00

PrispevekObjavljeno: Pon Nov 15, 2010 1:18 pm    Naslov sporočila:   Odgovori s citatom

Hja, tudi jaz sem očitno bolj slabo bral. Na naslednji strani od tvoje tabelice je v poglavju Power down mode omenjeno, da tudi Pin change interupt (tak kot ga nameravaš ti uporabiti) lahko zbudi procesor Think iz power down mode.
Če je to res (najverjetneje tudi je in oba zastopiva pravilno) potem ti bo delalo preglavice samo dejstvo, da bo vsaka sprememba stanja pina PB2 (iz 0->1 ali pa iz 1->0) zbudila procesor in izvedla zahtevano nalogo. No, to boš pa že programsko rešil.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
TECHNIC
Član
Član



Pridružen-a: Tor 31 Okt 2006 11:18
Prispevkov: 582
Aktiv.: 2.57
Kraj: Senovo

PrispevekObjavljeno: Pon Nov 15, 2010 2:49 pm    Naslov sporočila:   Odgovori s citatom

Tole je bilo pa čisto preveč preprosto. Surprised

Koda:
Enable Interrupts

Set Pcmsk.pcint2 'interrupt pin
Set Gimsk.pcie
Set Mcucr.sm1 'power down izbran
Reset Mcucr.sm0 'power down izbran

Do
Reset Mcucr.se 'sleep disabled
Set Led
Wait 1
Reset Led
Wait 1
Set Mcucr.se 'sleep enabled
sleep
Loop
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja AVR-jev Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 493 dni


Powered by phpBB © 2001, 2005 phpBB Group