mikroprocesory i mikrokontrolery
Transkrypt
mikroprocesory i mikrokontrolery
MIKROPROCESORY I MIKROKONTROLERY 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. RAM RAM 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" Piotr MALECKI MIKROKONTROLER - przykł. AVR 1/24 MIKROPROCESORY I MIKROKONTROLERY 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. Piotr MALECKI 2/24 MIKROPROCESORY I MIKROKONTROLERY 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ą Piotr MALECKI 3/24 MIKROPROCESORY I MIKROKONTROLERY 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 8 bit A – akumulator B – akumulator pomocniczy R0 – R7 rejestry robocze (x 4) PSW – rejestr wskaźników PC – licznik rozkazów SP – wskaźnik stosu Piotr MALECKI AVR 8 bit R0 – R31 SREG PC SP ARM 32 bit R0 – R15 CPSR (SPSR) PC = R15 SO = R13 4/24 MIKROPROCESORY I MIKROKONTROLERY OPERACJE (rozkazy) PROCESORÓW CYFROWYCH TWORZĄ GRUPY: OPERACJE ARYTMETCZNO-LOGICZNE OPERACJE TRANSFERU DANYCH OPERACJE WARUNKOWE OPERACJE STERUJĄCE Code ADD ADC SUBB INC DEC MUL DIV DA 8051 FAMILY ARITHMETIC and LOGIC INSTRUCTIONS Addressing flags cycles A,Rr A,direct A,@Ri A.#data C,N,V 1 A,Rr A,direct A,@Ri A,#data C,N,V 1 A,Rr A,direct A,@Ri A,#data C,H,V 1 A Rr direct @Ri DPTR 1 A Rr direct @Ri 1 AB C,V 4 AB C,V 4 A C 1 ANL ORL XRL CLR CPL SWAP A,Rr A,Rr A,Rr A A A A,direct A,direct A,direct A,@Ri A,@Ri A,@Ri A,#data A,#data A,#data direct,A direct,#data direct,A direct,#data direct,A direct,#data Where: r = 0 : 7, i = 0,1 #data = 0 : 255 W DALSZEJ CZĘŚCI KURSU POZNAMY SZCZEGÓŁY INSTRUKCJI. POWYŻSZE TABELE ILUSTRUJĄ ISTOTNE RÓŻNICE TRYBÓW ADRESOWANIA CISC I RISC Piotr MALECKI 1(2) 1(2) 1(2) AVR ARITHMETIC and LOGIC INSTRUCTIONS Code ADD ADC ADIW SUB SUB SBIW SBC SBC AND ANDI OR ORI EOR COM NEG SBR CBR INC DEC TST CLR SER MUL MULS MULSU FMUL FMULS FMULSU arguments Rd,Rs Rd,Rs RR,c63 Rd,Rs Rh,c255 RR,c63 Rd,Rs Rd,c255 Rd,Rs Rh,c255 Rd,Rs Rh,c255 Rd,Rs Rd Rd Rh,c255 Rh,c255 Rd Rd Rd Rd Rh Rd,Rs Rh,Rh Rh,Rh Rhd,Rhs Rhd,Rhs Rhd,Rhs affected flags Z,C,N,V,H,S Z,C,N,V,H,S Z,C,N,V,S Z,C,H,N,V,S Z,C,N,V,S,H Z,C,N,V,S Z,C,N,V,S,H Z,C,N,V,S,H S,V,N,Z S,V,N,Z S,V,N,Z S,V,N,Z S,V,N,Z S,V,N,Z,C H,S,V,N,Z,C S,V,N,Z S,V,N,Z S,V,N,Z S,V,N,Z S,V,N,Z S,V,N,Z Z,C Z,C Z,C Z,C Z,C Z,C cycles 1 1 2 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 Where: d,s = 0 : 30, h = 16 : 30, hd, hs = 16:23 c63 = 0 : 63, c255 = 0 : 255 5/24 MIKROPROCESORY I MIKROKONTROLERY 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 … MOV ADD MOV MOV ADDC MOV … Piotr MALECKI A, R7 A, R5 R7, A A, R8 A, R6 R7, A RISC … ADD ADDC … R7, R5 R8, R6 6/24 MIKROPROCESORY I MIKROKONTROLERY 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. Piotr MALECKI 7/24 MIKROPROCESORY I MIKROKONTROLERY 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 Kopiuj Rr <- □ MOV Rr,A Rr,direct Rr,#data Kopiuj direct <- □ MOV direct,A direct,Rr direct,direct direct,@Ri Kopiuj @Ri <- □ MOV @Ri,A @Ri,direct @Ri,#data Kopiuj DPTR <- □ MOV DPTR,#data16 Pamięć programu MOVC A,@A+DPTR A,@Ri A,@DPTR @Ri,A Zamień 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) Piotr MALECKI direct,#data A,@A+PC Zewn. pamięć danych MOVX XCH A,#data @DPTR,A SP=SP-1) 8/24 MIKROPROCESORY I MIKROKONTROLERY 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Ą ! Piotr MALECKI 9/24 MIKROPROCESORY I MIKROKONTROLERY „ZALECANA” ORGANIZACJA PAMIĘCI ARM-CORTEX M3 MOŻNA UMIEŚCIĆ KOD W PRZESTRZENI DANYCH (!) ALE PRODUCENT ODRADZA Piotr MALECKI 10/24 MIKROPROCESORY I MIKROKONTROLERY Organizacja wewnętrznej pamięci RAM μkontrolerów rodziny 51 0FFH 0FFH Obszar rejestrów SFR 128 bajtów górnego obszaru wewnętrznej pamięci RAM 80H 80H Adresowanie bezpośrednie i pośrednie 07FH 128 bajtów dolnego obszaru wewnętrznej pamięci RAM Adresowanie pośrednie zawartością rejestrów Adresowanie bezpośrednie 00H Piotr MALECKI 11/24 MIKROPROCESORY I MIKROKONTROLERY Struktura dolnego obszaru pamięci RAM µkontrolerów 7FH Pamięć ogólnego zastosowania 30H 7F 07 R7 R6 R5 R4 R3 R2 R1 R0 Piotr MALECKI 78 Bajty z adresowalnymi bitami 00 BANK 3 18H - 1FH BANK 2 10H - 17H BANK 1 8H - 0FH 7H Bank 0 0H 12/24 MIKROPROCESORY I MIKROKONTROLERY SFR – obszar rejestrów specjalnego przeznaczenia wykorzystuje się: Jako zapis wszelkich rejestrów sterujących pracą CPU takich jak ACCakumulator, 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ę. Piotr MALECKI 13/24 MIKROPROCESORY I MIKROKONTROLERY 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. ● Piotr MALECKI 14/24 MIKROPROCESORY I MIKROKONTROLERY ‘51 AKUMULATOR ACC.7 ACC.6 ACC.5 ACC.4 ACC.3 ACC.2 ACC.1 ACC.0 RS0 OV F1 P PSW – PROGRAM STATUS WORD CY AC F0 RS1 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 Piotr MALECKI 15/24 MIKROPROCESORY I MIKROKONTROLERY ARM Piotr MALECKI 16/24 MIKROPROCESORY I MIKROKONTROLERY Piotr MALECKI 17/24 MIKROPROCESORY I MIKROKONTROLERY 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 Piotr MALECKI 18/24 MIKROPROCESORY I MIKROKONTROLERY Piotr MALECKI 19/24 MIKROPROCESORY I MIKROKONTROLERY Przykład wyposażenia ADuC812 – Analog Devices Warto zwrócić uwagę co dla Firmy jest dumą … Piotr MALECKI 20/24 MIKROPROCESORY I MIKROKONTROLERY STM32L152RB PRZYKŁAD ARM – CORTEX – M3 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) Piotr MALECKI 21/24 MIKROPROCESORY I MIKROKONTROLERY STM32L152RB PRZYKŁAD ARM – CORTEX – M3 c.d. 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 Piotr MALECKI 22/24 MIKROPROCESORY I MIKROKONTROLERY STM32L152RB PRZYKŁAD ARM – CORTEX – M3 c.d. 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 Piotr MALECKI 23/24 MIKROPROCESORY I MIKROKONTROLERY MATERIAŁY DYDAKTYCZNE: 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 Piotr MALECKI „slajdy” powstające na bieżąco oraz archiwalne 24/24