Mikroprocesory i mikrosterowniki Wykład 1 wstęp, budowa mikrokontrolera Wydział Elektroniki Mikrosystemów i Fotoniki Na prawach rękopisu. Na podstawie dokumentacji ATmega8535, www.atmel.com. Piotr Markowski
Treść kursu Programowanie mikrokontrolerów na przykładzie 8-bitowego układu ATmega8535 (ATMEL) w asemblerze 8-bitowy mikrokontroler R8C25 (RENESAS)
Literatura R. Pełka Mikrokontrolery architektura, programowanie, zastosowania P. Górecki Mikrokontrolery dla początkujących J.M. Sibigtroth Zrozumieć małe mikrokontrolery J. Doliński Mikrokontrolery AVR w praktyce R. Baranowski Mikrokontrolery AVR ATmega w praktyce www.atmel.com (dokumentacja!)
Materiały http://www.w12.pwr.wroc.pl/pmarkowski
Warunki zaliczenia 2 x kolokwium kartkówki na wykładzie (3-4)
Plan wykładu Trochę o mikrokontrolerach Architektura mikrokontrolera ATmega8535 Lista instrukcji ATmega8535 Programowanie w asemblerze Urządzenia peryferyjne ATmega8535 Interfejsy komunikacyjne Układy zewnętrzne
Mikrokontroler (mikrosterownik) definicja Jest scalonym układem cyfrowym, który oprócz wbudowanej jednostki centralnej CPU posiada zintegrowaną pamięć oraz układy wspomagające. Mikrokontroler stanowi całkowicie autonomiczny system mikroprocesorowy, który do pracy nie wymaga układów zewnętrznych. Ma rozbudowany system komunikacji z otoczeniem.
Mikrokontroler zastosowanie Mikrosystem Magistrala komunikacyjna Czujniki Mikrokontroler Magistrala komunikacyjna Aktuatory
Mikrokontroler vs mikroprocesor Komputer Mikrokontroler (mikrokomputer jednoukładowy)
Mikrokontroler - budowa RESET Jednostka centralna REZONATOR ZASILANIE MIĘDZYMORDZIA KOMUNIKACYJNE zegar Szyny wewnętrzne: adresowa i danych Pamięć: - programu - danych Układy we/wy i peryferyjne
ATmega8535
Specyfikacja ATmega8535 Mikrokontroler 8-bitowy Architektura RISC ~130 instrukcji w większości wykonywane w 1 cykl zegarowy 32 8-o bitowe rejestry uniwersalne - 64 rejestry specjalne ponad 16 MIPS wbudowany układ mnożący RISC (Reduced Instruction Set Computer) - architektura typu Harvard (oddzielone szyny danych i rozkazów) - przetwarzanie potokowe - zredukowana lista instrukcji - instrukcje mogą operować na dowolnym rejestrze uniwersalnym - ograniczenie komunikacji pomiędzy pamięcią, a procesorem
Specyfikacja ATmega8535 c.d. Nieulotna pamięć programu i danych 8 KB pamięci Flash EEPROM Wytrzymałość: 10 000 cykli zapis/odczyt Obszar pamięci bootowalnej 512 bajtów EEPROM Wytrzymałość: 100 000 cykli zapis/odczyt 512 bajtów SRAM Programowalne zabezpieczenie kodu programu (Lock Bits) 32 programowalne wejścia/wyjścia (porty I/O)
Specyfikacja ATmega8535 c.d. Urządzenia peryferyjne Dwa 8-o bitowe liczniki (Timer/Counters) 2^8 Jeden licznik 16-o bitowy 2^16 Programowalny Watchdog (licznik specjalny) PWM (Pulse Width Modulation) 10-o bitowy konwerter analogowo-cyfrowy (ADC) Komparator analogowy Magistrala szeregowa Two-wire (I2C) Magistrala szeregowa USART Magistrala szeregowa SPI (tryby Master/Slave)
Specyfikacja ATmega8535 c.d. Opcje specjalne Brown-out Detector Wewnętrzny oscylator RC Możliwość taktowania ze źródła zewnętrznego Przerwania wewnętrzne i zewnętrzne Sześć trybów uśpienia Napięcia zasilania: 2,7 5,5V dla ATmega8535L 4,5 5,5V dla ATmega8535
Budowa mikrokontrolera ATmega8535
ATmega8535 - CPU CPU: Jednostka Arytmetyczno-Logiczna (ALU) Rejestry uniwersalne Status Register (SREG) Wskaźnik Stosu (SP) Licznik rozkazów (PC)
ALU Działanie ALU: 1) wczytanie do wewnętrznych rejestrów ALU kolejnego rozkazu 2) wczytanie argumentów lub informacji o ich lokalizacji 3) pobranie argumentów do rejestrów ALU 4) wykonanie instrukcji 5) inkrementacja PC
Status Register I obsługa przerwań on/off T bit magazynujący (storage) H Half carry przeniesienie z bitu 3 przy op. arytmet. S Sign - XOR flag N i V V zmiana z 01111111 na 10000000 N gdy MSB = 1 Z gdy 00000000 C Carry przeniesienie
Programowanie KOD MASZYNOWY 11100100010101 01110010010101 11010110010001 00101011100101 ASEMBLER Ldi R16, 100 Ldi R17, 50 Add R16, R17 Out PORTA, R16 JĘZ. POZIOMU ŚRED. / WYS. PORTA:= R16+R17 (C, BASCOM) LISTA INSTRUKCJI µp.... asemblacja kompilacja
Programowanie PROGRAM (PC) Kompilacja Asemblacja µc FLASH EEPROM ELECTRICAL ERASABLE PROGRAMABLE READ ONLY MEMORY PAMIĘĆ PROGRAMU
Programowanie 1110010001010110 0111001001010111 1101011001000101 0010101110010100 1000110011010101 0001011101010010 1011110001001001 1100101010010111 Kod op. 0111 001001 010111 Arg. 1 (9) Arg. 2 RAM 1101000 1
Programowanie CP U port WE/WY ustaw stan wysoki odczyt stanu I2C WYŚLIJ Wyślij 0111 001001 010111 T/C0 Timer/Counter 0 START ODCZYT ZAŁADOWANIE START PWM
Specyfikacja ATmega8535 c.d. Urządzenia peryferyjne Dwa 8-o bitowe liczniki (Timer/Counters) 2^8 Jeden licznik 16-o bitowy 2^16 Programowalny Watchdog (licznik specjalny) PWM (Pulse Width Modulation) 10-o bitowy konwerter analogowo-cyfrowy (ADC) Komparator analogowy Magistrala szeregowa Two-wire (I2C) Magistrala szeregowa USART Magistrala szeregowa SPI (tryby Master/Slave)
ATmega8535 wyprowadzenia Wejścia I/O Wejścia ADC We/wy liczników SPI USART I2C Przerw. zewn.
Pamięć
ATmega8535 - pamięć Pamięć programu FLASH EEPROM, 8 kb kod programu Pamięć danych SRAM, 512 B bieżące dane tymczasowe rejestry Pamięć dodatkowa, użytkownika EEPROM, 512 B
Pamięć programu FLASH EEPROM zorganizowana jako 4 K x 16 bajtów ($FFF) podzielona na PROGRAM SECTION oraz BOOT SECTION przechowuje program załadowany do mikrosterownika
Pamięć programu licznik rozkazów Program Counter wskazuje adres, spod którego pobierane są kolejne instrukcje 11 10 9 8 7 6 5 4 3 2 1 0 PC (FLASH EEPROM $000 - $FFF)
Pamięć danych SRAM, rejestry 32 rej. uniwersalne 64 rej. specjalne Mapa pamięci danych 512 bajtów SRAM
SRAM Stos do przechowywania danych tymczasowych, zmiennych, adresów powrotu z podprogramów. Wskaźnik stosu (Stack Pointer) wskazuje pierwszy wolny wiersz stosu. SPL, SPH 512 wierszy, 512 kb Dekrementacja SP Konieczna inicjalizacja stosu Wierzchołek stosu
Rejestry
Rejestry Podstawowe elementy mikrokontrolera. Każde urządzenie wewnętrzne µc ma przypisane do siebie specjalne rejestry sterujące jego pracą.
Rejestry Przykładowy rejestr specjalny: start/stop prescaler ExaReg 1 1 0 1 0 0 - - on/off przerwanie on/off
Rejestry specjalne SREG = Status Register DDRA = Data Direction Register TCCR0 = Timer/Counter Control Register 0 GICR = General Interrupt Control Register
Rejestry specjalne
Rejestry specjalne
Rejestry uniwersalne Brak bezpośredniego dostępu do rej. specjalnych Dostęp pośredni przez dowolny rejestr uniwersalny 1 0 0 1 1 0 0 1 rej. specjalny rej. uniwersalny 1 0 0 1 1 0 0 1 wartość R0 R31 dowolny rejestr uniwersalny TCCR0 wybrany rejestr specjalny
Rejestry uniwersalne Dodatkowa funkcja: tworzą rejestry 16-bitowe będące wskaźnikami przy dostępie do całej pamięci danych $000 - $25F (Rx, P, SRAM)
Rejestry Rejestry specjalne: do sterowania urządzeniami wewnętrznymi - 64 szt. (str. 299) - nazwy to skróty (SREG = Status Register) Rejestry uniwersalne: - do wykonywania operacji (arytmetycznych, logicznych itp.) - 32 szt. - nazwy: R0 R31
Porty I/O
Porty I/O A: B: C: D: DDRA DDRB DDRC DDRD PORTA PORTB PORTC PORTD PINA PINB PINC PIND DDR Data Direction Register (1=WY, 0=WE) PORT gdy WY (wysyłanie 1 lub 0) PIN gdy WE (tylko do odczytu) PA0 PA7,, PD0 PD7
Jak to zrobić, żeby: 1)wysłać z µc na zewnątrz sygnał 10101010 (port C)? DDRC: PORTC: PINC: 2) sczytać sygnał podany z zewnątrz na port C? DDRC: PORTC: PINC: 3) ustawić 6 najstarszych jako WY, reszta jako WE; wysłać 000111 i sczytać PC0, PC1? DDRC: PORTC: PINC: 11111111 10101010-00000000 - zajrzeć do środka 11111100 000111xx zajrzeć do środka
Softwere
AVR Studio 4 www.atmel.com
PonyProg2000 - www.lancos.com
Przykładowe zagadnienia sprawdzające
Przykładowe zagadnienia sprawdzające 1. Mikrokontroler definicja. 2. Mikrokontroler vs. Mikroprocesor - różnice. 3. Mikrokontroler - ogólna budowa wewnętrzna. 4. CPU budowa ogólna. 5. ALU działanie. 6. Rodzaje pamięci półprzewodnikowych (RAM, ROM, EEPROM, DRAM, itp.), podstawowe cechy. 7. Podział pamięci w mikrokontrolerze: p. danych, p. programu, rejestry funckcje. 8. Rejestey mikrokontrolera podział, funkcje, cechy, stos. 9. Funkcje wybranych rejestrów specjalnych (PC, SP, SREG, DDRx, PORTx, PINx).