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 "Parametry typowe mikrokontrolera ATmega32".
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) |
Mikrokontroler sprzedawany jest z bitami bezpiecznikowymi ustawionymi na: CKSEL = “0001” i SUT = “10”. Stąd standardowe ustawienie źródła zegarowego brzmi: wewnętrzny oscylator RC 1MHz z najdłuższym czasem uruchamiania. To standardowe ustawienie zapewnia. iż wszyscy użytkownicy będą mogli ustawić pożądane źródło zegara za pomocą programatora wbudowanego lub równoległego.
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ą. |
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x31 (0x51) | 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 |
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 |
Przez zaprogramowanie bitu bezpiecznikowego CKOPT użytkownik może uaktywnić wewnętrzne kondensatory 36pF pomiędzy końcówkami XTAL1 i GND oraz XTAL2 i GND.
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.
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.