Serwis Edukacyjny w I-LO w Tarnowie Materiały dla uczniów liceum |
Wyjście Spis treści Wstecz Dalej Autor artykułu: mgr Jerzy Wałaszek |
©2024 mgr Jerzy Wałaszek |
https://www.microchip.com/about-us/legal-information/copyright-usage-guidelines
Zegar mikroprocesora jest kierowany do elementów systemu związanych z działaniem rdzenia AVR. Przykładami takich modułów są: zestaw rejestrów ogólnego przeznaczenia, rejestr stanu i pamięć danych przechowująca wskaźnik stosu. Zatrzymanie zegara mikroprocesora uniemożliwia rdzeniowi wykonywanie operacji ogólnych oraz obliczeń.
Zegar we/wy używany jest przez większość modułów we/wy, jak timery/liczniki, SPI i USART. Jest on również używany przez moduł przerwań zewnętrznych, lecz zwróć uwagę, iż niektóre przerwania zewnętrzne są wykrywane przez obwody asynchroniczne, co pozwala wykrywać te przerwania nawet przy zatrzymanym zegarze we/wy. Również zauważ, iż rozpoznawanie adresu w module TWI jest wykonywane asynchronicznie, gdy zegar clkI/O został zatrzymany, co umożliwia odbiór adresów TWI we wszystkich trybach uśpienia.
Zegar FLASH steruje działaniem interfejsu pamięci FLASH. Zegar FLASH jest zwykle aktywny równocześnie z zegarem mikroprocesora.
Zegar asynchronicznego timera pozwala asynchronicznemu timerowi/licznikowi odbierać taktowanie bezpośrednio z zewnętrznego zegara kwarcowego 32kHz. Dedykowana domena zegarowa umożliwia używanie tego timera/licznika w charakterze licznika zegarowego czasu rzeczywistego, nawet gdy mikrokontroler znajduje się w trybie uśpienia.
Przetwornik Analogowo/Cyfrowy wyposażony został w dedykowany zegar. Pozwala to zatrzymać zegar mikroprocesora i zegar we/wy w celu zmniejszenia szumów generowanych przez obwody cyfrowe. W rezultacie otrzymuje się dokładniejsze wyniki przetwarzania analogowo/cyfrowego.
Opcja taktowania mikrokontrolera | CKSEL3...0 |
Zewnętrzny kwarc/rezonator ceramiczny | 1111 - 1010 |
Zewnętrzny kwarc niskiej częstotliwości | 1001 |
Zewnętrzny oscylator RC | 1000 - 0101 |
Wewnętrzny kalibrowany oscylator RC | 0100 - 0001 |
Zegar zewnętrzny | 0000 |
Uwaga: 1. Dla wszystkich bitów bezpiecznikowych "0" oznacza stan zaprogramowania, a "1" stan niezaprogramowania.
W następnych podrozdziałach są opisane różne wybory dla każdej opcji zegarowej. Gdy mikroprocesor wybudza się z trybu wyłączenia lub z trybu oszczędzania energii, wybrane źródło zegarowe jest wykorzystywane do odmierzania czasu uruchomienia, zapewniając stabilną pracę oscylatora przed rozpoczęciem wykonywania instrukcji. Gdy mikroprocesor wznawia pracę po resecie, wprowadzane jest dodatkowe opóźnienie, które pozwala napięciu zasilającemu osiągnąć stabilny poziom przed rozpoczęciem normalnego działania. Do odmierzania tej rzeczywistej części czasu startowego wykorzystywany jest oscylator licznika zegarowego. Liczba cykli tego oscylatora używana dla każdego z okresów jest pokazana w tabelce poniżej. Częstotliwość oscylatora licznika zegarowego zależy od napięcia, co pokazano w rozdziale "Typowe Parametry – TA = -40°C do 85°C".
Typowy okres zliczania (VCC = 5,0 V) | Typowy okres zliczania (VCC = 3,0 V) | Liczba taktów |
4,1ms | 4,3ms | 4K (4.096) |
65ms | 69ms | 64K (65.536) |
Można użyć albo kryształu kwarcu, albo ceramicznego rezonatora. Bit bezpiecznikowy CKOPT wybiera pomiędzy dwoma różnymi trybami wzmacniacza oscylatora. Gdy jest zaprogramowany, to sygnał wyjściowy będzie oscylował pomiędzy 0V a VCC. Tryb ten jest odpowiedni do pracy w bardzo zakłóconym środowisku lub gdy wyjście z XTAL2 napędza drugi bufor zegarowy. Ten tryb posiada szeroki zakres częstotliwości. Gdy bit bezpiecznikowy CKOPT jest niezaprogramowany, to wyjście oscylatora ma mniejszą amplitudę przebiegu, co znacząco zmniejsza pobór prądu. Tryb posiada ograniczony zakres częstotliwości i nie można go używać do napędzania innych buforów zegarowych.
Dla rezonatorów maksymalna częstotliwość wynosi 8MHz przy niezaprogramowanym bicie bezpiecznikowym CKOPT i 16MHz przy zaprogramowanym tym bicie. Kondensatory C1 i C2 powinny posiadać tę samą pojemność tak dla kwarców jak i dla rezonatorów. Optymalna pojemność tych kondensatorów zależna jest od użytego kwarcu lub rezonatora, ilości pojemności pasożytniczych oraz poziomu zakłóceń elektromagnetycznych środowiska. Pewne początkowe wskazówki doboru pojemności kondensatorów do użytku z kryształami kwarcu podaje tabelka poniżej. Dla rezonatorów ceramicznych należy stosować wartości podawane przez producenta.
Oscylator może pracować w trzech różnych trybach, z których każdy został zoptymalizowany dla określonego zakresu częstotliwości. Tryb pracy jest wybierany za pomocą bitów bezpiecznikowych CKSEL3...1 jak pokazuje poniższa tabelka:
CKOPT | CKSEL3:1 | Zakres częstotliwości (MHz) | Zalecane pojemności C1 i C2 (pF) dla kwarców |
1 | 101(1) | 0,4 - 0,9 | – |
1 | 110 | 0,9 - 3,0 | 12 - 22 |
1 | 111 | 3,0 - 8,0 | 12 - 22 |
0 | 101, 110, 111 | 1.0 – | 12 - 22 |
Uwaga: | 1. | Tej opcji nie należy stosować dla kwarców, tylko dla rezonatorów ceramicznych |
Bit bezpiecznikowy CKSEL0 wraz z SUT1...0 wybiera czasy uruchamiania mikrokontrolera, jak pokazuje tabelka poniżej.
CKSEL0 | SUT1:0 | Czas startu po trybach wyłączenia i oszczędzania | Dodatkowe opóźnienie od resetu (VCC = 5,0 V) | Zalecane użycie |
0 | 00 | 258 CK(1) | 4,1 ms | Rezonator ceramiczny, szybko narastające VCC |
0 | 01 | 258 CK(1) | 65 ms | Rezonator ceramiczny, wolno narastające VCC |
0 | 10 | 1K CK(2) | – | Rezonator ceramiczny, włączone BOD |
0 | 11 | 1K CK(2) | 4,1 ms | Rezonator ceramiczny, szybko narastające VCC |
1 | 00 | 1K CK(2) | 65 ms | Rezonator ceramiczny, wolno narastające VCC |
1 | 01 | 16K CK | – | Oscylator kwarcowy, włączone BOD |
1 | 10 | 16K CK | 4,1 ms | Oscylator kwarcowy, szybko narastające VCC |
1 | 11 | 16K CK | 65 ms | Oscylator kwarcowy, wolno narastające VCC |
Dobór właściwych kondensatorów C1 i C2 znajdziesz w materiałach technicznych producenta kwarcu.
Dla tego oscylatora czasy startowe są ustawiane bitami bezpiecznikowymi SUT wg poniższej tabelki:
SUT1:0 | Czas startu po trybach wyłączenia i oszczędzania | Dodatkowe opóźnienie od resetu (VCC = 5,0 V) | Zalecane użycie |
00 | 1K CK(1) | 4,1 ms | Szybko narastające VCC lub włączone BOD |
01 | 1K CK(1) | 65 ms | Wolno narastające VCC |
10 | 32K CK | 65 ms | Stabilna częstotliwość przy starcie |
11 | Zarezerwowane |
Uwaga: | 1. | Te opcje można stosować, jeśli stabilność częstotliwości przy starcie nie jest istotna. |
Kondensator C powinien posiadać pojemność co najmniej 22 pF. Przez zaprogramowanie bitu bezpiecznikowego CKOPT użytkownik może uaktywnić wewnętrzny kondensator 36 pF pomiędzy końcówkami XTAL1 i GND, co usunie potrzebę stosowania kondensatora zewnętrznego.
Oscylator może pracować w czterech różnych trybach, z których każdy został zoptymalizowany dla określonego zakresu częstotliwości. Tryb pracy wybierany jest przez bity bezpiecznikowe CKSEL3...0 wg poniższej tabelki.
CKSEL3...0 | Zakres częstotliwości (MHz) |
0101 | 0,1 - 0,9 |
0110 | 0,9 - 3,0 |
0111 | 3,0 - 8,0 |
1000 | 8,0 - 12.0 |
Gdy ten oscylator zostanie wybrany, czasy startowe są określane przez bity bezpiecznikowe SUT wg poniższej tabelki.
SUT1...0 | Czas startu po trybach wyłączenia i oszczędzania | Dodatkowe opóźnienie od resetu (VCC = 5,0 V) | Zalecane użycie |
00 | 18 CK | – | BOD włączone |
01 | 18 CK | 4,1 ms | Szybko narastające napięcie zasilania |
10 | 18 CK | 65 ms | Wolno narastające napięcie zasilania |
11 | 6CK(1) | 4,1 ms | Szybko narastające napięcie zasilania lub włączone BOD |
Uwaga: | 1. | Tej opcji nie należy stosować, gdy mikrokontroler nie pracuje w pobliżu swojej częstotliwości maksymalnej |
CKSEL3...0 | Częstotliwość znamionowa (MHz) |
0001(1) | 1,0 |
0010 | 2,0 |
0011 | 4,0 |
0100 | 8,0 |
Uwaga: | 1. | Mikrokontroler jest sprzedawany z ustawioną tą opcją. |
Gdy jest wybrany ten oscylator, to czasy uruchamiania są określane przez bity
bezpiecznikowe SUT pokazane w tabelce poniżej. Końcówki
SUT1...0 | Czas startu po trybach wyłączenia i oszczędzania | Dodatkowe opóźnienie od resetu (VCC = 5,0 V) | Zalecane użycie |
00 | 6 CK | – | BOD włączone |
01 | 6 CK | 4,1 ms | Szybko narastające napięcie zasilania |
10(1) | 6 CK | 65 ms | Wolno narastające napięcie zasilania |
11 | Zarezerwowane |
Uwaga: | 1. | Mikrokontroler jest sprzedawany z ustawioną tą opcją. |
Gdy jest wybrane to źródło zegarowe, czasy startu są określane przez bity bezpiecznikowe SUT wg poniższej tabelki.
SUT1...0 | Czas startu po trybach wyłączenia i oszczędzania | Dodatkowe opóźnienie od resetu (VCC = 5,0 V) | Zalecane użycie |
00 | 6 CK | – | BOD włączone |
01 | 6 CK | 4,1 ms | Szybko narastające napięcie zasilania |
10 | 6 CK | 65 ms | Wolno narastające napięcie zasilania |
11 | Zarezerwowane |
Gdy stosuje się zegar zewnętrzny, wymagane jest unikanie nagłych zmian w stosowanej częstotliwości zegarowej w celu zapewnienie stabilnej pracy mikrokontrolera. Zmiana w częstotliwości większa niż 2% z jednego cyklu na drugi może prowadzić do nieokreślonego zachowania. Wymagane jest utrzymywanie mikrokontrolera w stanie resetu podczas takich zmian w częstotliwości zegarowej.
Uwaga: Oscylator timera/licznika używa tego samego rodzaju kwarcu co oscylator niskiej częstotliwości i wewnętrzne kondensatory posiadają tę samą pojemność znamionową 36 pF.
Rejestr XDIV używany jest do podziału częstotliwości zegara źródłowego przez liczbę z zakresu od 2 do 129. Funkcję tę można wykorzystywać do zmniejszania poboru energii, gdy wymagania na moc obliczeniową są niskie.
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x3C (0x5C) | XDIVEN | XDIV6 | XDIV5 | XDIV4 | XDIV3 | XDIV2 | XDIV1 | XDIV0 | XDIV |
Zapis/Odczyt | O/Z | Z/O | Z/O | Z/O | Z/O | Z/O | Z/O | Z/O | |
Wartość początkowa | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Gdy bit XDIVEN zostanie zapisany stanem 1, częstotliwość zegarowa mikroprocesora i wszystkich peryferiów (clkI/O, clkADC, clkCPU, clkFLASH) jest dzielona przez dzielnik określony ustawieniem bitów XDIV6 - XDIV0. Bit ten można zapisywać w czasie działania programu, aby zmieniać częstotliwość zegara do potrzeb aplikacji.
Bity te definiują dzielnik stosowany do podziału częstotliwości zegarowej, gdy zostaje ustawiony bit XDIVEN. Jeśli wartość tych bitów oznaczymy jako d, to następujący wzór definiuje częstotliwość wynikową mikroprocesora i peryferiów fCLK:
Wartość tych bitów można zmieniać tylko wtedy, gdy bit XDIVEN ma stan zero. Gdy bit XDIVEN jest zapisywany jedynką, to wartość wpisywana jednocześnie do bitów XDIV6:XDIV0 jest przyjmowana jako dzielnik. Gdy XDIVEN jest zapisywany zerem, to wartość wpisywana równolegle do XDIV6:XDIV0 jest odrzucana. Ponieważ dzielnik dzieli wejście głównego zegara dla mikrokontrolera, to prędkość wszystkich układów peryferyjnych zostanie zredukowana, gdy ten dzielnik zostanie użyty.
Uwaga: Gdy dzielony jest zegar systemowy, timer/licznik 0 może być używany tylko z zegarem asynchronicznym. Częstotliwość tego zegara asynchronicznego musi być niższa niż 1/4 częstotliwości skalowanego w dół źródła zegarowego. W przeciwnym razie przerwania mogą być tracone i dostęp do rejestrów timera/licznika 0 może się nie powieść.
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
(0x6F) | CAL7 | CAL6 | CAL5 | CAL4 | CAL3 | CAL2 | CAL1 | CAL0 | OSCCAL |
Zapis/Odczyt | O/Z | Z/O | Z/O | Z/O | Z/O | Z/O | Z/O | Z/O | |
Wartość początkowa | Wartość kalibracyjna specyficzna dla mikrokontrolera |
Rejestr OSCCAL jest niedostępny w trybie kompatybilności z ATmega103.
Zapis bajtu kalibracyjnego pod ten adres spowoduje dostrojenie wewnętrznego oscylatora w celu usunięcia różnic produkcyjnych z częstotliwości oscylatora. Podczas resetu wartość kalibracyjna dla 1 MHz przechowywana w starszym bajcie rzędu sygnatury (adres 0x00) jest automatycznie ładowana do rejestru OSCCAL. Jeśli wewnętrzny oscylator RC jest używany przy innych częstotliwościach, to wartość kalibracyjna musi zostać wpisana ręcznie. Jest to wykonywane przez odczytanie najpierw wiersza sygnatury przez programistę, a następnie zapisanie wartości kalibracyjnych we FLASH lub w EEPROM. Później wartość ta może być odczytywana przez program i ładowana do rejestru OSCCAL. Gdy OSCCAL ma zawartość zero, to zostaje wybrana najniższa dostępna częstotliwość. Zapis niezerowej wartości do tego rejestru zwiększy częstotliwość wewnętrznego oscylatora. Zapis 0xFF do tego rejestru daje najwyższą dostępną częstotliwość. Oscylator kalibrowany jest wykorzystywany przy odmierzaniu czasów dostępu do EEPROM i do FLASH. Jeśli w aplikacji zapisywana jest pamięć EEPROM lub FLASH, nie kalibruj powyżej 10% od częstotliwości znamionowej. W przeciwnym razie EEPROM lub FLASH mogą zawieść. Zauważ, iż zamiarem kalibracji jest ustawienie częstotliwości znamionowej na 1,0 MHz, 2,0 MHz, 4,0 MHz lub 8,0 MHz. Dostrojenie do innych wartości nie jest gwarantowane, co zaznaczono w poniższej tabelce.
Wartość OSCCAL | Minimalna częstotliwość jako procent częstotliwości znamionowej (%) | Maksymalna częstotliwość jako procent częstotliwości znamionowej (%) |
0x00 | 50 | 100 |
0x7F | 75 | 150 |
0xFF | 100 | 200 |
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:
Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.