Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

AVR Wpływ sposobu pisania programu na pobór prądu procesora.

02 Apr 2010 14:16 1628 28
  • Level 32  
    Jaki wpływ ma kod programu na pobór prądu. Nie chodzi tu o wykorzystywanie wewnętrznych modułow samego procesora. Czy mozliwe zeby okreslone sekwencje rozkazów powodowały zbyt duzy pobór prądu?
  • Level 15  
    Raczej nie. AVR wykonuje wszystkie polecenia po kolei i nie ma coś takiego że nagle sobie pobierze więcej prądu aby wykonać polecenie config czy co innego.
  • Level 32  
    To dlaczego wykonujac cykliczny skok do podprogramu pustego lub z mała iloscia rozkazów pobór pradu roznie i to znacznie?
    Przesuwałem miejsce stosu w pamieci i tez mialo to wplyw na pobór. Mówie tu nie o mikroamperach ale o dzieisiatkach mA.
    A może poprostu procek uszkodzony w dziwny sposób albo podróbka?
  • Level 15  
    Dziwne, a czymś sterowałeś? Wypuszczałeś coś na pin?
  • Level 32  
    Niczym nie steruje kod programu :
    SKOK: CALL NIC
    RJMP SKOK

    NIC: RET

    Jak podstawie do procedury NIC delay3ms to wtedy spada zarłocznosc.

    Dodano po 56 [sekundy]:

    Na dodatek program umieszczony w róznych rejonach Flash zmienia wartosci poboru pradu.
  • Level 38  
    Układy cyfrowe pobierają najwięcej prądu zmieniając stan wyjściowy. Przy ustalonym wyjściu pobór prądu jest niewielki. Procesor pracuje ciągle, Nawet pusta pętla while(1) to praca procesora. A zmieniane są wewnętrzne stany. Wobec tego pobór prądu może się znikomo zmieniać. Lecz to jest raczej niezauważalne. A pracuje tak szybko, że i tak wszystko się uśrednia jakoś. Praca samego rdzenia zawsze powinna pobierać tyle samo prądu z wahaniami zapewne rzędu nA.
  • Level 32  
    Ale tu wyniki pomiarów są nastepujace.
    80mA z pustą pętlą 37mA z petla która ma w sobie opóżnienie.
    Ja sądze ze to moze miec coś wspolnego własnie z wielokrotnym szybkimi zmianami na wewnetrzenj pamieci RAM zwizanej ze stosem tylko ze az takie duze?
  • Level 32  
    Wszyskich trzech?

    Dodano po 20 [minuty]:

    A moze tak sie zachowują przetaktowane procesory? Ale tutaj mam12MHz przy atmedze162-16PU bez zadnych literek 'L' 'V'. Moze napis swoje a w srodku jest cos innego?
  • Level 38  
    To sprawdź na procesorze z innej serii.
  • Level 32  
    Ba tylko jak taki kupic skoro sklepy zaoptruja sie prawdopodobnie u jednego dostawcy. Te co mam kupiony na przestrzeni roku i to w dwóch róznych sklepach.
    A moze ktos ma ochote poeksperymentowac na swoich procesorach, njlepiej zeby to byl ten sam typ ale niemoniecznie. Mogę udostępnic wsad :)
  • Level 38  
    A czy istnieje tylko mega162 o taki układzie wyprowadzeń??
  • Moderator of Microcontroller designs
    A jak mierzysz prąd? Zwykłym miernikiem? Weź pod uwagę, że procesor bierze prąd impulsowo, co może doprowadzić do sporych zakłóceń przy pomiarze klasycznym miernikiem za kilkanaście zł. 80mA jak pisze Atom, to mało prawdopodobne dla samego procesora. Jeśli tam nie ma dodatkowych układów pożerających prąd to masz coś nie tak, mocno nie tak.
    Kolejna sprawa to oczywiście procesor bierze różny prąd w zależności od instrukcji jakie wykonuje. Tutaj tadzik85 absolutnie nie ma racji. Różne instrukcje powodują przełączenie różnej ilości bloków logicznych procesora, więc mogą powodować różna prądożerność. Ale to nie bedą różnice sięgające dziesiątek mA !
  • Level 38  
    tmf to miałem na myśli, lecz dla rożnych instrukcji ilość tych przełączeń nie będzie jakoś bagatelnie wielka. Różnice są na pewno. Mniejsze większe. Ale i tak problem stanowi pomiar tych różnic. Przy pomiarze zwykłym miernikiem wszystko się uśredni. A przy różnych programach otrzymamy różny wynik ale nie znacznie różniący się.
  • Level 32  
    Miernik raczej dobry kiedys kosztowal 300zł. Zreszta podpiąlem go na stale a jedyną zmianą jest to ze wykonuje na przemian dwa odmienne programy opisane poprzednio.
  • Level 32  
    Nie biorąc pod uwage wartości bezwzglednych a opierajac sie tylko na omiarzez proądu przy róznych procedurach po wielu probach dozsedlem do wniosku że sposób pisania programu ma duzy wpływ na pobór prądy i to niebagatelny ob według srednich pomiarów aż do 60%. szczególnie odnosi sie to gdy jest wykorzystywana pamiec XRAM. Natomiat wpływ kondenstaorów jest znikomy(czytaj żaden) no chyba ze sie sam stabilizator wzbudzi ale i tak ja mierze prąd po stabilizaji.
    W próbach dochodziło do tego nawet ze miejscie umieszczenia stosu w pamiecu ram mailo wpływ na pobor prądu.
  • Level 43  
    No to zaraz. Masz tam i pamięć XRAM?
    No to te 80mA to był pobór prądu mikrokontrolera i pamięci a nie samego mikrokontrolera?
    No to kolego trochę przekombinowałeś. Takie rzeczy to się pisze w pierwszym poście a nie w którymś z kolei i to po miesiącu od założenia tematu.
  • Level 32  
    No cóz miesiac zajęły badania nad poborem i nawet w przypadku niewykorzystywania pamieci XRAM wyniki były podobne z tym ze mniej wyraziste. Pobór prądu by mierzony w całym urzadzeniu gdyz wpływ pozostalyc komponentów był znikomy czyli pomijalny.
  • Level 33  
    Witam
    Było kiedyś szkolenie z firmy JM na temat procesorów Pico Power, nie jestem programistą, ale właśnie na prezentacji pokazywano optymalizację programu i fusów uzyskując 10 krotne zmniejszenie poboru prądu, gdzieś dysponuję CD z prezentacji, nie pamiętam czy jest tam prezentacja czy tylko źródła programów, jeśli jesteś zainteresowany to pogrzebię w szafach :) i Ci coś podeślę
    Piotr
  • Level 32  
    Oczywiscie tam pewnei chodziło o wyłaczanie zbednych lub aktualnie nie uzywanych wewnetrznych modułow. Tu jest prozaiczna sprawa opierajaca sie na zwykłych w tych sprawach rzeczach a mianowicie na szybkosci przełaczania lini danych/adresowych oraz na czestosci przełaczania. Szczególnie było to widac na przykładach w których stos jest bardzo wykorzystywany i w moich prywatnych badaniach doszedlem nawet do tego ze jezleli zatrzymamy procesor na procedurze ktora jest wywolywana cylkicznie to pobor pradu zalezy od tego ile bitow zmienia swoj stan w rejsetrach SPHL
  • Moderator of Microcontroller designs
    Najpierw napisz jak wygląda twój testowy układ, a najlepiej zapodaj schemat. Bo piszesz o procesorze, a tu nagle okazuje się, że masz zewnętrzną pamięć RAM, co dużo zmienia. Pokaż też kompletną procedurę testową. Przy uruchomieniu interfejsu XRAM układ może zżerać sporo prądu, co więcej sama pamięć będzie miała olbrzymi wpływ, bo w zależności od sygnałów sterujących będzie w stanie uśpienia lub nie. Bez schematów dalsza dyskusja na ten temat nie ma sensu.
    Druga rzecz - jak już pisałem, układy cyfrowe pobierają prąd impulsowo, nie da się go wiarygodnie mierzyć prostym miernikiem, nawet takim za 300zł. Musisz mieć miernik z true RMS, w dodatku z odpowiednio szerokim pasmem, podłączyć go przez układy filtrujące napięcie - co najmniej elektrolit + kondensator ceramiczny. Jaki badasz procesor?
  • Level 32  
    No cóz pomiar prądu jest dla mnie obcym tematem TMF-> co to jest elektrolit w akumulatorze podobno stosują. Jakby nie mierzyc czy zewnetrzny ram czy wewnetrzne jelito pomiar wykazuje co wykazuje. warunki pomiaru sie nie zmieniaja jedynie zostaje wgrany nowy program (dodatkow sprawdzany był czas dzialania w obu przypadkach i wykazał jeszcze wieksze róznice o dziwo). Temat raczej jako ciekawostka. W sumie to powinien byc patent skoro mozna ograniczyc pobor produ o 20mA tylko stosując lepsze kompilatory, Skoro na swiecie pewnei dzialaja miliardy procesorków razy ta 20mA to robia sie ekolgiczne wartosci.
    Nie mam zamiaru nigoko urażać gdyż dla mnie to też było zaskoczenie ze na tak niskim poziomie technologicznym mozna uzyskiwac takie oszcednosci tylko poprzez stosowanie odpowiednich kompilatorów czego raczej twórcy owych nie brali achyba pod uwagę.
    Ram ram xram łubudu bęc.:-)
  • Moderator of Microcontroller designs
    Uprawiasz beletrystykę... zrozum, że to co mierzysz może być artefaktem, a nawet jeśli nie jest to może wynikać z działania zewnętrznej pamięci SRAM. W zależności od sygnałów WR/RD i CS wchodzi w stan uśpienia, dla SRAM różnice rzędu 20-60mA pomiędzy pracą a stanem uśpienia są normalne. Ale dopóki nie pokażesz schematu i kodu to możemy sobie dywagować...
  • Level 32  
    Kod podalem na pocztku.
  • Level 31  
    Bez schematu nie da się nic powiedzieć na odległość.

    Osobiście dokładnie nie wnikałem, jak mają się rozkazy procesora, jednak procesor nigdy nie pobierał więcej prądu niż jest to napisane w nocie katalogowej, więc wielkich badań nie prowadziłem. Zwykle krótszy program pobierał mniej prądu. Podejrzewam że odwołania do pamięci też mogą swoje robić. Co do peryferii, mają dość duży wpływ. Ich w nocie z reguły nie ma, a mają one swój dość istotny wkład :)

    Na pewno obróbka danych na mniej zmieniających się bitach jest energooszczędniejsza. Bo pobór prądu przez układy cyfrowe tego typu mniej więcej jest równy ilości przełączenia bramek na sekunde. Plus bramki bardziej obciążone pojemnościowo. Nie wiem jak teraz ale kiedyś myślało się nad różnymi rzeczami. Np kod Greya jest kodem gdzie każda następna liczba bitowa różni się od poprzedniej tylko o jeden bit. Już sam nie pamiętam gdzie się to wykorzystywało, niekoniecznie musiało chodzić o pobór prądu. ;)
  • Level 35  
    Nie wiem czy ten prąd to musi być taki jednakowy.
    Dawno, dawo temu czytałem że takim sposobem odgadywało się zaszyty soft w procku. Nie mniej jednak 40 a 80mA to spora różnica
pcbway logo