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
Poniższy rysunek przedstawia główne systemy zegarowe i ich przydział w mikrokontrolerze ATtiny13. Nie wszystkie zegary muszą pracować jednocześnie w danym czasie. Aby zmniejszyć zużycie energii, zegary nieużywanych modułów można zatrzymać przez użycie różnych trybów uśpienia.
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, takich jak timer/licznik. Zegar we/wy używany jest również przez moduł przerwania zewnętrznego, jednakże zwróć uwagę, iż niektóre przerwania zewnętrzne są wykrywane przez logikę asynchroniczną, co pozwala na ich wykrywanie nawet przy zatrzymanym zegarze we/wy.
Zegar FLASH steruje działaniem interfejsu pamięci FLASH. Zegar FLASH jest zwykle aktywny równocześnie z zegarem mikroprocesora.
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 zegarowa | CKSEL1:0(1) |
Zegar zewnętrzny | 00 |
Wewnętrzny oscylator kalibrowany 4,8/9.6 MHz | 01, 10 |
Wewnętrzny oscylator 128 kHz | 11 |
Uwaga: 1. Dla wszystkich bitów bezpiecznikowych "1" oznacza stan niezaprogramowany, "0" oznacza stan zaprogramowany.
W kolejnych podrozdziałach opisane są różne warianty dla każdej z opcji zegarowych. Gdy mikroprocesor wybudza się z trybu wyłączenia zasilania lub trybu oszczędzania energii, to wybrane źródło zegarowe jest używane do odmierzania czasu startu, upewniając się o stabilnej pracy oscylatora przed rozpoczęciem wykonywania instrukcji. Gdy mikroprocesor startuje po resecie, pojawia się dodatkowe opóźnienie, które pozwala napięciu zasilającemu osiągnąć stabilny poziom przed rozpoczęciem normalnego działania. Do odmierzania tej części czasu uruchamiania używany jest oscylator licznika zegarowego. Poniższa tabela pokazuje liczbę cykli tego oscylatora do przekroczenia okresu zliczania w liczniku zegarowym:
Okres licznika zegarowego | Liczba cykli |
4 ms | 512 |
64 ms | 8K (8192) |
Aby uruchomić mikrokontroler na zegarze zewnętrznym, końcówka CLKI powinna być sterowana jak na poniższym obrazku. W tym przypadku bity bezpiecznikowe CKSEL0:1 powinny zostać zaprogramowane na "00".
Gdy to źródło zegara zostało wybrane, czasy uruchamiania są określane przez bity bezpiecznikowe SUT wg poniższej tabeli:
SUT1:0 | Czas uruchamiania po
wybudzeniu z trybu wyłączenia/oszczędzania |
Dodatkowe opóźnienie z resetu |
Zalecane zastosowanie |
00 | 6 CK | 14 CK | Włączone BOD |
01 | 6 CK | 14 CK + 4 ms | Szybko narastające zasilanie |
10 | 6 CK | 14 CK + 64 ms | Wolno narastające zasilanie |
11 | Zarezerwowane |
Gdy stosowany jest zegar zewnętrzny, wymaga się unikania nagłych zmian w stosowanej częstotliwości zegara w celu zapewnienia stabilnego działania mikrokontrolera. Zmiana w częstotliwości większa niż 2% z jednego cyklu do następnego może prowadzić do nieprzewidywalnego zachowania. Wymaga się, aby podczas takich zmian w częstotliwości zegarowej zapewnić utrzymywanie mikrokontrolera w stanie resetu.
Zwróć uwagę, iż preskaler zegara systemowego może być używany do implementacji w trakcie pracy zmian częstotliwości wewnętrznego zegara przy jednoczesnym zapewnieniu stabilnego działania.
Kalibrowany oscylator wewnętrzny dostarcza źródła zegarowego o częstotliwości 4,8 lub 9,6 MHz. Częstotliwość ta osiąga swoją wartość nominalną przy napięciu 3V i w temperaturze 25°C. Jeśli częstotliwość wykracza poza specyfikację dla mikrokontrolera (zależy to od VCC), to należy zaprogramować bit bezpiecznikowy CKDIV8, aby wewnętrzny zegar był dzielony przez 8 podczas uruchamiania.
Wybór wewnętrznego oscylatora na zegar systemu jest dokonywany poprzez zaprogramowanie bitów bezpiecznikowych CKSEL, jak pokazano w tabeli poniżej. Jeśli zostanie wybrany, będzie pracował bez żadnych elementów zewnętrznych.
Tryby pracy kalibrowanego oscylatora wewnętrznego
CKSEL1:0 | Częstotliwość nominalna |
10(1) | 9,6 MHz |
01 | 4,8 MHz |
Uwaga: 1. Mikrokontroler jest sprzedawany z ustawioną tą opcją.
Podczas resetu do rejestru OSCCAL zostaje sprzętowo załadowana informacja kalibracyjna, co powoduje automatyczne skalibrowanie oscylatora. Istnieją osobne bajty kalibracyjne dla częstotliwości 4,8 i 9,6 MHz, lecz tylko jeden z nich jest automatycznie ładowany podczas resetu. Jest tak dlatego, iż jedyną różnicą pomiędzy trybem 4,8 MHz a 9,6 MHz jest ustawienie wewnętrznego dzielnika zegara.
Poprzez zmianę zawartości rejestru OSCCAL możliwe jest otrzymanie większej dokładności kalibracji niż przy używaniu kalibracji fabrycznej.
Gdy ten oscylator jest używany jako zegar układu, oscylator licznika zegarowego wciąż będzie stosowany dla tego licznika oraz do odmierzania opóźnień przy resecie.
Po wyborze tego oscylatora, czasy uruchamiania są określane przez bity bezpiecznikowe SUT, jak pokazano w poniższej tabeli:
SUT1:0 | Czas uruchamiania po
wybudzeniu z trybu wyłączenia/oszczędzania |
Dodatkowe opóźnienie z resetu (VCC = 5V) |
Zalecane zastosowanie |
00 | 6 CK | 14 CK | Włączone BOD |
01 | 6 CK | 14 CK + 4 ms | Szybko narastające zasilanie |
10(1) | 6 CK | 14 CK + 64 ms | Wolno narastające zasilanie |
11 | Zarezerwowane |
Uwaga: 1. Mikrokontroler jest sprzedawany z ustawioną tą opcją.
Jest to oscylator o niskim poborze energii, który dostarcza zegara 128 kHz. Częstotliwość zależy od napięcia zasilania, temperatury oraz egzemplarza mikrokontrolera Zegar ten można wybrać na zegar systemowy przez zaprogramowanie bitów bezpiecznikowych CKSEL na “11”.
Gdy zostanie wybrane to źródło zegarowe, czasy uruchamiania są określane przez bity bezpiecznikowe SUT, jak pokazano w poniższej tabeli:
SUT1:0 | Czas uruchamiania po
wybudzeniu z trybu wyłączenia/oszczędzania |
Dodatkowe opóźnienie z resetu |
Zalecane zastosowanie |
00 | 6 CK | 14 CK | Włączone BOD |
01 | 6 CK | 14 CK + 4 ms | Szybko narastające zasilanie |
10 | 6 CK | 14 CK + 64 ms | Wolno narastające zasilanie |
11 | Zarezerwowane |
Mikrokontroler jest sprzedawany z zaprogramowanymi bitami bezpiecznikowymi: CKSEL = “10”, SUT = “10”, i CKDIV8 = "0". Dlatego standardowym ustawieniem zegara jest wewnętrzny oscylator RC pracujący z częstotliwością 9,6 MHz z długim czasem uruchamiania i wewnętrznym podziałem częstotliwości przez 8. Takie ustawienie standardowe zapewnia, iż wszyscy użytkownicy będą mogli wybrać pożądane źródło zegarowe za pomocą programatora ISP lub HVP.
Przy przełączaniu ustawień w preskalerze, zapewnia on, iż nie pojawią się żadne zakłócenia w systemie zegarowym, a żadne z pośrednich częstotliwości nie będzie wyższa ani od poprzedniej częstotliwości, ani od częstotliwości związanej z nowymi ustawieniami.
Licznik szeregowy, z którego zbudowany jest preskaler, pracuje przy częstotliwości niedzielonego zegara, która może być wyższa od częstotliwości zegarowej mikroprocesora. Stąd nie jest możliwe określenie stanu preskalera – nawet, gdyby dało się go odczytać, a ścisłego czasu, który zajmuje przełączenie z jednego podziału zegara na inny, nie da dokładnie przewidzieć. Od czasu zapisu wartości podziału w rejestrze preskalera CLKPR upływa od T1 + T2 do T1 + 2*T2 czasu, zanim nowa częstotliwość stanie się aktywna. W tym interwale czasowym tworzone są 2 aktywne zbocza w sygnale zegarowym. Tutaj T1 jest okresem poprzedniego zegara, a T2 jest okresem odpowiadającym nowym ustawieniom preskalera.
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x31 | - | CAL6 | CAL5 | CAL4 | CAL3 | CAL2 | CAL1 | CAL0 | OSCCAL |
Zapis/Odczyt | O | Z/O | Z/O | Z/O | Z/O | Z/O | Z/O | Z/O | |
Wartość początkowa | 0 | Wartość kalibracyjna specyficzna dla mikrokontrolera |
Ten bit w ATtiny13 jest zarezerwowany i przy odczycie daje zawsze wartość 0.
Zapis bajtu kalibracyjnego pod ten adres wyreguluje wewnętrzny oscylator w celu usunięcia odchyłek generowanej częstotliwości spowodowanych rozrzutem parametrów przy produkcji. Jest to wykonywane automatycznie przy resetowaniu układu. Gdy rejestr OSCCAL ma wartość 0, to zostaje wybrana najniższa dostępna częstotliwość. Zapis niezerowej wartości do tego rejestru zwiększy częstotliwość wewnętrznego oscylatora. Zapis 0x7F da najwyższą możliwą częstotliwość.
Kalibrowany oscylator jest wykorzystywany przy odmierzaniu czasów dostępu do pamięci EEPROM oraz FLASH. Jeśli wykonywane są zapisy do EEPROM lub FLASH, nie kalibruj częstotliwości ponad 10% wartości nominalnej. W przeciwnym razie zapis do EEPROM lub FLASH może się nie powieść. Zwróć uwagę, iż oscylator ma w zamyśle być kalibrowany na częstotliwość 9,6 lub 4,8 MHz. Dostrojenie do innych częstotliwości nie jest gwarantowane, jak pokazuje tabela poniżej.
Aby zapewnić stabilne działanie mikrokontrolera, wartość kalibracyjna powinna być zmieniana małymi krokami. Odchyłka ponad 2% w częstotliwości od jednego cyklu do następnego może doprowadzić do nieprzewidywalnego zachowania. Zmiany w OSCCAL nie powinny przekraczać 0x20 dla każdej kalibracji. Wymaga się, aby mikrokontroler był utrzymywany w stanie resetu podczas takich zmian w częstotliwości zegarowej.
Zakres częstotliwości wewnętrznego oscylatora
Wartość OSCCAL |
Najniższa
częstotliwość w odniesieniu do częstotliwości nominalnej |
Najwyższa
częstotliwość w odniesieniu do częstotliwości nominalnej |
0x00 | 50% | 100% |
0x3F | 75% | 150% |
0x7F | 100% | 200% |
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x26 | CLKPCE | - | - | - | CLKPS3 | CLKPS2 | CLKPS1 | CLKPS0 | CLKPR |
Zapis/Odczyt | Z/O | O | O | O | Z/O | Z/O | Z/O | Z/O | |
Wartość początkowa | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Do bitu CLKPCE należy wpisać logiczną jedynkę, aby mieć możliwość zmian bitów CLKPS. Bit CLKPCE jest uaktualniany tylko wtedy, gdy w tym samym czasie do pozostałych bitów w rejestrze CLKPR są wpisywane same zera. CLKPCE jest zerowany sprzętowo po czterech cyklach od momentu zapisu lub przy zapisie bitów CLKPS. Nadpisanie bitu CLKPCE w tym przedziale czasu ani nie wydłuża tego przedziału, ani nie zeruje bitu CLKPCE.
Te bity w ATtiny są zarezerwowane i przy odczycie dają zawsze wartość 0.
Te bity definiują współczynnik podziału pomiędzy wybranym źródłem zegarowym a wewnętrznym zegarem systemowym. Bity można zapisywać w trakcie pracy mikrokontrolera, aby zmieniać częstotliwość zegara w celu dostosowania jej do wymagań aplikacji. Ponieważ dzielnik ten dzieli główne źródło zegarowe w mikrokontrolerze, to szybkość wszystkich synchronicznych układów peryferyjnych dostosowuje się do użytego współczynnika podziału. Współczynniki te są podane w tabeli poniżej.
Aby uniknąć niezamierzonych zmian częstotliwości zegarowej, należy zastosować specjalną procedurę przy zmianie bitów CLKPS:
Przy zmianie ustawień preskalera przerwania muszą być wyłączone, aby upewnić się, iż procedura zapisu do rejestru CLKPR nie zostanie przerwana w przeznaczonym dla niej przedziale czasu. Aplikacja musi zapewnić, że zostanie wybrany wystarczający współczynnik, jeśli wybrane źródło zegarowe posiada wyższą częstotliwość niż maksymalna dla mikrokontrolera w bieżących warunkach pracy. Mikrokontroler jest sprzedawany z zaprogramowanym bitem bezpiecznikowym CKDIV8.
Ustawienia preskalera zegara systemowego
CLKPS3 | CLKPS2 | CLKPS1 | CLKPS0 | Współczynnik podziału |
0 | 0 | 0 | 0 | 1 |
0 | 0 | 0 | 1 | 2 |
0 | 0 | 1 | 0 | 4 |
0 | 0 | 1 | 1 | 8 |
0 | 1 | 0 | 0 | 16 |
0 | 1 | 0 | 1 | 32 |
0 | 1 | 1 | 0 | 64 |
0 | 1 | 1 | 1 | 128 |
1 | 0 | 0 | 0 | 256 |
1 | 0 | 0 | 1 | Zarezerwowane |
1 | 0 | 1 | 0 | Zarezerwowane |
1 | 0 | 1 | 1 | Zarezerwowane |
1 | 1 | 0 | 0 | Zarezerwowane |
1 | 1 | 0 | 1 | Zarezerwowane |
1 | 1 | 1 | 0 | Zarezerwowane |
1 | 1 | 1 | 1 | Zarezerwowane |
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.