Podstawy
Techniki Mikroprocesorowej
Wykład 1
dr inż. Piotr Markowski
Wydział Elektroniki Mikrosystemów i Fotoniki
Na prawach rękopisu.Na podstawie dokumentacji ATmega8535, www.atmel.com.
Konsultacje, materiały
dr inż. Piotr Markowski © 2015
Pn, 11-13, 143/M11
Czw, 11-13, 143/M11
http://www.w12.pwr.wroc.pl/pmarkowski
Warunki zaliczenia
dr inż. Piotr Markowski © 2015
• kartkówki (60%)
test mieszany (wykład 8 – 23-01-2020)
• poprawa ustna
Treść kursu
dr inż. Piotr Markowski © 2015
• Mikroprocesory i mikrokontrolery
• Programowanie mikrokontrolerów na
przykładzie 8-bitowego układu ATmega8535
(ATMEL)
• Asembler
Literatura
dr inż. Piotr Markowski © 2015
• 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!)
Plan wykładu
dr inż. Piotr Markowski © 2015
• Mikroprocesory i mikrokontrolery
• Architektura mikrokontrolera na przykładzie AVR
• Lista instrukcji AVR
• Urządzenia peryferyjne AVR
• Wybrane interfejsy komunikacyjne
• Wybrane układy zewnętrzne
Mikrokontroler (mikrosterownik) – definicja
dr inż. Piotr Markowski © 2015
MCU (MicroController Unit)
Scalony układ cyfrowy, 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 - budowa
dr inż. Piotr Markowski © 2015
Pamięć:
- programu
- danych
CPU
Central Processing Unit
mikroprocesor
jednostka centralna
serce MCU
mogą być różne CPU:
architektury
magistrale (8,16-bit...)
rodziny MCU
Mikrokontroler - budowa
dr inż. Piotr Markowski © 2015
Pamięć programu
(dysk twardy MCU)
program
Pamięć danych
(RAM)
rejestry + RAM
np.
8 kB
32 kB
np.
32 rej. uniwersalne
8-bitowe
np.
64 rej. specjalne
8-bitowe
np.
512 bajtów SRAM
RAZEM 608 B
H
A
R
V
A
R
D
Mikrokontroler - budowa
dr inż. Piotr Markowski © 2015
Porty WE / WY
do komunikacji
z otoczeniem
np. 32 nóżki
podzielone na 4 porty
(4 x 8)
Mikrokontroler - budowa
dr inż. Piotr Markowski © 2015
Mag
istr
ala
dan
ych
Mag
istr
ala
ad
reso
wa
Mag
istr
ala
ste
rują
ca
Układy peryferyjne
ADC
czujniki
komparator
obsługa przerwań
interfejsy komunikac.
pamięć ROM
liczniki
RTC
WDT
Mikrokontroler - budowa
dr inż. Piotr Markowski © 2015
Układ taktujący
K
W
A
R
C
ZASILANIE
RESET
dr inż. Piotr Markowski © 2015
ATmega8535
Specyfikacja ATmega8535
dr inż. Piotr Markowski © 2015
• Mikrokontroler 8-bitowy
• Architektura RISC
– 132 instrukcje – w większości wykonywane w 1 cykl zegarowy
– 32 rejestry uniwersalne, 8-o bitowe
- 64 rejestry specjalne
– do 16 MIPS przy 16 MHz
– 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 między pamięcią, a procesorem
Specyfikacja ATmega8535
dr inż. Piotr Markowski © 2015
• Pamięci:
– 8 KB Flash EEPROM (p. programu, nieulotna)
– 512 B SRAM (p. danych, ulotna)
– 512 B EEPROM (p. użytkownika, nieulotna)
– Programowalne zabezpieczenie kodu programu (Lock Bits)
• 32 programowalne wejścia/wyjścia (porty I/O)
Specyfikacja ATmega8535
dr inż. Piotr Markowski © 2015
• Urządzenia peryferyjne
– Dwa 8-bitowe liczniki (Timer/Counters) (2^8-1 = 255)
– Jeden licznik 16-bitowy (2^16-1 = 65535)
– Programowalny Watchdog (licznik specjalny)
– generator sygnału PWM (Pulse Width Modulation)
– 10-bitowy konwerter analogowo-cyfrowy (ADC)
– Komparator analogowy
– Magistrala szeregowa Two-wire (I2C)
– Magistrala szeregowa USART
– Magistrala szeregowa SPI (tryby Master/Slave)
Specyfikacja ATmega8535
dr inż. Piotr Markowski © 2015
• 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
dr inż. Piotr Markowski © 2015
Budowa
MicroController Unit
(MCU)
Mikrokontroler
dr inż. Piotr Markowski © 2015
Komputer
Mikrokontroler
(mikrokomputer jednoukładowy)
CPU – podstawowe zdolności
dr inż. Piotr Markowski © 2015
Operacje arytmetyczne np. +, -, *, /, ^, …
Operacje logiczne np. AND, OR, XOR
Operacje bitowe np. 0100 0010
0011 1100
Operacje warunkowe np. if(1) w_prawo
if(0) w_lewo
CPU – możliwości
dr inż. Piotr Markowski © 2015
BRAK pamięć programu (np. EEPROM)
pamięć danych (np. RAM)
odliczanie
komunikacja
ADC
AC
I/O
MCU – budowa wewnętrzna
dr inż. Piotr Markowski © 2015
MCU
CPU
Arithmetic
Logic
Unit
(ALU)
General
Purpose
Registers
(Rx)
Pamięć programu
LDI R16 , 0xFF
OUT DDRA , R16
LDI R17 , 0b10101010
OUT PORTA , R17
….
….
Pamięć RAM
stos
…
Urządzenia peryferyjneRejestry specjalne
DDRA
PORTC
SREG
TCCR0
…
dr inż. Piotr Markowski © 2015
Rejestry
Rejestry specjalne
dr inż. Piotr Markowski © 2015
Podstawowe elementy
mikrokontrolera.
Każde urządzenie wewnętrzne
μC ma przypisane do siebie
specjalne rejestry sterujące
jego pracą.
Rejestry specjalne
dr inż. Piotr Markowski © 2015
Przykładowy rejestr specjalny:
1 1 0ExaReg 1 0 0 - -
on/off
start/stop
przerwanie
on/off
prescaler
SREG = Status Register
DDRA = Data Direction Register
TCCR0 = Timer/Counter Control Register 0
GICR = General Interrupt Control Register
Rejestry uniwersalne
dr inż. Piotr Markowski © 2015
1 0 0 1 1 0 0 1
rej. specjalny
Brak bezpośredniego dostępu do rej. specjalnych
Dostęp pośredni – przez dowolny rejestr uniwersalny
rej. uniwersalny
R0 – R31
dowolny
rejestr uniwersalny
1 0 0 1 1 0 0 1wartość
TCCR0
wybrany
rejestr specjalny
Rejestry
dr inż. Piotr Markowski © 2015
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
dr inż. Piotr Markowski © 2015
Programowanie
Programowanie
dr inż. Piotr Markowski © 2015
KOD MASZYNOWY
1110010001010100
0000111001010101
1101011001000111
1110101110010110
1110010001010110
0111001001010111
1101011001000101
0010101110010100
1000110011010101
0001011101010010
1011110001001001
1100101010010111
Programowanie
dr inż. Piotr Markowski © 2015
KOD MASZYNOWY
1110010001010100
0000111001010101
1101011001000111
1110101110010110
000011 10010 10101
Kod operacji
np.:
ADD
(dodaj 2 rejestry)
Wskazuje miejsce
przechowywania
argumentu 1
Wskazuje miejsce
przechowywania
argumentu 2
1110 1011 1001 0110
Kod operacji
np.:
LDI
(załaduj
do rejestru)
Wskazuje miejsce
Docelowe
(rejestr)Wartość
do załadowania
Programowanie
dr inż. Piotr Markowski © 2015
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
dr inż. Piotr Markowski © 2015
PROGRAM
(PC)µC
PAMIĘĆ
PROGRAMU
FLASH EEPROM
ELECTRICAL
ERASABLE
PROGRAMABLE
READ
ONLY
MEMORY
Kompilacja
Asemblacja
dr inż. Piotr Markowski © 2015
Porty I/O
Porty I/O
dr inż. Piotr Markowski © 2015
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 zrobić, żeby:
dr inż. Piotr Markowski © 2015
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
Porty I/O
dr inż. Piotr Markowski © 2015
Port wejściowy (DDR ← 0)
minimalna wydajność prądowa
pobiera informacje
wymaga zabezpieczenia przed zakłóceniami
nóżka w trybie Hi-Z (tri-state) lub pull-up
Port wyjściowy (DDR ← 1)
wydajność prądowa 20 mA
wysyła informacje
PULL-UP
dr inż. Piotr Markowski © 2015
Antena – urządzenie zbiorcze zamieniające
fale elektromagnetyczne na sygnał elektryczny
(lub odwrotnie)
PULL-UP
dr inż. Piotr Markowski © 2015
DDR ← 0
PORT ← 1
MCU
I/O
logic
Vcc
pull-up
register
C:
DDRC
PORTC
PINC
0 1 1 11 0 0 0
1 11 1 0 00 0
Wejścia są podciągnięte
do 1 logicznej
dr inż. Piotr Markowski © 2015
Lista instrukcji
AVR
(zob. wykład „Instrukcje, tryby adresowania”)
Przykładowe zagadnienia sprawdzające
dr inż. Piotr Markowski © 2015
1. Mikrokontroler – definicja.
2. Mikrokontroler vs. Mikroprocesor – różnice.
3. Mikrokontroler – ogólna budowa wewnętrzna.
4. Rodzaje pamięci półprzewodnikowych (RAM, ROM, EEPROM, itp.),
podstawowe cechy.
5. Podział pamięci w mikrokontrolerze: p. danych, p. programu.
6. Rejestry mikrokontrolera – podział, funkcje, cechy, sposoby dostępu, stos.
7. Funkcje wybranych rejestrów specjalnych:
PC, SP, SREG, DDRx, PORTx, PINx.
8. PULL-UP.
9. Konwersja kodów liczbowych: NKB, U2, szesnastkowy.