Co pobiera mniej energii: odwolywanie sie do PINow AVR'a czy do pamieci RAM?

Feb 01, 2005 8 Replies

pytanie jest dosyc idiotyczne :), ale tak jakos ciekawy jestem:



co pobierze mniej pradu: ciagle sprawdzanie danego bitu PINu AVRa, czy ciagle sprawdzanie komorki pamieci RAM?



Q snipped-for-privacy@gazeta.gov.pl> napisał(a):

Nie zaprzeczam ;)

Pobór prądu przez ATMega32=0.018735828499826538123695478 A

Pobór prądu przez ATMega32=0.018735828499826538123695477 A

Piotrek ;-)

On Tue, 1 Feb 2005 14:47:20 +0000 (UTC), "Piotrek Sz." snipped-for-privacy@NOSPAM.gazeta.pl> wrote: [.....]

A jaki amperomierz pokazał Ci taki wynik? :-) I dlaczego kosztował 2% PKB Polski. :-)

Regards, /J.D.

Kurcze sk±d ty masz taki miernik dok³adny ?? z NASA ?? te¼ bym taki chcia³ ;)

To jest ruski miernik, ma zle wskazania;P Ile ATMega32 ma tranzystorow? 100tys.? moze 200tys.? Zakladajac, ze przez kazdy z tranzystorow plynie podobny prad, to skad roznice na 26 miejscu po przecinku? IMHO powinny byc na 18mA/ilosc tranzystorow;)

Wow... Przeliczona różnica tych prądów daje przepływ 1 elektronu na 3 lata. :)

TP.

Q napisał(a):

Problem jest dosyć filozoficzny ;)

W przypadku kiedy pin będzie "typu pull-up" to w przypadku podania L na pin to popłynie jakiś dodatkowy prąd, pomijając ten przypadek można by rozważać co powoduje przełączanie większej ilości tranzystorów ;)

Masz zbyt korpuskularne podejscie do zycia;)

Pradu zuzyje pobierze mniej operacja, ktora zajmie krotszy czas.

Jezeli sprawdzasz stan pinu np. instrukcja SBIC robiac ewentualnie skok przez RJMP: sbic port, nrbitu ; 1/2(3) cykle rjmp wait ; 2 cykle

- taka operacja zajmuje lacznie 3 (sbic 1 + rjmp 2) lub 2 (sbic) cykle zegara. Sprawdzenie natomiast komorki pamieci RAM wymaga jej odczytania np. instrukcja lds, po czym moze trzeba jeszcze wyciagnac stamtad interesujacy nas bit i ewentualnie skoczyc: lds r16, komorka1 ; 2 cykle sbrc r16, nrbitu ; 1/2(3) cykle rjmp wait ; 2 cykle

- taka operacja zajmie wiecej czasu niz wczesniej przedstawione sprawdzanie bitu I/O.

Oczywiscie mozna sobie wyobrazic sprawdzanie bitu I/O w dowolny inny sposob (np. odczytanie instrukcja IN calego portu 8-bitowego, np. PINA; instrukcja ANDI ze stala maska i warunkowy skok BREQ -> czyli testowanie czy kilka interesujacych bitow jest zgaszonych) - zajmie to calkiem inny czas niz najprostszy odczyt z pamieci RAM ze skokiem warunkowym (pamiec RAM == rejestr np. r18, na stale przeznaczony na trzymanie jakiejs maski): tst r18 ; 1 cykl brne wait ; 1/2 cykle

- to zajmie razem 2 (gdy r18=0) lub 3 cykle (gdy r18!=0 i bedzie skok).

W praktyce nie przejmuj sie powyzszymi wywodami a program napisz tak, jak bedzie wygodniej. I tak wiecej pradu zezre cala reszta a nie to sprawdzanie jednego bitu. A jak chcesz oszczedzic prad to na ten bit I/O wykorzystaj wejscie przerwania zewnetrznego i usypiaj procesor zamiast ciagle go sprawdzac w pollingu.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required