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

©2022 mgr Jerzy Wałaszek
I LO w Tarnowie

obrazek

Mikrokontrolery

ATtiny24/44/84

System zegarowy

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

Podsystemy zegarowe

Poniższy rysunek przedstawia główne systemy zegarowe w AVR oraz ich podział. Nie wszystkie zegary muszą być aktywne w danym czasie. W celu zmniejszenia poboru energii, zegary nieużywanych modułów mogą być zatrzymane przez użycie różnych trybów uśpienia, co opisuje następny rozdział.

Zegar mikroprocesora – clkCPU

Zegar mikroprocesora jest kierowany do części systemu związanych z działaniem rdzenia AVR. Przykładami takich modułów są zestaw rejestrów ogólnego przeznaczenia, rejestr stanu oraz pamięć danych zawierająca wskaźnik stosu. Zatrzymanie zegara mikroprocesora uniemożliwia wykonywanie przez rdzeń ogólnych operacji i obliczeń.

Zegar we/wy – clkI/O

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ł przerwań zewnętrznych, lecz zauważ, iż niektóre z przerwań zewnętrznych są wykrywane przez logikę asynchroniczną, co pozwala je wykrywać nawet przy zatrzymanym zegarze we/wy.

Zegar pamięci FLASH – clkFLASH

Zegar FLASH kieruje pracą interfejsu FLASH. Zegar ten jest zwykle aktywny razem z zegarem mikroprocesora.

Zegar przetwornika A/C – clkADC

Przetwornik analogowo/cyfrowy pracuje w dedykowanej domenie zegarowej. Umożliwia to zatrzymanie mikroprocesora i zegarów we/wy w celu zmniejszenia poziomu zakłóceń generowanych przez obwody cyfrowe. Daje to dokładniejsze wyniki przetwarzania w przetworniku A/C.

Na początek:  podrozdziału   strony 

Źródła zegarowe

Mikrokontroler posiada poniżej przedstawione opcje wyboru źródła zegara, wybierane za pomocą bitów bezpiecznikowych w pamięci FLASH. Zegar z wybranego źródła jest podawany na wejście generatora zegarowego AVR, a później kierowany do odpowiednich modułów.

Opcja taktowania kontrolera CKSEL3:0(1)
Zegar zewnętrzny 0000
Zarezerwowane 0001
Kalibrowany oscylator wewnętrzny 8 MHz 0010
Zarezerwowane 0011
Wewnętrzny oscylator 128 kHz 0100
Zarezerwowane 0101
Oscylator kwarcowy niskiej częstotliwości 0110
Zarezerwowane 0111
Oscylator kwarcowy/rezonator ceramiczny 1000-1111

Uwaga: 1. Dla wszystkich bitów bezpiecznikowych "1" oznacza stan niezaprogramowany, a "0" zaprogramowany

Kolejne podrozdziały opisują różne warianty dla każdej opcji taktowania. Gdy mikroprocesor wychodzi z trybu wyłączenia, to wybrane źródło zegarowe wykorzystywane jest do odmierzania sekwencji startowej, zapewniając stabilną pracę oscylatora przed rozpoczęciem wykonywania instrukcji. Gdy mikroprocesor rozpoczyna działanie po resecie, zostaje dodane dodatkowe opóźnienie na ustabilizowanie się napięcia zasilającego przed podjęciem normalnej pracy. Oscylator licznika zegarowego jest używany do odmierzania w czasie rzeczywistym tej części czasu uruchamiania. Liczba taktów oscylatora licznika zegarowego dla każdego z okresów zliczania podaje poniższa tabelka:

Typowy czas zliczania Liczba taktów
4ms 512
64ms 8K (8192)

Zegar zewnętrzny

Aby taktować mikrokontroler z zewnętrznego źródła zegarowego, końcówka CLKI powinna być sterowana wg poniższego rysunku. Aby mikroprocesor pracował na zegarze zewnętrznym, należy zaprogramować bity bezpiecznikowe CKSEL na “0000”.

Gdy to źródło zegarowe zostanie wybrane, czasy uruchamiania będą określane przez bity bezpiecznikowe SUT, co pokazuje poniższa tabelka:

SUT1:0 Czas startu po trybie wyłączenia Dodatkowe opóźnienie od resetu Zalecane zastosowanie
00 6 CK 14CK BOD włączone
01 6 CK 14CK + 4 ms Szybko narastające napięcie zasilania
10 6 CK 14CK + 64 ms Wolno narastające napięcie zasilania
11 Zarezerwowane

Przy stosowaniu zegara zewnętrznego wymagane jest unikanie nagłych zmian w jego częstotliwości w celu zapewnienia stabilnej pracy mikrokontrolera. Zmiana częstotliwości więcej niż 2% z jednego taktu na następny może doprowadzić do nieprzewidywalnego zachowania. Podczas takich zmian częstotliwości zegarowej mikrokontroler musi być utrzymywany w stanie resetu. Zapamiętaj, iż preskaler zegara systemowego może być użyty do zaimplementowania zmian wewnętrznej częstotliwości zegarowej przy zapewnieniu stabilnej pracy. Zobacz do następnego podrozdziału.

Wewnętrzny oscylator kalibrowany 8 MHz

Standardowo wewnętrzny oscylator dostarcza zegara 8 MHz. Pomimo zależności tego zegara od napięcia i temperatury, użytkownik może go bardzo dokładnie skalibrować. Mikrokontroler jest sprzedawany z zaprogramowanym bitem bezpiecznikowym CKDIV8. Więcej szczegółów znajdziesz w następnym podrozdziale.

Zegar można wybrać na zegar systemowy przez zaprogramowanie bitów bezpiecznikowych CKSEL wg poniższej tabelki:

CKSEL3:0 Częstotliwość znamionowa
0010(1) 8,0 MHz

Uwaga: 1. Mikrokontroler posiada tę opcję zaprogramowaną fabrycznie.

Jeśli zegar zostanie wybrany, to będzie pracował bez żadnych zewnętrznych elementów. Podczas resetu sprzętowo jest ładowana zaprogramowana wcześniej wartość kalibracyjna do rejestru OSCCAL, co automatycznie kalibruje oscylator RC. Dokładność tej kalibracji pokazuje poniższa tabelka:

Metoda kalibracji Częstotliwość docelowa VCC Temperatura Dokładność(1)
Fabryczna 8,0 MHz 3V 25°C ±10%
Użytkownika Ustalona częstotliwość:
7,3 ... 8,1 MHz
Ustalone napięcie w zakresie:
1,8 ... 5,5V(2)
2,7 ... 5,5V(3)
Ustalona temperatura:
od -40°C do +85°C
±1%
Uwagi: 1. Dokładność częstotliwości oscylatora w punkcie kalibracji (ustalona temperatura i ustalone napięcie zasilania)
  2. Zakres napięć dla ATtiny24V/44V/84V.
  3. Zakres napięć dla ATtiny24/44/84.

Przez zmianę rejestru OSCCAL można uzyskać wyższą dokładność kalibracji od kalibracji fabrycznej.

Gdy oscylator jest używany jako zegar układu, oscylator licznika zegarowego będzie wciąż używany dla timera tego licznika i przy odmierzaniu opóźnień przy resecie.

Oscylator wewnętrzny 128 kHz

Wewnętrzny oscylator 128 kHz jest oscylatorem pobierającym niski prąd i dostarczającym zegara o częstotliwości 128 kHz. Częstotliwość ta zależy od napięcia zasilania, temperatury oraz odchyłek indywidualnych. Zegar 128 kHz można wybrać na zegar systemowy przez zaprogramowanie bitów bezpiecznikowych CKSEL na “0100”. Po wyborze tego zegara czasy uruchamiania są określane przez bity bezpiecznikowe SUT wg poniższej tabelki:

Czasy startu przy zegarze 128 kHz.

SUT1:0 Czas startu po trybie wyłączenia Dodatkowe opóźnienie od resetu Zalecane użycie
00 6 CK 14 CK(1) Wyłączone BOD
01 6 CK 14 CK + 4 ms Szybko narastające VCC
10 6 CK 14 CK + 64 ms Wolno narastające VCC
11 Zarezerwowane
Uwaga: 1. Jeśli jest zaprogramowany bit bezpiecznikowy RSTDISBL, to ten czas startu zostaje zwiększony do 14CK + 4 ms, aby umożliwić wejście w tryb programowania.

Oscylator kwarcowy o niskiej częstotliwości

Aby użyć zegarowego kwarcu 32,768 kHz jako źródła zegara dla mikrokontrolera, należy wybrać oscylator kwarcowy o niskiej częstotliwości przez ustawienie bitów bezpiecznikowych CKSEL na ‘0110’. Kwarc należy podłączyć zgodnie z rysunkiem poniżej.

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 trybie wyłączenia Dodatkowe opóźnienie od resetu Zalecane użycie
00 1K CK(1) 4 ms Szybko narastające VCC lub włączone BOD
01 1K CK(1) 64 ms Wolno narastające VCC
10 32K CK 64 ms Stabilna częstotliwość przy starcie
11 Zarezerwowane
Uwaga: 1. Te opcje należy stosować, jeśli stabilność częstotliwości przy starcie nie jest istotna.

Oscylator kwarcowy niskiej częstotliwości wprowadza wewnętrzne obciążenie pojemnościowe, wg poniższej tabelki:

Układ Typ oscylatora 32 kHz Pojemność (XTAL1/TOSC1) Pojemność (XTAL2/TOSC2)
ATtiny24/44/84 Oscylator systemu 16 pF 6 pF

Oscylator kwarcowy/rezonator ceramiczny

Końcówki XTAL1 i XTAL2 są odpowiednio wejściem i wyjściem odwracającego wzmacniacza, który można skonfigurować do użytku jako wewnątrzukładowy oscylator, co pokazuje poniższy rysunek:

Można użyć albo kryształu kwarcu, albo ceramicznego rezonatora.

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.

CKSEL3:1 Zakres częstotliwości (MHz) Zalecane pojemności C1 i C2 (pF)
100(1) 0,4 - 0,9
101 0,9 - 3,0 12 - 22
110 3,0 - 8,0 12 - 22
111 8,0 - 12 - 22
Uwaga: 1. Tej opcji nie należy stosować dla kwarców, tylko dla rezonatorów ceramicznych

Oscylator może pracować w trzech różnych trybach, każdy zoptymalizowany dla określonego zakresu częstotliwości. Tryb pracy jest wybierany bitami bezpiecznikowymi CKSEL3:1, co pokazuje powyższa tabelka. Bit bezpiecznikowy CKSEL0 wraz z bitami SUT1:0 wybiera czasy startowe pokazane w tabelce poniżej.

CKSEL0 SUT1:0 Czas startu po trybie wyłączenia(1) Dodatkowe opóźnienie od resetu Zalecane użycie
0 00 258 CK(2) 14CK + 4 ms Rezonator ceramiczny, szybko narastające VCC
0 01 258 CK(2) 14CK + 64 ms Rezonator ceramiczny, wolno narastające VCC
0 10 1K CK(3) 14CK Rezonator ceramiczny, włączone BOD
0 11 1K CK(3) 14CK + 4 ms Rezonator ceramiczny, szybko narastające VCC
1 00 1K CK(3) 14CK + 64 ms Rezonator ceramiczny, wolno narastające VCC
1 01 16K CK 14CK Oscylator kwarcowy, włączone BOD
1 10 16K CK 14CK + 4 ms Oscylator kwarcowy, szybko narastające VCC
1 11 16K CK 14CK + 64 ms Oscylator kwarcowy, wolno narastające VCC
Uwagi: 1. Gdy moduł BOD został wyłączony programowo, to czas wybudzenia z trybu uśpienia wyniesie w przybliżeniu 60μs, aby zapewnić poprawną pracę BOD, zanim mikrokontroler wznowi wykonywanie kodu.
  2. Te opcje powinny być stosowane, gdy mikrokontroler nie pracuje w pobliżu swojej częstotliwości maksymalnej oraz gdy stabilność częstotliwości przy starcie nie jest istotna dla aplikacji. Opcje te nie nadają się dla kryształów kwarcowych.
  3. Te opcje są przeznaczone do użytku z rezonatorami kwarcowymi i zapewniają stabilność częstotliwości przy starcie. Można ich również użyć z kryształami, gdy mikrokontroler nie pracuje blisko swojej częstotliwości maksymalnej i stabilność częstotliwości przy starcie nie jest istotna dla aplikacji.

Standardowe źródło zegarowe

Mikrokontroler jest sprzedawany z zaprogramowanymi bitami bezpiecznikowymi CKSEL = “0010”, SUT = “10” i CKDIV8. W ten sposób standardowym źródłem zegarowym jest wewnętrzny oscylator pracujący z częstotliwością 8,0 MHz z najdłuższym czasem uruchamiania i wstępnym podziałem zegara przez 8, co daje w wyniku zegar systemowy 1,0 MHz. To standardowe ustawienie zapewnia, iż wszyscy użytkownicy będą mogli wybrać pożądane źródło zegarowe za pomocą programatora.

W mikrokontrolerach niskonapięciowych (ATtiny24V/44V/84V) należy zwrócić uwagę, iż przeprogramowanie bitu bezpiecznikowego CKDIV8 może spowodować przetaktowanie. Przy niskich napięciach (poniżej 2,7V) maksymalna częstotliwość pracy wynosi 4 MHz, lecz skierowanie sygnału zegarowego z wewnętrznego oscylatora bezpośrednio na linię zegara systemowego spowoduje pracę mikrokontrolera z częstotliwością 8 MHz.

Na początek:  podrozdziału   strony 

Preskaler zegara systemowego

Częstotliwość zegara systemowego ATtiny24/44/84 można podzielić za pomocą ustawień rejestru preskalera zegara CLKPR. Cecha ta może zostać użyta do zmniejszenia poboru prądu, gdy występuje niskie zapotrzebowanie na moc przetwarzania. Można to zrobić ze wszystkimi opcjami źródeł zegarowych i wpłynie to na częstotliwość zegarową mikroprocesora oraz synchronicznych peryferiów. Zegary clkI/O, clkADC, clkCPU i clkFLASH są dzielone przez odpowiedni współczynnik.

Czas przełączania

Gdy przełącza się ustawienia preskalera, to zapewnia on, iż sygnał zegarowy nie będzie posiadał żadnych niepożądanych zakłóceń, ani częstotliwości pośredniej wyższej od poprzednio ustawionej i od nowo ustawionej.

Licznik implementujący preskaler pracuje z 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 dokładny czas przełączenia z jednego podziału zegara na inny nie może być dokładnie przewidziany. Od momentu zapisu wartośc CLKPS i w rejestrze CLKPR upływa od T1 + T2 do T1 + 2*T2 zanim nowa częstotliwość się uaktywni (T1 – poprzedni okres zegara, T2 nowy okres zegara). W tym przedziale czasu powstają dwa aktywne zbocza zegarowe.

Na początek:  podrozdziału   strony 

Bufor wyjścia zegarowego

Mikrokontroler może wyprowadzać zegar systemowy na końcówce CKOUT.

Aby uaktywnić to wyjście, należy zaprogramować bit bezpiecznikowy CKOUT. Tryb ten nadaje się do sterowania zegarem układu innych elementów systemu. Zauważ, iż zegar ten nie będzie wyprowadzany podczas resetu, a normalne działanie końcówki we/wy zostanie przechwycone przez zegar po zaprogramowaniu bitu bezpiecznikowego. Gdy zegar jest wyprowadzany na CKOUT, wciąż można wybrać dowolne źródło zegarowe, łącznie z wewnętrznym oscylatorem RC. Jeśli używany jest preskaler zegara systemowego, to wyprowadzany jest zegar o odpowiednio podzielonej częstotliwości.

Na początek:  podrozdziału   strony 

Opis rejestrów

OSCCAL – Oscillator Calibration Register – Rejestr kalibracyjny oscylatora

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 0 Wartość kalibracyjna specyficzna dla mikrokontrolera  

Bity 7:0 – CAL7:0: Oscillator Calibration Value – Wartość kalibracyjna oscylatora

Rejestr kalibracyjny oscylatora jest używany do regulacji wewnętrznego oscylatora kalibrowanego RC w celu usunięcia z jego częstotliwości odchyłek danego egzemplarza mikrokontrolera. Zaprogramowana wcześniej wartość kalibracyjna jest automatycznie wpisywana do tego rejestru podczas resetu układu, co daje częstotliwość skalibrowaną fabrycznie określoną w poniższej tabelce.

Dokładność kalibracji wewnętrznego oscylatora RC

Metoda kalibracji Częstotliwość docelowa VCC Temperatura Dokładność przy danych VCC i temperaturze(1)
Kalibracja fabryczna 8,0 MHz 3V 25°C ±10%
Kalibracja użytkownika Ustalona w zakresie:
7,3 – 8,1 MHz
Ustalone w zakresie:
1,8 – 5,5V(2)
2,7 – 5,5V(3)
Ustalona w zakresie:
-40°C do +85°C
±1%
Uwagi: 1. Dokładność częstotliwości oscylatora w punkcie kalibracji (przy ustalonej temperaturze i napięciu).
  2. Zakres napięć zasilania dla ATtiny24V/44V/84V.
  3. Zakres napięć zasilania dla ATtiny24/44/84.

Oprogramowanie aplikacji może zapisywać do tego rejestru, aby zmieniać częstotliwość oscylatora. Oscylator można skalibrować na częstotliwości określone w tabelce powyżej. Kalibracja poza tym zakresem nie jest gwarantowana.

Zauważ, że oscylator ten jest używany przy odmierzaniu czasu dostępu zapisu do pamięci EEPROM i FLASH, zatem zmiana jego częstotliwości wpłynie odpowiednio na te czasy. Jeśli są zapisywane pamięci EEPROM lub FLASH, to nie kalibruj na częstotliwość wyższą od 8,8 MHz. W przeciwnym razie zapis EEPROM lub FLASH może się nie powieść.

Bit CAL7 określa zakres pracy dla oscylatora. Ustawienie tego bitu na 0 daje najniższy zakres częstotliwości, ustawienie tego bitu na 1 daje najwyższy zakres częstotliwości. Te dwa zakresy częstotliwości zachodzą na siebie, innymi słowy ustawienie OSCCAL = 0x7F da wyższą częstotliwość od OSCCAL = 0x80.

Bity CAL6:0 są używane do dostrojenia częstotliwości wewnątrz wybranego zakresu. Ustawienie ich na 0x00 da najniższą częstotliwość w tym zakresie, a ustawienie 0x7F da częstotliwość najwyższą zakresu.

Aby zapewnić stabilną pracę mikrokontrolera wartość kalibracyjna powinna być zmieniana małymi porcjami. Zmiana w częstotliwości większa od 2% pomiędzy dwoma kolejnymi taktami może prowadzić do nieokreślonego 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.


CLKPR – Clock Prescaler Register – Rejestr preskalera zegara

Bit 7 6 5 4 3 2 1 0  
0x26 (0x46) 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  

Bit 7 – CLKPCE: Clock Prescaler Change Enable – Uaktywnienie możliwości wprowadzania zmian w ustawieniach preskalera

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.

Bity 6:4 – Zarezerwowane

Te bity w ATtiny24/44/88 są zarezerwowane i przy odczycie dają zawsze wartość 0.

Bity 3:0 – CLKPS3:0: Clock Prescaler Select Bits 3 ... 0 – Bity wyboru ustawienia preskalera zegara

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ę zapisu przy zmianie bitów CLKPS:

  1. Wpisz stan 1 do bitu CLKPCE, a 0 do wszystkich pozostałych bitów rejestru CLKPR.
  2. W ciągu następnych czterech cykli wpisz pożądaną wartość do bitów CLKPS, zapisując jednocześnie 0 do bitu CLKPCE.

Przerwania muszą być wyłączone przy zmianie ustawień preskalera, aby zagwarantować, iż powyższa procedura zapisu nie będzie przerwana.

Bit bezpiecznikowy CKDIV8 określa początkową wartość bitów CLKPS. Jeśli CKDIV8 jest niezaprogramowany, to bity CLKPS zostaną zresetowane na “0000”. Jeśli bit CKDIV8 jest zaprogramowany, bity CLKPS są resetowane na “0011”, dając przy starcie współczynnik podziału 8. Ta cecha powinna zostać użyta, jeśli wybrane źródło zegarowe ma wyższą częstotliwość niż maksymalna częstotliwość mikrokontrolera w bieżących warunkach pracy. Zwróć uwagę, że do bitów CLKPS można wpisać dowolną wartość bez względu na ustawienie bitu bezpiecznikowego CKDIV8. Program aplikacji musi zapewnić wybór wystarczającego współczynnika podziału, jeśli wybrane źródło zegarowe ma wyższą częstotliwość od maksymalnej częstotliwości pracy mikrokontrolera. 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
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
©2022 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.