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

©2021 mgr Jerzy Wałaszek
I LO w Tarnowie

obrazek

Mikrokontrolery

ATmega48A/PA/88A/PA/168A/PA/328/P

Zarządzanie zasilaniem i tryby uśpienia

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

Tryby uśpienia umożliwiają aplikacji zamknięcie nieużywanych modułów w mikrokontrolerze, przez co oszczędzana jest energia. AVR udostępnia różne tryby uśpienia pozwalające użytkownikowi dopasować zużycie energii do wymagań aplikacji.

Gdy jest aktywny detektor spadku napięcia zasilania (ang. Brown-out Detector, BOD), to aktywnie monitoruje on napięcie zasilające w okresach uśpienia. Aby zwiększyć oszczędność prądu, możliwe jest wyłączenie BOD w niektórych trybach uśpienia. Więcej szczegółów w podrozdziale "Wyłączenie BOD".

Powyższy rysunek z poprzedniego rozdziału przedstawia różne systemy zegarowe w mikrokontrolerach ATmega48A/PA/88A/PA/168A/PA/328/P oraz ich dystrybucję. Rysunek jest pomocny przy wyborze odpowiedniego trybu uśpienia. Poniższa tabelka przedstawia różne tryby uśpienia, ich źródła wybudzeń oraz możliwość wyłączania BOD (wyłączanie BOD dotyczy tylko mikrokontrolerów ATmega48PA/88PA/168PA/328P).

  Aktywne domeny zegarowe Oscylatory Źródła wybudzania
 
Bezczynny     X X X X X(2) X X X X X X X  
Redukcja zakłóceń       X X X X(2) X(3) X X(2) X X X    
Wyłączenie               X(3) X       X   X
Oszczędność prądu         X   X(2) X(3) X X     X   X
Gotowość(1)           X   X(3) X       X   X
Rozszerzona gotowość         X(2) X X(2) X(3) X X     X   X
Uwagi: 1. Zalecane jedynie z zewnętrznym kwarcem lub rezonatorem wybranym jako źródło zegarowe.
  2. Jeśli timer/licznik 2 pracuje w trybie asynchronicznym.
  3. Dla INT0 i INT1, tylko przerwanie od poziomu.

Aby wejść w dowolny z sześciu trybów uśpienia, należy wpisać logiczną jedynkę do bitu SE w rejestrze MCUCR, a następnie wykonać instrukcję SLEEP. Bity SM2...0 w rejestrze MCUCR określają, który tryb uśpienia (bezczynny, redukcji zakłóceń dla przetwornika A/C, wyłączenia zasilania, oszczędzania, oczekiwania w gotowości i rozszerzonego oczekiwania w gotowości) zostanie uaktywniony przez instrukcję SLEEP. Gdy w trakcie uśpienia pojawi się dozwolone przerwanie, mikrokontroler wybudzi się. Następnie mikrokontroler jest wstrzymywany przez cztery cykle zegara dodatkowo do czasu uruchamiania, po czym wykonuje procedurę obsługi przerwania i kontynuuje realizację programu głównego od następnej instrukcji za SLEEP. Gdy mikrokontroler wybudza się z uśpienia, zawartość zestawu rejestrów i pamięci SRAM jest niezmieniona. Gdy w trakcie uśpienia wystąpi reset, mikrokontroler wybudza się i wykonuje program od wektora resetu.

Na początek:  podrozdziału   strony 

Wyłączenie BOD(1)

Gdy włączony jest detektor spadku napięcia zasilającego (Brown-out Detector, BOD) przez bity bezpiecznikowe BODLEVEL, to moduł BOD ciągle monitoruje napięcie zasilania podczas okresu uśpienia. Aby zaoszczędzić pobieraną energię, możliwe jest wyłączenie BOD z poziomu programu dla niektórych trybów uśpienia (zobacz na tabelkę w poprzednim podrozdziale). Wtedy pobór prądu w trybie uśpienia będzie na tym samym poziomie jak przy globalnym wyłączeniu modułu BOD za pomocą bitów bezpiecznikowych. Jeśli BOD zostanie wyłączony w programie, to jego funkcja przestaje działać natychmiast po wejściu w tryb uśpienia. Po wybudzeniu BOD zostaje automatycznie ponownie uaktywniony. Zapewnia to bezpieczną pracę w przypadku spadku poziomu VCC podczas okresu uśpienia.

Gdy moduł BOD został wyłączony, czas wybudzania z trybu uśpienia będzie wynosił w przybliżeniu 60 μs, aby zapewnić poprawne działanie BOD przed rozpoczęciem wykonywania kodu przez mikrokontroler. Wyłączanie BOD kontroluje bit BODS (ang. BOD Sleep) w rejestrze sterującym MCUCR. Zapisanie tego bitu jedynką wyłącza BOD w odpowiednich trybach uśpienia, natomiast wartość 0 pozostawia BOD aktywnym. Zapis bitu BODS kontrolowany jest sekwencją czasową i bitem włączającym, zobacz do opisu rejestru MCUCR.

Uwaga: 1. Opcja wyłączania modułu BOD jest dostępna tylko w mikrokontrolerach picoPower® ATmega48PA/88PA/168PA/328P
Na początek:  podrozdziału   strony 

Tryb bezczynny (ang. Idle Mode)

Gdy bity SM2...0 zostaną ustawione w stan 000, to instrukcja SLEEP wprowadza mikrokontroler w tryb bezczynności (ang. Idle Mode), zatrzymując mikroprocesor lecz pozwalając dalej pracować modułowi SPI, USART, komparatorowi analogowemu, przetwornikowi A/C, 2-przewodowemu interfejsowi szeregowemu, timerom/licznikom, licznikowi zegarowemu oraz systemowi przerwań. Ten tryb uśpienia głównie zatrzymuje zegary clkCPU i clkFLASH, 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 przerwania od nadmiarów timerów i przy zakończeniu transmisji USART. 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, to konwersja rozpoczyna się natychmiast, gdy mikrokontroler wejdzie w ten tryb uśpienia.

Na początek:  podrozdziału   strony 

Tryb redukcji 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 redukcji zakłóceń dla przetwornika A/C (ang. ADC Noise Reduction Mode), zatrzymując mikroprocesor, lecz zezwalając na pracę przetwornika A/C, zewnętrznym przerwaniom, modułowi śledzenia adresu 2-przewodowego interfejsu szeregowego, timerowi/licznikowi 2 i licznikowi zegarowemu (jeśli jest uaktywniony). Ten tryb uśpienia zatrzymuje zegary clkI/O, clkCPU i clkFLASH, 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 pomiary z większą rozdzielczością. Jeśli przetwornik A/C jest uaktywniony, to konwersja rozpocznie się automatycznie przy wejściu w ten tryb uśpienia. Oprócz przerwania przy zakończeniu przetwarzania w przetworniku A/C mikrokontroler może być wybudzony z trybu redukcji zakłóceń tylko przez zewnętrzny reset, reset od licznika zegarowego, przerwanie od licznika zegarowego, reset przy spadku napięcia zasilania, przerwanie od zgodności adresu 2-przewodowego interfejsu szeregowego,  przerwanie z timera/licznika 2, przerwanie od gotowości SPM/EEPROM, przerwanie zewnętrzne od poziomu na wejściach INT0/INT1 lub przerwanie od zmiany stanu końcówki.

Na początek:  podrozdziału   strony 

Tryb wyłączenia (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 (ang. Power-down Mode). W tym trybie zatrzymywany jest oscylator zewnętrzny, podczas gdy działają przerwania zewnętrzne, obserwowanie adresu 2-przewodowego interfejsu szeregowego oraz licznik zegarowy (jeśli są uaktywnione). Mikrokontroler może zostać wybudzony jedynie przez zewnętrzny reset, reset z licznika zegarowego, zgodność adresu 2-przewodowego interfejsu szeregowego oraz przerwanie zewnętrzne od poziomu na końcówce INT0/IN1 i przerwanie od zmiany stanu końcówki. Ten tryb uśpienia zatrzymuje wszystkie generowane zegary, zezwalając na pracę tylko modułom asynchronicznym.

Zapamiętaj, iż jeśli do wybudzania z trybu wyłączenia używane jest przerwanie wyzwalane poziomem, to zmieniony poziom musi się utrzymywać przez pewien czas, aby wybudzić mikrokontroler i aby wyzwolił on przerwanie od poziomu. Jeśli ten poziom zniknie przed końcem czasu uruchamiania, to mikrokontroler wciąż się wybudzi, lecz żadne przerwanie nie będzie wygenerowane. Zobacz do rozdziału "Przerwania zewnętrzne". Czas uruchamiania definiowany jest przez bity bezpiecznikowe SUT CKSEL, jak opisano w rozdziale "Zegar systemowy i opcje zegarowe".

Przy wybudzaniu z trybu wyłączenia istnieje pewne opóźnienie od czasu wystąpienia warunku wybudzenia do jego aktywacji. Pozwala to zegarowi uruchomić się ponownie i ustabilizować po wcześniejszym zatrzymaniu. Okres wybudzania definiują te same bity bezpiecznikowe CKSEL, które definiują okres upływu czasu resetu, co opisano w podrozdziale "Źródła zegarowe".

Na początek:  podrozdziału   strony 

Tryb oszczędzania energii (ang. Power-save Mode)

Gdy bity SM2...0 zostaną zapisane wartością 011, instrukcja SLEEP wprowadzi mikrokontroler w tryb oszczędzania energii (ang. Power-save Mode). Tryb ten jest identyczny z trybem wyłączenia z jednym wyjątkiem:

Jeśli timer/licznik 2 jest taktowany asynchronicznie, tj. jest ustawiony bit AS2 bit rejestrze ASSR, to timer/licznik 2 będzie pracował podczas uśpienia. Mikrokontroler może wybudzić się albo przy przepełnieniu timera, albo przy zdarzeniu Output Compare z timera/licznika 2, jeśli odpowiednie bity uaktywnienia przerwania z timera/licznika 2 zostały ustawione w rejestrze TIMSK oraz ustawiony jest bit globalnego włączania przerwań I w rejestrze stanu SREG.

Jeśli timer/licznik 2 NIE jest taktowany asynchronicznie, zaleca się tryb wyłączenia zasilania zamiast trybu oszczędzania energii, ponieważ zawartość rejestrów w asynchronicznym timerze powinna być traktowana jako niezdefiniowana po wybudzeniu z trybu oszczędzania energii, jeśli AS2 ma stan 0.

Ten tryb uśpienia zasadniczo zatrzymuje wszystkie zegary z wyjątkiem clkASY, pozwalając na pracę jedynie modułom asynchronicznym, łącznie z timerem/licznikiem 2, jeśli jest on taktowany asynchronicznie.

Timer/licznik 2 może być taktowany zarówno synchronicznie jak i asynchronicznie w trybie oszczędzania energii (ang. Power-save mode). Jeśli timer/licznik 2 nie używa zegara asynchronicznego, to oscylator timera/licznika jest zatrzymywany podczas uśpienia. Jeśli timer/licznik 2 nie używa zegara synchronicznego, to to źródło zegarowe jest wyłączane podczas uśpienia. Zauważ, iż nawet jeśli zegar synchroniczny pracuje podczas trybu oszczędzania energii, to to źródło zegarowe jest dostępne tylko dla timera/licznika 2.

Na początek:  podrozdziału   strony 

Tryb oczekiwania w gotowości (ang. Standby Mode)

Gdy bity SM2:0 mają wartość 110 i została wybrana opcja zegarowa zewnętrznego kryształu kwarcu/rezonatora, to instrukcja SLEEP wprowadzi mikrokontroler w tryb gotowości (ang. Standby Mode). Tryb ten jest identyczny z trybem wyłączenia zasilania z tym wyjątkiem, iż oscylator pracuje. Z trybu gotowości mikrokontroler wybudza się w ciągu do sześciu taktów zegara.
Na początek:  podrozdziału   strony 

Rozszerzony tryb oczekiwania w gotowości (ang. Extended Standby Mode)

Gdy bity SM2:0 zostaną ustawione w stan 111 oraz będzie wybrana opcja zegarowa zewnętrznego kwarcu/rezonatora, to instrukcja SLEEP wprowadzi mikrokontroler w rozszerzony tryb gotowości (ang. Extended Standby Mode). Tryb ten jest identyczny z trybem oszczędzania energii z wyjątkiem pozostawienia oscylatora w stanie pracy. Z rozszerzonego trybu pracy mikrokontroler wybudza się w sześciu taktach zegara.
Na początek:  podrozdziału   strony 

Rejestr redukcji zasilania

Rejestr redukcji zasilania (ang. Power Reduction Register, PRR), udostępnia metody zatrzymywania zegara dla poszczególnych modułów peryferyjnych w celu zmniejszenia poboru prądu przez mikrokontroler (jest to istotne przy zasilaniu bateryjnym). Bieżący stan modułu peryferyjnego zostaje zamrożony, a jego rejestrów we/wy nie można odczytać lub zapisać. Zasoby używane przez moduł po zatrzymaniu zegara zostają zajęte, stąd moduł peryferyjny w większości przypadków należy wyłączyć przed zatrzymaniem jego zegara. Wybudzenie modułu, co wykonuje się przez wyzerowanie bitu w rejestrze PRR, umieszcza go w tym samym stanie, co przed wyłączeniem.

Wyłączanie modułów można wykorzystać w trybach bezczynnym i aktywnym do znacznego obniżenia poboru energii. We wszystkich pozostałych trybach uśpienia zegar modułów jest już zatrzymywany.

Na początek:  podrozdziału   strony 

Minimalizacja poboru prądu

Istnieje kilka zagadnień do rozważenia przy próbach minimalizowania poboru prądu w systemie zarządzanym przez mikrokontroler AVR. Ogólnie należy stosować tryby uśpienia tak często, jak jest to możliwe, co powoduje wyłączanie niepotrzebnych modułów we/wy. Wszystkie zbędne funkcje powinny być wyłączane. W szczególności dotyczy to poniższych modułów:

Przetwornik analogowo/cyfrowy

Jeśli jest uaktywniony, przetwornik A/C będzie pracował w trybach uśpienia. Aby zaoszczędzić energię, należy go wyłączyć przed wejściem w dowolny tryb uśpienia. Gdy przetwornik A/C został wyłączony i włączony ponownie, to następna konwersja będzie konwersją rozszerzoną. Działanie przetwornika jest opisane w rozdziale "Przetwornik analogowo/cyfrowy".

Komparator analogowy

Przy wejściu w tryb bezczynności (ang. Idle mode), komparator analogowy powinien zostać wyłączony, jeśli się z niego nie korzysta. Przy wejściu w tryb redukcji zakłóceń dla przetwornika A/C (ang. ADC Noise Reduction mode), komparator powinien zawsze być wyłączany. W pozostałych trybach uśpienia komparator analogowy jest wyłączany automatycznie. Jednakże, jeśli komparator analogowy został ustawiony na wykorzystywanie jako wejścia wewnętrznego napięcia odniesienia, to należy go wyłączać we wszystkich trybach uśpienia. W przeciwnym razie układ wewnętrznego napięcia odniesienia będzie uaktywniony bez względu na tryb uśpienia. Opis ustawień znajdziesz w rozdziale "Komparator analogowy".

Detektor spadku napięcia zasilania

Jeśli w aplikacji nie jest potrzebny moduł wykrywania spadku napięcia zasilającego (ang. Brown-out Detector), to można go wyłączyć. Jeśli moduł BOD jest uaktywniony przez bit bezpiecznikowy BODEN, to będzie on aktywny we wszystkich trybach uśpienia, a stąd zawsze będzie pobierał prąd. W głębszych trybach uśpienia będzie się to znacząco przyczyniać do całkowitego poboru energii przez mikrokontroler. Szczegóły konfiguracji modułu BOD znajdziesz w podrozdziale "Wykrywanie spadku napięcia".

Wewnętrzne napięcie odniesienia

Moduł wewnętrznego napięcia odniesienia zostanie uaktywniony w razie wykorzystywania przez detektor spadku napięcia zasilającego, komparator analogowy lub przetwornik A/C. Jeśli moduły te zostały wyłączone, jak opisano powyżej, to układ wewnętrznego napięcia odniesienia będzie wyłączony i nie będzie zużywał energii. Gdy zostanie ponownie włączony, program użytkownika musi odczekać pewien czas, zanim będzie mógł z niego skorzystać. Jeśli układ ten pracuje w trybie uśpienia, to z jego wyjścia można skorzystać natychmiast po wybudzeniu. Czasy uruchamiania są opisane w rozdziale "Wewnętrzne napięcie odniesienia".

Licznik zegarowy

Jeśli timer licznika zegarowego (ang. Watchdog Timer) nie jest potrzebny w aplikacji, to moduł ten powinien zostać wyłączony. Jeśli licznik zegarowy jest włączony, to będzie pracował we wszystkich trybach uśpienia i zawsze będzie zużywał energię.  W głębszych trybach uśpienia będzie się to znacząco przyczyniać do całkowitego poboru energii przez mikrokontroler. Szczegóły konfiguracji licznika zegarowego znajdziesz w rozdziale "Timer licznika zegarowego".

Końcówki portu

Przy wejściu w tryb uśpienia wszystkie końcówki portu powinny być tak skonfigurowane, aby zużywać minimalną energię. Najważniejszą rzeczą będzie zapewnienie, iż żadna z końcówek nie zasila obciążenia oporowego. W trybach uśpienia z wyłączonymi oboma zegarami we/wy (clkI/O) oraz przetwornika A/C (clkADC) bufory wejściowe mikrokontrolera są wyłączone. Zapewnia to, iż nie jest zużywana energia przez układy logiczne wejść, gdy nie są one potrzebne. W niektórych przypadkach układy te są potrzebne do wykrywania warunków wybudzenia, a wtedy będą włączone. Jeśli bufor wejścia jest włączony, a sygnał wejściowy zmienia się lub sygnał analogowy posiada poziom bliski Vcc/2, to bufor wejścia będzie zużywał nadmierną energię. Przy końcówkach analogowych cyfrowe bufory wejścia powinny zawsze być wyłączane. Zobacz do rozdziału "Porty we/wy".

Wewnętrzny system debugowania

Jeśli został uaktywniony wewnętrzny system debugowania przez bit bezpiecznikowy DWEN, a układ mikrokontrolera wszedł w tryb uśpienia, to główne źródło zegarowe pozostaje włączone i stąd zawsze pobiera prąd. W głębszych trybach uśpienia przyczynia się to znacząco do całkowitego poboru prądu.

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  
0x33 (0x53) SM2 SM1 SM0 SE 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ą nieużywane w ATmega48A/PA/88A/PA/168A/PA/328/P i zawsze przy odczycie mają wartość zero.

Bity [3:1] – SM[2:0]: Sleep Mode Select Bits 2, 1, and 0 – Bity wyboru trybu uśpienia

Te bity wybierają jeden z sześciu dostępnych trybów uśpienia, co pokazuje poniższa tabelka.

SM2 SM1 SM0 Tryb uśpienia
0 0 0 Bezczynność
0 0 1 Redukcja zakłóceń dla przetwornika A/C
0 1 0 Wyłączenie zasilania
0 1 1 Oszczędność energii
1 0 0 Zarezerwowane
1 0 1 Zarezerwowane
1 1 0 Oczekiwanie w gotowości(1)
1 1 1 Rozszerzone oczekiwanie w gotowości(1)
Uwaga: 1. Tryb oczekiwania jest zalecany tylko przy taktowaniu mikrokontrolera kwarcem lub rezonatorem.

Bit 0 – SE: Sleep Enable – Włączenie uśpienia

Bit SE należy zapisać logiczną jedynką, aby wymusić wejście mikrokontrolera we wybrany tryb uśpienia, gdy wykona instrukcję SLEEP. Aby zapobiec wejściu mikroprocesora w uśpienie, o ile nie jest to intencją programisty, zaleca się zapisać bit włączenia trybu uśpienia (SE) jedynką tuż przed wykonaniem instrukcji SLEEP oraz wyzerować go natychmiast po wybudzeniu.


MCUCR – MCU Control Register – Rejestr sterujący mikrokontrolera

Bit 7 6 5 4 3 2 1 0  
0x35 (0x55) BODS(1) BODSE(1) PUD IVSEL IVCE MCUCR
Zapis/Odczyt O Z/O Z/O Z/O O O Z/O Z/O  
Wartość początkowa 0 0 0 0 0 0 0 0  
Uwaga: 1. Bity BODS i BODSE są dostępne tylko w mikrokontrolerach picoPower® ATmega48PA/88PA/168PA/328P

Bit 6 – BODS: BOD Sleep – Wyłączenie modułu BOD w czasie uśpienia

Bit BODS należy zapisać logiczną jedynką w celu wyłączenia modułu BOD (ang. Brown-Out Detector – detektor spadku napięcia zasilającego) podczas uśpienia mikrokontrolera. Zapis do bitu BODS kontrolowany jest czasową sekwencją oraz bitem uaktywniającym BODSE w rejestrze MCUCR.  Aby wyłączyć moduł BOD w odpowiednich trybach uśpienia, oba bity BODS i BODSE muszą być najpierw ustawione na 1, a następnie należy ustawić bit BODS na 1, a BODSE na 0 w ciągu czterech następnych taktów zegarowych.

Bit BODS jest aktywny przez trzy takty zegara po ustawieniu go. Instrukcja usypiania musi być wykonana, gdy BODS jest aktywny, aby moduł BOD został wyłączony w bieżącym trybie uśpienia. Po trzech taktach zegara bit BODS zostaje automatycznie wyzerowany.

Bit 5 – BODSE: BOD Sleep Enable – Uaktywnienie zapisu do BODS

Bit BODS umożliwia ustawienie bitu kontrolnego BODS, jak wyjaśniono powyżej. Wyłączenie modułu BOD jest kontrolowane przez sekwencję czasową.


PRR – Power Reduction Register – Rejestr zmniejszania poboru energii

Bit 7 6 5 4 3 2 1 0  
(0x64) PRTWI PRTIM2 PRTIM0 PRTIM1 PRSPI PRUSART0 PRADC PRR
Zapis/Odczyt Z/O Z/O Z/O O Z/O Z/O Z/O Z/O  
Wartość początkowa 0 0 0 0 0 0 0 0  

Bit 7 – PRTWI: Power Reduction TWI – Zmniejszenie poboru energii modułu TWI

Zapisanie logicznej jedynki do tego bitu wyłącza TWI (ang. Two Wire Interface – interfejs dwuprzewodowy) przez zatrzymanie zegara dla tego modułu. Przy ponownym wybudzeniu TWI należy dokonać reinicjalizacji, aby zapewnić jego poprawne działanie.

Bit 6 – PRTIM2: Power Reduction Timer/Counter2 – Zmniejszenie poboru prądu timera/licznika 2

Zapisanie logicznej jedynki do tego bitu wyłącza moduł timera/licznika 2 w trybie synchronicznym (bit AS2 ma stan 0). Gdy timer/licznik 2 zostaje włączony, będzie on kontynuował swoją prace jak przed wyłączeniem.

Bit 5 – PRTIM0: Power Reduction Timer/Counter0 – Zmniejszenie poboru prądu timera/licznika 0

Zapisanie logicznej jedynki do tego bitu wyłącza moduł timera/licznika 0. Gdy timer/licznik 0 zostaje włączony, będzie on kontynuował swoją prace jak przed wyłączeniem.

Bit 4 – Zarezerwowany

Ten bit jest zarezerwowany w ATmega48A/PA/88A/PA/168A/PA/328/P i zawsze daje odczyt zero.

Bit 3 – PRTIM1: Power Reduction Timer/Counter1 – Zmniejszenie poboru prądu timera/licznika 1

Zapisanie logicznej jedynki do tego bitu wyłącza moduł timera/licznika 1. Gdy timer/licznik 1 zostaje włączony, będzie on kontynuował swoją prace jak przed wyłączeniem.

Bit 2 – PRSPI: Power Reduction Serial Peripheral Interface – Zmniejszenie poboru prądu interfejsu SPI

Jeśli jest używany debugWIRE wbudowanego systemu uruchomieniowego (ang. On-chip Debug System), ten bit nie powinien być ustawiany na 1. Zapisanie w nim logicznej jedynki wyłącza interfejs SPI przez zatrzymanie jego zegara. Przy ponownym wybudzeniu SPI moduł ten powinien zostać zainicjowany w celu zapewnienia poprawnej pracy.

Bit 1 – PRUSART0: Power Reduction USART0 – Zmniejszenie poboru prądu USART 0

Zapisanie logicznej jedynki do tego bitu wyłącza moduł USART przez zatrzymanie jego zegara. Przy ponownym wybudzeniu USART moduł ten powinien zostać zainicjowany w celu zapewnienia poprawnej pracy.

Bit 0 – PRADC: Power Reduction ADC – Zmniejszenie poboru prądu przetwornika A/C

Zapisanie logicznej jedynki do tego bitu wyłącza przetwornik A/C. Przed wyłączeniem przetwornik powinien zostać dezaktywowany. Gdy przetwornik A/C jest wyłączony, komparator analogowy nie może korzystać z jego multipleksera wejść analogowych.

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
©2021 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.