MIKROPROCESORY I MIKROKONTROLERY
Piotr MALECKI 1/24
TEMAT TEGO WYKŁADU OBEJMUJE OBSZAR GDZIE INFORMATYK SPOTYKA SIĘ Z PODSTAWOWYMI PROBLEMAMI BUDOWY
KOMPUTERÓW. POZNAMY ELEMENTY JEDNOSTKI CENTRALNEJ – CPU (CENTRAL PROCESSOR UNIT) ORAZ ELEMENTY
SKŁADAJĄCE SIĘ NA KOMPLETNY SYSTEM KOMPUTEROWY.
TYTUŁOWE ROZRÓŻNIENIE MIKROPROCESORA I MIKROKONTROLERA DOTYCZY WŁAŚNIE DWU RÓŻNYCH TYPÓW OBWODÓW
SCALONYCH: UKŁAD MIKROPROCESORA ZAWIERA PRAWIE WYŁĄCZNIE CPU (ZWYKLE O POTĘŻNEJ MOCY OBLICZENIOWEJ) GDY
MIKROKONTROLER TO JEDNOUKŁADOWY, W PEŁNI AUTONOMICZNY, KOMPLETNY SYSTEM KOMPUTEROWY WYPOSAŻONY W
PAMIĘCI DANYCH I PROGRAMÓW ORAZ ZNACZNĄ LICZBĘ UKŁADÓW WEJŚCIA/WYJŚCIA TAKICH JAK LICZNIKI/CZASOMIERZE,
PRZETWORNIKI ANALOGOWO-CYFROWE I CYFROWO-ANALOGOWE, INTERFEJSY KOMUNIKACYJNE OBSŁUGUJĄCE RÓŻNE
PROTOKOŁY TRANSMISJI DANYCH, KOMPARATORY NAPIĘĆ, STEROWNIKI WYŚWIETLACZY LCD, ORAZ WIELE PORTÓW (GRUP LINII
WE/WY).
MIKROPROCESOR –
„wielki inwalida" MIKROKONTROLER - przykł. AVR
RA
M
RA
M
MIKROPROCESORY I MIKROKONTROLERY
Piotr MALECKI 2/24
CPU – JEDNOSTKA CENTRALNA TO ZŁOŻONY UKŁAD ELEKTRONICZNY ZDOLNY
DO WYKONYWANIA INSTRUKCJI (KOMEND, ROZKAZÓW),
KTÓRYCH REPERTUAR POZNAMY W TRAKCIE WYKŁADU.
- INSTRUKCJA ZAWIERA KOD OPERACJI, PRZY POMOCY KTÓREJ CPU
PRZETWARZA DANE – ARGUMENTY INSTRUKCJI
- CIĄG INSTRUKCJI (PROGRAM) MAGAZYNOWANY JEST W PAMIĘCI
PROGRAMÓW, SKĄD JEST POBIERANY DO WYKONANIA
Z CZĘSTOTLIWOŚCIĄ ZEGARA TAKTUJĄCEGO PRACĘ CPU.
PRAKTYCZNE POZNANIE MIKROKONTROLERA OZNACZA UMIEJĘTNOŚĆ JEGO
PROGRAMOWANIA. W TYM CELU NALEŻY POZNAĆ REPERTUAR INSTRUKCJI, ZNACZENIE
REJESTRÓW ORAZ FUNKCJE UKŁADÓW WEJŚCIA/WYJŚCIA ZWANYCH TEŻ „WEWNĘTRZNYMI
UKŁADAMI PERYFERYJNYMI”
ZNACZĄCY ROZWÓJ MIKROKONTROLERÓW TRWA OD LAT 80-TYCH XX WIEKU.
ISTNIEJE SZEREG RODZAJÓW MIKROKONTROLERÓW.
SKONCENTRUJEMY SIĘ NA TRZECH TYPACH MIKROKONTROLERÓW:
„RODZINIE” ‘81, RODZINIE AVR ORAZ NA GRUPIE OBECNIE NAJLICZNIEJ PRODUKOWANYCH
MIKROKONTROLERÓW ARM.
MIKROPROCESORY I MIKROKONTROLERY
Piotr MALECKI 3/24
RÓŻNE CECHY BUDOWY TYCH GRUP OKREŚLA SIĘ ICH PRZYNALEŻNOŚCIĄ DO
PEWNYCH „ARCHITEKTUR”. RODZINA ‘51 NALEŻY DO ARCHITEKTURY „CISC”, RODZINY
AVR I ARM TO ARCHITEKTURA „RISC”
CISC a RISC Complex Instruction Set Computer a Reduced Instruction Set Computer
DOSŁOWNE ROZWINIĘCIE TYCH AKRONIMÓW JEST DOSYĆ MYLĄCE, ALE RÓŻNICE TYCH
ARCHITEKTUR RZECZYWIŚCIE DOTYCZĄ INSTRUKCJI.
INTRUKCJE (ROZKAZY, KOMENDY, OPERACJE) MIKROKONTROLERÓW
WSZYSTKIE ROZKAZY ZAWIERAJĄ
KOD OPERACJI
ARGUMENTY (ADRESY ARGUMENTÓW I ADRES WYNIKU)
I, EWENTUALNIE, MODYFIKATORY KODU BĄDŹ ADRESÓW
ROZKAZY (PO PRZETWORZENIU PRZEZ ASEMBLER) ŁADOWANE SĄ DO PAMIĘCI
PROGRAMÓW
Przykłady :
ADD A, R4 ; dodaj zawartość rejestru R4 do A („akumulator”) i wynik umieść w A
; rozkaz dla ’51
w2: sublt r1,r1,r0 ; odejmij r0 od r1, tylko jeśli warunek LT jest spełniony. Linia kodu została
; opatrzona wizytówką
MIKROPROCESORY I MIKROKONTROLERY
Piotr MALECKI 4/24
FUNDAMENTALNĄ RÓŻNICĄ ARCHITEKTUR CISC / RISC JEST ROLA
I FUNKCJONALNOŚĆ REJESTRÓW ROBOCZYCH CPU
W RODZINIE ‘51 SZCZEGÓLNĄ ROLĘ MA „AKUMULATOR”, JEDYNY REJESTR CPU
O „PEŁNEJ” FUNKCJONALNOŚCI.
WSZYSTKIE REJESTRY ROBOCZE CPU MIKROKONTROLERÓW RISC MAJĄ FUNKCJE CISC-owego
AKUMULATORA
MIKROKONTROLERY RISC OKREŚLA SIĘ JAKO „MASZYNY REJESTROWE” PONIEWAŻ POZWALAJĄ
WYKONYWAĆ WIĘKSZOŚĆ OPERACJI NA REJESTRACH OGRANICZAJĄC TRANSFERY DO / Z
PAMIĘCI DO MINIMUM
REJESTRY CPU rodzina ’51 AVR ARM
8 bit 8 bit 32 bit
A – akumulator
B – akumulator pomocniczy
R0 – R7 rejestry robocze (x 4) R0 – R31 R0 – R15
PSW – rejestr wskaźników SREG CPSR (SPSR)
PC – licznik rozkazów PC PC = R15
SP – wskaźnik stosu SP SO = R13
MIKROPROCESORY I MIKROKONTROLERY
Piotr MALECKI 5/24
AVR ARITHMETIC and LOGIC INSTRUCTIONS
Code arguments affected flags cycles
ADD Rd,Rs Z,C,N,V,H,S 1
ADC Rd,Rs Z,C,N,V,H,S 1
ADIW RR,c63 Z,C,N,V,S 2
SUB Rd,Rs Z,C,H,N,V,S 1
SUB Rh,c255 Z,C,N,V,S,H 1
SBIW RR,c63 Z,C,N,V,S 2
SBC Rd,Rs Z,C,N,V,S,H 1
SBC Rd,c255 Z,C,N,V,S,H 1
AND Rd,Rs S,V,N,Z 1
ANDI Rh,c255 S,V,N,Z 1
OR Rd,Rs S,V,N,Z 1
ORI Rh,c255 S,V,N,Z 1
EOR Rd,Rs S,V,N,Z 1
COM Rd S,V,N,Z,C 1
NEG Rd H,S,V,N,Z,C 1
SBR Rh,c255 S,V,N,Z 1
CBR Rh,c255 S,V,N,Z 1
INC Rd S,V,N,Z 1
DEC Rd S,V,N,Z 1
TST Rd S,V,N,Z 1
CLR Rd S,V,N,Z 1
SER Rh 1
MUL Rd,Rs Z,C 2
MULS Rh,Rh Z,C 2
MULSU Rh,Rh Z,C 2
FMUL Rhd,Rhs Z,C 2
FMULS Rhd,Rhs Z,C 2
FMULSU Rhd,Rhs Z,C 2
Where: d,s = 0 : 30, h = 16 : 30, hd, hs = 16:23
c63 = 0 : 63, c255 = 0 : 255
8051 FAMILY ARITHMETIC and LOGIC INSTRUCTIONS
Code Addressing flags cycles
ADD A,Rr A,direct A,@Ri A.#data C,N,V 1
ADC A,Rr A,direct A,@Ri A,#data C,N,V 1
SUBB A,Rr A,direct A,@Ri A,#data C,H,V 1
INC A Rr direct @Ri DPTR 1
DEC A Rr direct @Ri 1
MUL AB C,V 4
DIV AB C,V 4
DA A C 1
ANL A,Rr A,direct A,@Ri A,#data direct,A direct,#data 1(2)
ORL A,Rr A,direct A,@Ri A,#data direct,A direct,#data 1(2)
XRL A,Rr A,direct A,@Ri A,#data direct,A direct,#data 1(2)
CLR A
CPL A
SWAP A
Where: r = 0 : 7, i = 0,1 #data = 0 : 255
OPERACJE (rozkazy) PROCESORÓW CYFROWYCH
TWORZĄ GRUPY:
OPERACJE ARYTMETCZNO-LOGICZNE
OPERACJE TRANSFERU DANYCH
OPERACJE WARUNKOWE
OPERACJE STERUJĄCE
W DALSZEJ CZĘŚCI KURSU POZNAMY SZCZEGÓŁY
INSTRUKCJI.
POWYŻSZE TABELE ILUSTRUJĄ ISTOTNE RÓŻNICE
TRYBÓW ADRESOWANIA CISC I RISC
MIKROPROCESORY I MIKROKONTROLERY
Piotr MALECKI 6/24
CISC a RISC c.d.
PRZYKŁADOWE PORÓWNANIE GRUP OPERACJI ARYTMETYCZNYCH PROCESORA ‘51 ORAZ AVR
ILUSTRUJE NAJBARDZIEJ ISTOTNE RÓŻNICE TYCH ARCHITEKTUR:
ZNACZNIE WIĘCEJ REJESTRÓW RISC MOŻE BYĆ DOWOLNYMI ARGUMENTAMI OPERACJI
WIĘKSZOŚĆ OPERACJI RISC WPŁYWA NA USTAWIENIA ZNACZNIKÓW („FLAG”)
WIĘKSZOŚĆ OPERACJI ODNOSI SIĘ DO REJESTRÓW – PAMIĘĆ DANYCH TRAKTOWNA
JEST JAK URZĄDZENIE WEJŚCIA/WYJŚCIA
RÓŻNICE TE ZNACZNIE USPRAWNIAJĄ I UŁATWIAJĄ PROGRAMOWANIE; POZWALAJĄ SKRÓCIĆ
KOD PROGRAMU.
PRZYKŁAD DODAWANIA DWÓCH LICZB CAŁKOWITYCH 16-BITOWYCH DLA –BITOWYCH
PROCESORÓW: [R8,R7] = [R8,R7] + [R6,R5]
CISC RISC
… …
MOV A, R7 ADD R7, R5
ADD A, R5 ADDC R8, R6
MOV R7, A …
MOV A, R8
ADDC A, R6
MOV R7, A
…
MIKROPROCESORY I MIKROKONTROLERY
Piotr MALECKI 7/24
JESZCZE JEDEN PODZIAŁ:
O PROCESORACH, KTÓRYCH PAMIĘCI PROGRAMÓW I PAMIĘCI DANYCH SĄ ODRĘBNYMI URZĄDZENIAMI
MÓWIMY, ŻE NALEŻĄ DO ARCHITEKTURY HARWARDZKIEJ.
JEŚLI PAMIĘĆ DANYCH I PAMIĘĆ PROGRAMÓW RÓŻNI SIĘ TYLKO PRZESTRZENIĄ ADRESOWĄ, TO
MÓWIMY O ARCHITEKTURZE VON NEUMANNA
RODZINY ‘51 I AVR NALEŻĄ DO ARCHITEKTURY HARWARDZKIEJ, WCZEŚNIEJSZE KONSTRUKCJE ARM ( NP.
MODELE CORTEX-M0, CORTEX-M1) BUDOWANE BYŁY W ARCHITEKTURZE VON NEUMANN’A.
MIKROPROCESORY I MIKROKONTROLERY
Piotr MALECKI 8/24
CECHY ARCHITEKTURY HARWARDZKIEJ:
ODRĘBNOŚĆ PAMIĘCI DANYCH I PAMIĘCI KODU OZNACZA, ŻE MAGISTRALE CPU –
PAMIĘĆ SĄ NIEZALEŻNE, MOGĄ MIEĆ RÓŻNE SZYBKOŚCI I SZEROKOŚCI.
W ARCHITEKTURZE ARM TRANSFERY DANYCH I INSTRUKCJI MOGĄ NAWET ODBYWAĆ
SIĘ JEDNOCZEŚNIE.
RODZINA ‘51 JEST PRZYKŁADEM „RYGORYSTYCZNEJ” ARCHITEKTURY
HARWARDZKIEJ. OZNACZA TO, ŻE PROGRAMISTA POZBAWIONY JEST MOŻLIWOŚCI
INGERENCJI W PAMIĘĆ PROGRAMU W TRAKCIE JEGO WYKONYWANIA.
PAMIĘĆ PROGRAMÓW MOŻNA ZMIENIĆ JEDYNIE W TRYBIE ŁADOWANIA.
PRZESYŁANIE DANYCH (przykład instrukcji rodziny ‘51 - „regorystyczny Harward”)
kod dozwolone adresowanie
Kopiuj A <- □ MOV A,Rr A,direct A,@Ri A,#data
Kopiuj Rr <- □ MOV Rr,A Rr,direct Rr,#data
Kopiuj direct <- □ MOV direct,A direct,Rr direct,direct direct,@Ri direct,#data
Kopiuj @Ri <- □ MOV @Ri,A @Ri,direct @Ri,#data
Kopiuj DPTR <- □ MOV DPTR,#data16
Pamięć programu MOVC A,@A+DPTR A,@A+PC
Zewn. pamięć danych MOVX A,@Ri A,@DPTR @Ri,A @DPTR,A
Zamień XCH A,Rr A,direct A,@Ri
Zamień 4 młodsze bity XCHD A,@Ri
Zapisz na stos PUSH direct (SP=SP+1 (SP) <- direct)
Odczytaj ze stosu POP direct (direct <- (SP) SP=SP-1)
MIKROPROCESORY I MIKROKONTROLERY
Piotr MALECKI 9/24
MOVC A,@A+DPTR A,@A+PC Z POPRZEDNIEJ TABELI TO KOMENDA
PRZENIESIENIA BAJTU Z PAMIĘCI KODU
DO AKUMULATORA. TYLE I NIC WIĘCEJ
HARWARDZKIE AVR NIE SĄ JUŻ TAK RYGORYSTYCZNE:
SPM (Z) <= R1:R0 STORE PROGRAM MEMORY !
Każdy rozkaz AVR zajmuje 2 bajty pamięci kodu. Starszy bit to zawartość R1, młodszy R0.
Nie wszystkie modele AVR pozwalają na zapis pojedynczego słowa (2-bajtowego). W niektórych
można wyzerować całą stronę (64K) pamięci kodu i całą załadować za pomocą STM.
ORGANIZACJA PAMIĘCI ARM JEST BARDZO ORYGINALNA - NIEZALEŻNIE OD
FIZYCZNEGO, SPRZĘTOWEGO ROZRÓŻNIENIA TYPÓW I MAGISTRAL PAMIĘCI DANYCH
I PROGRAMÓW SĄ ONE OBJĘTE JEDNĄ WSPÓLNĄ PRZESTRZENIĄ ADRESOWĄ !
MIKROPROCESORY I MIKROKONTROLERY
Piotr MALECKI 10/24
„ZALECANA”
ORGANIZACJA
PAMIĘCI
ARM-CORTEX M3
MOŻNA UMIEŚCIĆ
KOD
W PRZESTRZENI
DANYCH (!)
ALE
PRODUCENT
ODRADZA
MIKROPROCESORY I MIKROKONTROLERY
Piotr MALECKI 11/24
Organizacja wewnętrznej pamięci RAM μkontrolerów rodziny 51
128 bajtów dolnego obszaru wewnętrznej pamięci RAM
128 bajtów górnego obszaru wewnętrznej pamięci RAM
Obszar rejestrów SFR
Adresowanie bezpośrednie i pośrednie
Adresowanie pośrednie zawartością rejestrów
Adresowanie bezpośrednie
00H
07FH
80H
0FFH 0FFH
80H
MIKROPROCESORY I MIKROKONTROLERY
Piotr MALECKI 12/24
Struktura dolnego obszaru pamięci RAM µkontrolerów
R0
R1
R2
R3 R4
R5
R6 R7
Bank 0
0H
7H
BANK 1
BANK 2
BANK 3
Bajty z adresowalnymi bitami
Pamięć ogólnego zastosowania
00 07
7F 78
30H
7FH
8H - 0FH
10H - 17H
18H - 1FH
MIKROPROCESORY I MIKROKONTROLERY
Piotr MALECKI 13/24
SFR – obszar rejestrów specjalnego przeznaczenia wykorzystuje się: ●Jako zapis wszelkich rejestrów sterujących pracą CPU takich jak ACC- akumulator, B – akumulator pomocniczy, PSW - rejestr wskaźników stanu, SP – wskaźnik stosu ... (poza licznikiem rozkazów (PC) i bankami GPR, ●Jako interfejs pomiędzy CPU a urządzeniami peryferyjnymi.
...sterowanie urządzeniami peryferyjnymi poprzez operacje na odpowiadających im
rejestrach pamięci należy do genialnych rozwiązań w konstrukcji procesorów cyfrowych...
Stan wszystkich rejestów SFR po RESET (lub po uruchomieniu procesora) jest zdefiniowany. Jest też udokumentowany w danych technicznych kontrolera.
Programista może zmienić pierwotne (default – niejawne) ustawienia SFR. Np. wskaźnik stosu SP ustawiany jest pierwotnie na (adres) 07H, wskazuje na
R0 pierwszego banku rejestrów ogólnego zastosowania GPR i zwykle przestawiany na odległą lokację.
MIKROPROCESORY I MIKROKONTROLERY
Piotr MALECKI 14/24
TAKTOWANIE MIKROKONTROLERA ●Cykl maszynowy mikrokontrolerów rodziny 51 składa się z sześciu stanów (S1 – S6). Każdy stan trwa dwa okresy sygnału taktującego. Więc jeden cykl maszynowy trwa 12 taktów (okresów) sygnału zegarowego. ●Mikrokontrolery mają wbudowany generator sygnału zegarowego i zewnętrzny rezonator kwarcowy. Dobór rezonatora wyznacza częstotliwość taktowania. Zwykle od kilku do kilkudziesięciu MHz. Później poznamy powody dla popularnej częstości 11.059 MHz. ●Czas wykonywania instrukcji mikrokontrolerów rodziny 51 wynosi jeden, dwa lub 4 cykle maszynowe. (Te 4 cykle odnoszą jedynie do dwóch instrukcji: mnożenie i dzielenia). ●Podział cyklu maszynowego na stany i fazy wynika z potrzeby generacji sygnałów sterujących poszczególnymi etapami wykonywania instrukcji (pobranie z pamięci, zdekodowanie instrukcji, pobranie argumentów, zapis wyniku itp). Np.: stan wyprowadzenia RESET jest testowany w każdym cyklu maszynowym w stanie S5P2.
MIKROPROCESORY I MIKROKONTROLERY
Piotr MALECKI 15/24
ACC.7 ACC.6 ACC.5 ACC.4 ACC.3 ACC.2 ACC.1 ACC.0
CY AC F0 RS1 RS0 OV F1 P
‘51 AKUMULATOR
PSW – PROGRAM STATUS WORD
7 6 5 4 3 2 1 0
CY – carry flag AC – aux. Carry F0, F1 – general purpose RS1, RS0 – reg. bank select
OV – overflow flag P – parity bit
MIKROPROCESORY I MIKROKONTROLERY
Piotr MALECKI 16/24
ARM
MIKROPROCESORY I MIKROKONTROLERY
Piotr MALECKI 17/24
MIKROPROCESORY I MIKROKONTROLERY
Piotr MALECKI 18/24
Endianess (Jonathan Swift (1726) – satyryczna powieść „Podróże Guliwera”)
Stos - SP ‘51, AVR i ARM ! Specjalny sposób używania części pamięci danych
Wyposażenie - c.d.
Zasilanie
Narzędzia programistyczne – Keil, IAR, MCU 8051 IDE, … wstępny przykład
MIKROPROCESORY I MIKROKONTROLERY
Piotr MALECKI 19/24
MIKROPROCESORY I MIKROKONTROLERY
Piotr MALECKI 20/24
Przykład wyposażenia
ADuC812 – Analog Devices
Warto zwrócić uwagę
co dla Firmy jest dumą …
MIKROPROCESORY I MIKROKONTROLERY
Piotr MALECKI 21/24
Ultra-low-power platform
1.65 V to 3.6 V power supply -40°C to 85°C/105°C temperature range
0.3 μA Standby mode (3 wakeup pins)
0.9 μA Standby mode + RTC
0.57 μA Stop mode (16 wakeup lines)
1.45 μA Stop mode + RTC
9 μA Low-power Run mode
214 μA/MHz Run mode
10 nA ultra-low I/O leakage
< 8 μs wakeup time
Core: ARM 32-bit Cortex™-M3 CPU
From 32 kHz up to 32 MHz max
33.3 DMIPS peak (Dhrystone 2.1)
Memory protection unit
Reset and supply management
Ultra-safe, low-power BOR (brownout reset) with 5 selectable thresholds
Ultra-low-power POR/PDR
Programmable voltage detector (PVD)
STM32L152RB PRZYKŁAD ARM – CORTEX – M3
MIKROPROCESORY I MIKROKONTROLERY
Piotr MALECKI 22/24
Clock sources
1 to 24 MHz crystal oscillator
32 kHz oscillator for RTC with calibration
High Speed Internal 16 MHz factory-trimmed RC (+/- 1%)
Internal Low Power 37 kHz RC
Internal multispeed low power 65 kHz to 4.2 MHz
PLL for CPU clock and USB (48 MHz)
Pre-programmed bootloader
USART supported
Development support
Serial wire debug supported
JTAG and trace supported
Up to 83 fast I/Os (73 I/Os 5V tolerant), all mappable on 16 external interrupt vectors
Memories
Up to 128 KB Flash with ECC
Up to 16 KB RAM
Up to 4 KB of true EEPROM with ECC
80 Byte Backup Register
STM32L152RB PRZYKŁAD ARM – CORTEX – M3 c.d.
MIKROPROCESORY I MIKROKONTROLERY
Piotr MALECKI 23/24
LCD Driver for up to 8x40 segments
Support contrast adjustment
Support blinking mode
Step-up converter on board
Rich analog peripherals (down to 1.8 V)
12-bit ADC 1 Msps up to 24 channels
12-bit DAC 2 channels with output buffers
2x Ultra-low-power-comparators(window mode and wake up capability)
DMA controller 7x channels
8x peripherals communication interface
1x USB 2.0 (internal 48 MHz PLL)
3x USART (ISO 7816, IrDA)
2x SPI 16 Mbits/s
2x I2C (SMBus/PMBus)
10x timers: 6x 16-bit with up to 4 IC/OC/PWM channels, 2x 16-bit basic timer, 2x watchdog
timers (independent and window)
Up to 20 capacitive sensing channels supporting touchkey, linear and rotary touch sensors
CRC calculation unit, 96-bit unique ID
STM32L152RB PRZYKŁAD ARM – CORTEX – M3 c.d.
MIKROPROCESORY I MIKROKONTROLERY
Piotr MALECKI 24/24
Tomasz Starecki „Mikrokontrolery 8051 w praktyce” BTC Warszawa 2002
Andrzej Pawluczuk „Sztuka programowania mikrokontrolerów AVR” BTC Warszawa2006
Krzysztof Paprocki „Mikrokontrolery STM32 w praktyce” BTC Warszawa 2011
Paweł Borkowski „ARM & AVR programowanie mikrokontrolerów” Helion 2009
Marek Galewski „STM32 Aplikacje i ćwiczenia w języku C”
… INTERNET … LINKI DO PRODUCENTÓW !!!
mars.iti.pk.edu.pl/~malecki „slajdy” powstające na bieżąco oraz archiwalne
MATERIAŁY DYDAKTYCZNE: