Serwis Edukacyjny
w I-LO w Tarnowie
obrazek

Materiały dla uczniów liceum

  Wyjście       Spis treści       Wstecz       Dalej  

obrazek

Autor artykułu: mgr Jerzy Wałaszek
Konsultacje: Wojciech Grodowski, mgr inż. Janusz Wałaszek

©2024 mgr Jerzy Wałaszek
I LO w Tarnowie

obrazek

Mikrokontrolery

ATtiny4/5/9/10

Zarządzanie zasilaniem mikrokontrolera

obrazek

Educational and Non-Profit Use of Copyrighted Material:

If you use Microchip copyrighted material solely for educational (non-profit) purposes falling under the “fair use” exception of the U.S. Copyright Act of 1976 then you do not need Microchip’s written permission. For example, Microchip’s permission is not required when using copyrighted material in: (1) an academic report, thesis, or dissertation; (2) classroom handouts or textbook; or (3) a presentation or article that is solely educational in nature (e.g., technical article published in a magazine).

https://www.microchip.com/about-us/legal-information/copyright-usage-guidelines

SPIS TREŚCI
Podrozdziały

obrazek

Tryby uśpienia

Wysoka wydajność oraz duża efektywność kodu sprawiają, iż mikrokontrolery AVR stanowią idealny wybór przy tworzeniu aplikacji o niskim poborze energii. Dodatkowo tryby uśpienia pozwalają aplikacji wyłączać nieużywane moduły w mikrokontrolerze, a w ten sposób oszczędzać energię. Architektura AVR udostępnia różne tryby uśpienia, dzięki którym użytkownik może dostosować zużycie energii do wymagań aplikacji.

Poniższy rysunek z poprzedniego rozdziału przedstawia różne systemy zegarowe oraz ich rozdział w ATtiny4/5/9/10. Rysunek może być pomocny przy wyborze odpowiedniego trybu uśpienia.

obrazek

Różne tryby uśpienia oraz ich źródła wybudzeń:

Tryb uśpienia Aktywne zegary Oscylatory Źródła wybudzeń
clkCPU clkNVM clkIO clkADC
(1)
Aktywne
źródło
zegara
głównego
INT0
i
zmiana
wejść
ADC
(1)
Inne
we/wy
Przerwanie
od
licznika
zegarowego
Przerwanie
VLM
Bezczynność     X X X X X X X X
Redukcja zakłóceń  dla ADC       X X X (2) X   X X
Gotowość         X X (2)     X  
Wyłączenie zasilania           X (2)     X  
Uwagi 1. Przetwornik A/C (ADC) dostępny jest tylko w ATtiny 5 i 10.
  2. Dla INT0 tylko przerwanie od poziomu.

Aby wejść w dowolny z czterech trybów uśpienia, bity SM (ang. Sleep Mode – Tryb Uśpienia) w rejestrze SMCR (ang. Sleep Mode Control Register – Rejestr Sterujący Trybami Uśpienia) muszą być ustawione na 1 i musi zostać wykonana instrukcja SLEEP. Bity SM2:0 w rejestrze SMCR  wybierają tryb uśpienia (bezczynny, redukcję szumu dla ADC, gotowość lub wyłączenie zasilania), który zostanie aktywowany przez instrukcję SLEEP.

Jeśli uaktywnione przerwanie wystąpi, gdy mikrokontroler znajduje się w trybie uśpienia, zostanie on wybudzony. Mikrokontroler jest wtedy zatrzymywany przez dodatkowe 4 takty oprócz czasu uruchamiania, następnie wykonuje on procedurę obsługi przerwania i wznawia wykonywanie programu od instrukcji za rozkazem SLEEP. Zawartość zestawu rejestrów oraz pamięci SRAM nie ulega zmianie, gdy układ zostaje wybudzony ze stanu uśpienia. Jeśli w czasie trwania trybu uśpienia wystąpi reset, mikrokontroler budzi się i rozpoczyna wykonywanie programu od wektora resetu.

Zwróć uwagę, iż przy używaniu przerwania wyzwalanego poziomem do wybudzania mikrokontrolera, zmieniony poziom musi być utrzymywany przez pewien czas, aby wybudzić mikrokontroler (oraz aby mikrokontroler wszedł do procedury obsługi tego przerwania). Szczegóły znajdziesz w rozdziale "Przerwania".

Tryb bezczynności (ang. Idle Mode)

Gdy bity SM2:0 zostaną ustawione w stan 000, to instrukcja SLEEP wprowadza mikrokontroler w tryb bezczynności, zatrzymując mikroprocesor lecz pozwalając dalej pracować komparatorowi analogowemu, licznikowi/timerowi, licznikowi zegarowemu oraz systemowi przerwań. Ten tryb uśpienia głównie zatrzymuje zegary clkCPU i clkNVM, natomiast pozwala pracować pozostałym zegarom.

Tryb bezczynności pozwala mikrokontrolerowi wybudzić się przy przerwaniach wyzwalanych zarówno zewnętrznie jak i wewnętrznie, jak nadmiar licznika. Jeśli wybudzenie z przerwania komparatora analogowego nie jest wymagane, komparator może zostać wyłączony przez ustawienie bitu ACD (ang. Analog Comparator Down) w rejestrze ACSR (ang. Analog Comparator Control and Status Register – Rejestr Stanu i Sterowania Komparatorem Analogowym). Zmniejszy to pobór energii w trybie bezczynności. Jeśli przetwornik A/C (ang. Analog to Digital Converter, ADC) jest uaktywniony (tylko ATtiny 5 i 10), to konwersja rozpoczyna się natychmiast, gdy mikrokontroler wejdzie w ten tryb uśpienia.

Tryb zmniejszania zakłóceń dla przetwornika A/C (ang. ADC Noise Reduction Mode)

Gdy w bitach SM2:0 zostanie umieszczona wartość dwójkowa 001, to instrukcja SLEEP wprowadzi mikrokontroler w tryb zmniejszania zakłóceń dla przetwornika A/C, zatrzymując mikroprocesor, lecz zezwalając na pracę przetwornika A/C, zewnętrznym przerwaniom oraz licznikowi zegarowemu (jeśli jest uaktywniony). Ten tryb uśpienia zatrzymuje zegary clkI/O, clkCPU i clkNVM, natomiast pozostałe zegary pracują normalnie.

Obniża to poziom zakłóceń od sieci logicznej, co poprawia precyzję przetwarzania w przetworniku A/C, umożliwiając bardziej dokładne pomiary. Jeśli przetwornik A/C jest uaktywniony, to konwersja rozpocznie się automatycznie przy wejściu w ten tryb uśpienia.

Tryb ten jest jest dostępny na wszystkich mikrokontrolerach, chociaż jedynie ATtiny 5 i 10 są wyposażone w przetwornik A/C.

Tryb wyłączenia zasilania (ang. Power-down Mode)

Gdy w bitach SM2:0 umieści się wartość dwójkową 010, to instrukcja SLEEP wprowadzi mikrokontroler w tryb wyłączenia zasilania. W tym trybie zatrzymywany jest oscylator, podczas gdy działają (jeśli są uaktywnione) przerwania zewnętrzne oraz licznik zegarowy. Mikrokontroler może zostać wybudzony jedynie przez reset z licznika zegarowego, przerwanie zewnętrzne na końcówce INT0 lub przerwanie od zmiany poziomu na wejściu. Ten tryb uśpienia zatrzymuje wszystkie generowane zegary, zezwalając na pracę tylko modułom asynchronicznym.

Tryb gotowości (ang. Standby Mode)

Gdy w bitach SM2:0 zostanie umieszczona wartość dwójkowa 100, to instrukcja SLEEP wprowadzi mikrokontroler w tryb gotowości, a właściwie w tryb oczekiwania w pełnej gotowości. Jest on identyczny do trybu wyłączenia zasilania z tym wyjątkiem, iż oscylator nie jest zatrzymywany. Skraca to czas wybudzenia, ponieważ  oscylator pracuje i nie musi być uruchamiany.


Na początek:  podrozdziału   strony 

Rejestr zmniejszania poboru energii

Rejestr PRR (ang. Power Reduction Register – Rejestr Zmniejszania Poboru Energii) udostępnia metodę zmniejszenia poboru energii przez zatrzymanie zegara dla indywidualnych modułów peryferyjnych. Gdy zegar dla modułu peryferyjnego jest zatrzymany:

W większości przypadków moduł peryferyjny powinien zostać zablokowany przed wyłączeniem zegara. Wyzerowanie bitu w rejestrze PRR wybudza moduł peryferyjny i wprowadza go w ten sam stan, w jakim znajdował się przed wyłączeniem.

Wyłączenie modułu peryferyjnego może zostać użyte w trybie bezczynności lub w trybie aktywnym w celu znaczącego obniżenia całkowitego poboru energii. We wszystkich innych trybach uśpienia zegar jest już wyłączony.


Na początek:  podrozdziału   strony 

Minimalizowanie poboru energii

Istnieje kilka zagadnień do rozważenia przy próbach zminimalizowania poboru energii w systemie sterowanym przez rdzeń AVR. Ogólnie należy stosować tryby uśpienia tak często, jak to jest możliwe, a tryb uśpienia należy wybierać, tak aby pracowało jak najmniej niezbędnych składników. Niepotrzebne funkcje powinny zostać wyłączone. W szczególności moduły wymienione poniżej mogą wymagać szczególnego rozważenia przy próbach osiągnięcia najniższego do uzyskania poboru energii.

Komparator Analogowy (ang. Analog Comparator)

Przy wejściu w tryb bezczynności (ang. Idle Mode) komparator analogowy powinien zostać wyłączony, jeśli nie jest używany. W trybie wyłączenia zasilania (ang. Power-down Mode) komparator analogowy jest automatycznie wyłączany.

Przetwornik Analogowo-Cyfrowy (ang. Analog to Digital Converter)

Jeśli jest aktywny, przetwornik A/C pozostanie włączony we wszystkich trybach uśpienia. Aby zmniejszyć pobór energii, przetwornik A/C powinien być wyłączany przed wejściem w tryb uśpienia. Jeśli przetwornik A/C jest wyłączany i ponownie włączany, to następną konwersją będzie konwersja rozszerzona.

Przetwornik A/C jest tylko w ATtiny 5 i 10.

Licznik zegarowy (ang. Watchdog Timer)

Jeśli w aplikacji licznik zegarowy nie jest potrzebny, to moduł ten powinien zostać wyłączony. Jeśli licznik zegarowy jest włączony, to będzie on aktywny we wszystkich trybach uśpienia, a stąd będzie zawsze zużywał energię. W głębszych trybach uśpienia będzie to znacząco dokładało się do całkowitego poboru energii.

Wyprowadzenia portu (ang. Port Pins)

Gdy mikrokontroler wchodzi w tryb uśpienia, wszystkie wyprowadzenia portu powinny być skonfigurowane na minimalny pobór energii. najważniejszą rzeczą jest wtedy upewnienie się, że żadne wyprowadzenie nie zasila obciążeń oporowych. W trybach uśpienia, w których zatrzymany jest zegar we/wy (clkI/O) bufory wejściowe mikrokontrolera zostają wyłączone. Zapewnia to, iż nie będzie pobierana żadna energia przez wejściową sieć logiczną, gdy nie jest to potrzebne. Jednakże w niektórych przypadkach potrzebne jest działanie tej sieci w celu wykrywania warunków wybudzania, a wtedy będzie ona uaktywniana. Jeśli bufor wejścia jest włączony, a sygnał wejściowy jest pozostawiony w stanie nieokreślonym lub poziom sygnału analogowego jest w pobliżu napięcia VCC/2, to bufor wejścia będzie pobierał nadmierną energię.

Dla wyprowadzeń wejść analogowych, cyfrowy bufor wejściowy powinien zawsze być wyłączany. Poziom sygnału analogowego bliski VCC/2 na wyprowadzeniu wejściowym może spowodować znaczący prąd nawet w trybie aktywnym. Cyfrowe bufory wejść można wyłączać przez zapis do rejestru wyłączania cyfrowych wejść (ang. Digital Input Disable Register, DIDR0).


Na początek:  podrozdziału   strony 

Opis rejestrów

SMCR – Sleep Mode Control Register – Rejestr Sterujący Trybami Uśpienia

Bit 7 6 5 4 3 2 1 0  
0x3A - - - - SM2 SM1 SM0 SW SMCR
Zapis/Odczyt O O O O Z/O Z/O Z/O Z/O  
Wartość początkowa 0 0 0 0 0 0 0 0  

Bity 7:4 – Zarezerwowane

Te bity są zarezerwowane i przy odczycie zawsze będą miały wartość 0.

Bity 3:1 – SM2..SM0: Bity Wyboru Trybu Uśpienia

Te bity dokonują wyboru pomiędzy dostępnymi trybami uśpienia, jak pokazano w poniższej tabeli:

SM2 SM1 SM0 Tryb uśpienia
0 0 0 Bezczynny
0 0 1 Redukcja zakłóceń dla przetwornika A/C
0 1 0 Wyłączenie zasilania (1)
0 1 1 Zarezerwowane
1 0 0 Gotowość
1 0 1 Zarezerwowane
1 1 0 Zarezerwowane
1 1 1 Zarezerwowane
Uwaga: (1) Ten tryb dostępny jest na wszystkich czterech mikrokontrolerach, jednak tylko ATtiny 5 i 10 posiadają przetwornik A/C

Bit 0 – SE: Uaktywnienie uśpienia

Bit SE (ang. Sleep Enable) musi być ustawiony w stan logiczny 1, aby mikrokontroler wszedł w tryb uśpienia, gdy jest wykonywana instrukcja SLEEP. Aby uniknąć wprowadzenia mikrokontrolera w niezamierzony stan uśpienia, zaleca się zapisanie bitu SE tuż przed wykonaniem instrukcji SLEEP i wyzerowanie go natychmiast po wybudzeniu.


PRR – Power Reduction Register – Rejestr Zmniejszania Poboru Energii

Bit 7 6 5 4 3 2 1 0  
0x35 - - - - - - PRADC PRTIM0 PRR
Zapis/Odczyt O O O O O O Z/O Z/O  
Wartość początkowa 0 0 0 0 0 0 0 0  

Bity 7:2 – Zarezerwowane

Te bity są zarezerwowane i przy odczycie zawsze będą miały wartość 0.

Bit 1 – PRADC: Power Reduction ADC – Ograniczenie Zasilania Przetwornika A/C

Wpisanie logicznej jedynki do tego bitu wyłącza przetwornik A/C. Przetwornik A/C musi zostać dezaktywowany przed wyłączeniem.
Komparator analogowy nie może używać wejścia multipleksera przetwornika A/C, gdy ten jest wyłączony.
Przetwornik A/C dostępny jest jedynie na mikrokontrolerach ATtiny 5 i 10.

Bit 0 – PRTIM0: Power Reduction Timer/Counter0 – Ograniczenie Zasilania Timera/Licznika 0

Wpisanie logicznej jedynki do tego bitu wyłącza moduł timera/licznika 0. Gdy moduł ten zostanie włączony, jego działania będzie dokładnie takie samo jak przed wyłączeniem.


Na początek:  podrozdziału   strony 

Zespół Przedmiotowy
Chemii-Fizyki-Informatyki

w I Liceum Ogólnokształcącym
im. Kazimierza Brodzińskiego
w Tarnowie
ul. Piłsudskiego 4
©2024 mgr Jerzy Wałaszek

Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone
pod warunkiem podania źródła oraz niepobierania za to pieniędzy.

Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl

Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.

Informacje dodatkowe.