Transcript MCS51 - standardowy SIO 2/30
Slide 1
MCS51 - wykład 4
Slide 2
Wykład 3
1/30
Porty szeregowe MCS51
Standardowy SIO
Wybrane rozszerzenia i modyfikacje
Slide 3
MCS51 - standardowy SIO
Cechy standardowego SIO:
• możliwość transmisji synchronicznej danych 8-bitowych,
ze stałą prędkością, w półdupleksie;
• możliwość transmisji asynchronicznej danych 8- lub 9-bitowych,
ze stałą lub programowaną prędkością w pełnym dupleksie;
• możliwość transmisji krótszych znaków,
przy odpowiedniej interpretacji programowej;
• pojedyncze rejestry buforujące nadajnik i odbiornik;
• dostęp do danych poprzez rejestr buforowy SBUF;
• sterowanie pracą poprzez rejestr SCON i bit SMOD w rej. PCON;
• możliwość realizacji transmisji wieloprocesorowej;
• indywidualne flagi zakończenia odbioru RI oraz nadawania TI;
• możliwość zgłaszania przerwań jako sumy logicznej RI TI.
2/30
Slide 4
MCS51 - standardowy SIO
3/30
Rejestry sterujące:
SCON SM0 9F SM1 9E SM2 9D REN 9C TB8 9B RB8 9A
TI
99
RI
98
98h
SM0,SM1,SM2 - wybór jednego z trybów pracy:
0 0 0 - tryb 0 - synchroniczny
0 1 0 - tryb 1 - asynchroniczny - szybkość programowalna
0 1 1 - tryb 1 - asynchroniczny z oczekiwaniem na poprawny bit stopu
szybkość programowalna
1 0 0 - tryb 2 - asynchroniczny - stała szybkość
1 0 1 - tryb 2 - asynchroniczny z ignorowaniem odebranej danej,
jeżeli jej 9-ty bit był zerem, stała szybkość
1 1 0 - tryb 3 - asynchroniczny - szybkość programowalna
1 1 1 - tryb 3 - asynchroniczny z ignorowaniem odebranej danej,
jeżeli jej 9-ty bit był zerem, szybkość programowalna
Slide 5
MCS51 - standardowy SIO
4/30
REN - bit włączający odbiornik
TB8 - 9-ty bit danej do wysłania (w trybie 2 lub 3)
RB8 - odebrany 9-ty bit danej (w trybie 2 lub 3)
TI - flaga przerwania od nadajnika, ustawiana po wysłaniu ostatniego bitu,
musi być kasowana programowo
RI - flaga przerwania od odbiornika, ustawiana po odebraniu ostatniego bitu,
musi być kasowana programowo
PCON SMOD
-
-
-
GF1
GF0
PD
IDL
87h
SMOD - bit zdwojenia prędkości pracy portu szeregowego w trybach 1,2 i 3
SBUF
SBUF - rejestr buforowy nadajnika/odbiornika
99h
Slide 6
MCS51 - standardowy SIO
Praca w trybie 0
- synchronicznym
5/30
Slide 7
MCS51 - standardowy SIO
Transmisja w trybie 0 - synchronicznym
6/30
Slide 8
MCS51 - standardowy SIO
Praca w trybie 1
- asynchronicznym 8-bitowym
7/30
Slide 9
MCS51 - standardowy SIO
Transmisja w trybie 1 - asynchronicznym
8/30
Slide 10
MCS51 - standardowy SIO
Praca w trybie 2 i 3
- asynchronicznych 9-bitowych
9/30
Slide 11
MCS51 - standardowy SIO
Transmisja w trybie 2 i 3 - asynchronicznym
10/30
Slide 12
MCS51 - standardowy SIO
11/30
Dostępne szybkości transmisji:
1. tryb synchroniczny:
fB = fOSC/12
2. tryby asynchroniczne 1 i 3:
fB = 2SMODfTF1/32
3. tryb asynchroniczny 2:
fB = 2SMODfOSC/64
Wykorzystując timer/licznik 1 z 8-bitowym z aut. przeładowaniem mamy:
fB = 2SMODfOSC : 12 : 32 : (256-TH1)
Wykorzystując timer/licznik 2 z 16-bitowym przeładowaniem mamy:
fB = fOSC : 32 : (65536-RCAP2)
Slide 13
MCS51 - standardowy SIO
12/30
przykładowe szybkości transmisji i wykorzystanie timera/licznika #1
mod
PORT SZEREGOW Y
szyb ko ść
fO S C
b it
[M H z]
SM OD
T IM E R /L IC Z N IK 1
b it
tryb
stała
C /T
p rzeład o w an ia
0
1M H z
1 2 ,0 00
x
x
x
x
2
3 75 00 0b od
1 2 ,0 00
1
x
x
x
2
1 87 50 0b od
1 2 ,0 00
0
x
x
x
1 ,3
6 25 00 bo d
1 2 ,0 00
1
0
2
0 F Fh
1 ,3
1 92 00 bo d
1 1 ,0 59
1
0
2
0FD h
1 ,3
9 60 0b od
1 1 ,0 59
0
0
2
0FD h
1 ,3
4 80 0b od
1 1 ,0 59
0
0
2
0FAh
1 ,3
2 40 0b od
1 1 ,0 59
0
0
2
0 F 4h
1 ,3
1 20 0b od
1 1 ,0 59
0
0
2
0 E 8h
1 ,3
6 00 bo d
1 1 ,0 59
0
0
2
0D 0h
1 ,3
3 00 bo d
1 1 ,0 59
0
0
2
0A0h
1 ,3
1 37 ,5b od
1 1 ,0 59
0
0
2
1D h
1 ,3
1 10 bo d
6 ,00 0
0
0
2
7 2h
1 ,3
1 10 bo d
1 2 ,0 00
0
0
1
0FEEBh
Slide 14
MCS51 - standardowy SIO
13/30
Dostrojenie do żądanej prędkości transmisji przy odbiorze
Odbiór przy dokładnej fB*:
Odbiór przy zawyżonej fB w odbiorniku (fB > fB*):
Odbiór przy zaniżonej fB w odbiorniku (fB < fB*):
start odbioru
zerowanie dzielnika ‘:16’
- „resynchronizacja”
Warunek poprawnego odbioru:
odczyt poprawny ostatniego bitu (RB8) i STOPU=1
Slide 15
MCS51 - standardowy SIO
14/30
101/fB*
stany podzielnika
‘:16’ przy odczycie
bitu w trybach 1,2 i 3
stan linii RxD
111/fB*
0 1 2 3 4 5
6 7 8 9 A B C D E F
STOP
(11 bit ramki)
0 1 2 3 4 5 6 7 8 9 A B C D E F
(10+6/16)1/fBMAX
0 1 2
3 4
5 6
7 8 9 A B C D
(10+10/16)1/fBMIN
Slide 16
MCS51 - standardowy SIO
15/30
Oszacowanie tolerancji częstotliwości pracy fB odbiornika:
*
f BMAX
fB
(10
10
f BMIN
fB
(10
11
*
fB
)
16
*
fB
6
3,7 %
3, 4 %
10
16
)
166
160
170
176
*
*
f B 1, 037 f B
*
*
f B 0 ,966 f B
Slide 17
MCS51 - standardowy SIO
16/30
Dostrojenie do żądanej prędkości transmisji przy nadawaniu
Nadawanie dokładnie z fB = fB*:
Nadawanie przy zawyżonej fB w nadajniku (fB > fB*):
Nadawanie przy zaniżonej fB w nadajniku (fB < fB*):
start nadawania/odbioru
- „resynchronizacja”
Warunek poprawnego nadawania/odbioru:
odczyt poprawny ostatniego bitu (TB8) i STOPU=1
Slide 18
MCS51 - standardowy SIO
17/30
(10+10/16)1/fB*
stany podzielnika
‘:16’ przy odczycie
bitu w trybach 1,2 i 3
(10+6/16)1/fB*
0 1 2 3 4 5 6 7 8 9 A B C D E F
STOP
stan linii RxD
(11 bit ramki)
0 1 2 3 4 5 6 7 8 9 A B C D E F
111/fBMAX
101/fBMIN
0 1 2
3 4
5 6
7 8 9 A B
Slide 19
MCS51 - standardowy SIO
18/30
Oszacowanie tolerancji częstotliwości pracy fB nadajnika:
f B 11
*
f BMAX
10
10
166
160
f B 1, 037 f B
*
*
16
f B 10
*
f BMIN
10
6
160
166
f B 0 , 964 f B
*
*
16
* 3,7 %
fB fB
3,6 %
Ostrzejsze kryteria narzuca poprawny odbiór i one są decydujące:
* 3, 7 %
fB fB
3, 4 %
Slide 20
MCS51 - standardowy SIO
19/30
Możliwości uzyskania poprawnych wartości fB przy różnych fOSC
2 SMOD f
OSC
TH 1 256 INT
12 32 f
B
fB
*
to leran cja
TH1
SM OD
p rzy f O S C
fB
1 20 0
1 15 9 ...12 44
2 30
0
12M H z
1 20 2
2 40 0
2 31 8 ...24 89
2 43
0
12M H z
2 40 4
4 80 0
4 63 6 ...49 78
2 43
1
12M H z
4 80 8
9 60 0
9 27 4 ...99 55
2 51
1
9M H z
9 37 5
1 92 00
1 85 47 ...1 99 10
2 54
0
15M H z
1 95 31
3 84 00
3 70 94 ...3 98 21
2 55
0
15M H z
3 90 63
Slide 21
MCS51 - standardowy SIO
20/30
Transmisja wieloprocesorowa
RxD TxD
RxD TxD
RxD TxD
C1
C2
Ck
rozproszony system automatyki/pomiarów
• wymiana informacji o procesie;
• koordynacja współpracy;
• synchronizacja procesów;
• gromadzenie pomiarów ...
Slide 22
MCS51 - standardowy SIO
Możliwości portu SIO:
• wyjścia RxD i TxD łączy się na wspólną linię transmisyjną;
• wykorzystanie trybów 2 i 3 z ustawionym bitem SM2 (pozwala on
zaakceptować tylko te odebrane ramki, które mają ustawiony bit RB8);
• zakłada się, że w danej chwili jeden z mikrokontrolerów jest nadrzędny;
• mikrokontroler nadrzędny ma wyzerowany bit SM2;
• w mikrokontrolerach podrzędnych musi być ustawiony bit SM2;
• każdemu mikrokontrolerowi należy przyporządkować indywidualny,
8-bitowy adres;
• dopuszcza się adres ogólny dla transmisji typu rozgłaszanie;
• w procedurach obsługi przerwań od SIO przy RI=1, należy wstawić
sekwencje rozkazów rozpoznające adres wywołania.
21/30
Slide 23
MCS51 - standardowy SIO
Przykładowy algorytm działania:
22/30
1. Procesor nadrzędny wysyła ramkę z adresem indywidualnym lub ogólnym
i ustawionym bitem TB8 - adres ten określa do kogo jest adresowana
następująca po nim transmisja.
2. Wszystkie pozostałe procesory, działając jako podrzędne, mają ustawiony bit
SM2 i odbiorą wysłaną ramkę wywołania - adres wywołania trafi do ich
rejestrów SBUF i ustawią się flagi RI.
3. Uruchomione zostaną procedury obsługi SIO, które w przypadku
przerwania od odbiornika (RI=1) przy ustawionym bicie SM2=1 porównują
bajt z SBUF z przyporządkowanymi adresami indywidualnymi lub ogólnym.
4. Procesor, który stwierdzi zgodność adresu wywołania z własnym,
zeruje swój bit SM2 i kończy procedurę obsługi SIO,
pozostałe procesory kończą obsługę SIO pozostawiając SM2=1.
5. Następuje wymiana informacji pomiędzy procesorem nadrzędnym
a zaadresowanym podrzędnym przy SM2=0 i zerowych bitach TB8/RB8.
SIO pozostałych procesorów ignorują tak przesyłane ramki danych.
6. Po zakończeniu transmisji, procesor podrzędny ponownie ustawia SM2=1.
Slide 24
MCS51 - rozszerzony SIO
23/30
Dostępne funkcje dodatkowe:
1. Sygnalizacja błędnego bitu stopu - brak ‘1’ w chwili spodziewanego
bitu STOP - jest to tzw. błąd ramki, sygnalizowany ustawieniem bitu FE,
który można sprawdzić odczytując bit SM0 w SCON.
2. Automatyczne rozpoznawanie adresów wywołania przy komunikacji
wieloprocesorowej - włączane przez ustawienie bitu SM2;
W trybie 1 SIO analizowane są wszystkie odebrane bajty z poprawnymi
bitami stopu, a w trybach 2 i 3 - tylko te, dla których RB8=1.
Slide 25
MCS51 - rozszerzony SIO
24/30
Flaga RI ustawia się tylko wtedy gdy odebrany bajt jest zgodny
z zaprogramowaną w rejestrach SFR maską adresu.
Pojawiają się 2 rejestry SFR:
SADDR
0A9h
SADEN
0B9h
Odebrany bajt-adres wywołania jest zgodny, jeżeli spełnia równanie:
(odebrany_bajt SADDR) SADEN = 00h
Przykład:
w C1 ustawiono:
SADDR=
11000001
SADEN=
11111110
adres aktywny= 1100000x
w C2 ustawiono:
11000010
11111101
110000x1
Wtedy adres wywołania 11000001 adresuje tylko C1, adres 11000010 - tylko C2,
adres11000000 - oba C, a każdy adres z grupy xxxxxx11 zostanie zignorowany.
Slide 26
MCS51 - dodatkowe SIO
Np. układy Siemensa
Funkcje:
• transmisja tylko asynchroniczna (jak tryby 1,2 i 3 podstawowego SIO);
• własny generator prędkości transmisji;
• analogiczne rejestry obsługujące (S1BUF i S1CON)
25/30
Slide 27
MCS51 - inne interfejsy szeregowe
26/30
SPI - pełnodupleksowa magistrala synchroniczna, umożliwiająca dostęp do
specjalizowanych układów peryferyjnych, pamięci konfiguracji, bądź
programowanie mikrokontrolera w układzie.
Obsługiwana poprzez zestaw rejestrów SFR (SPDR, SPSR, SPCR)
Slide 28
MCS51 - inne interfejsy szeregowe
27/30
I2C - półdupleksowa magistrala synchroniczna, umożliwiająca dostęp do
specjalizowanych układów peryferyjnych, pamięci konfiguracji.
Spotykane są 2 warianty:
1. obsługa transmisji całych bajtów (np. rejestry: S1DAT, S1CON,
S1STA i S1ADR w C552)
2. obsługa transmisji pojedynczych bitów (np. rejestry: S1INT, S1BIT
i S1SCS w C524, albo I2CON, I2DAT, I2CFG i I2STA w C751,C752)
Slide 29
MCS51 - inne interfejsy szeregowe
I2C - w C552
28/30
Slide 30
MCS51 - inne interfejsy szeregowe
29/30
Rejestr sterujący:
S1CON CR2 DF ENS1 DE STA DD STO DC
SI DB
AA DA CR1
D9
CR0
CR2,CR1,CR0 - wybór szybkości transmisji:
względem fOSC (1/60 1/120 1/960 1/160 1/192 1/224 1/256) lub 1/8TF1
ENS1 - włączenie portu I2C do pracy
STA - nadaj bit START
STO - nadaj bit STOP
SI - flaga przerwania od portu I2C
AA - wyzerowany wstrzymuje reagowanie na odebrany adres wywołania
D8
0D8h
Slide 31
MCS51 - inne interfejsy szeregowe
30/30
Rejestr stanu:
S1STA
SC4
SC3
SC2
SC1
SC0
0
0
0
0D9h
SA2
SA1
GC
0DBh
SC4,SC3,SC2,SC1,SC0 - bity kodu stanu interfejsu
Rejestr adresu:
S1ADR
SA7
SA6
SA5
SA4
SA3
SA7...SA1 - 7-bitowy adres układu jako portu podrzędnego
GC - ustawiony zezwala na reakcję na adres wywołania ogólnego
Rejestr buforowy danych:
S1DAT
0DAh
MCS51 - wykład 4
Slide 2
Wykład 3
1/30
Porty szeregowe MCS51
Standardowy SIO
Wybrane rozszerzenia i modyfikacje
Slide 3
MCS51 - standardowy SIO
Cechy standardowego SIO:
• możliwość transmisji synchronicznej danych 8-bitowych,
ze stałą prędkością, w półdupleksie;
• możliwość transmisji asynchronicznej danych 8- lub 9-bitowych,
ze stałą lub programowaną prędkością w pełnym dupleksie;
• możliwość transmisji krótszych znaków,
przy odpowiedniej interpretacji programowej;
• pojedyncze rejestry buforujące nadajnik i odbiornik;
• dostęp do danych poprzez rejestr buforowy SBUF;
• sterowanie pracą poprzez rejestr SCON i bit SMOD w rej. PCON;
• możliwość realizacji transmisji wieloprocesorowej;
• indywidualne flagi zakończenia odbioru RI oraz nadawania TI;
• możliwość zgłaszania przerwań jako sumy logicznej RI TI.
2/30
Slide 4
MCS51 - standardowy SIO
3/30
Rejestry sterujące:
SCON SM0 9F SM1 9E SM2 9D REN 9C TB8 9B RB8 9A
TI
99
RI
98
98h
SM0,SM1,SM2 - wybór jednego z trybów pracy:
0 0 0 - tryb 0 - synchroniczny
0 1 0 - tryb 1 - asynchroniczny - szybkość programowalna
0 1 1 - tryb 1 - asynchroniczny z oczekiwaniem na poprawny bit stopu
szybkość programowalna
1 0 0 - tryb 2 - asynchroniczny - stała szybkość
1 0 1 - tryb 2 - asynchroniczny z ignorowaniem odebranej danej,
jeżeli jej 9-ty bit był zerem, stała szybkość
1 1 0 - tryb 3 - asynchroniczny - szybkość programowalna
1 1 1 - tryb 3 - asynchroniczny z ignorowaniem odebranej danej,
jeżeli jej 9-ty bit był zerem, szybkość programowalna
Slide 5
MCS51 - standardowy SIO
4/30
REN - bit włączający odbiornik
TB8 - 9-ty bit danej do wysłania (w trybie 2 lub 3)
RB8 - odebrany 9-ty bit danej (w trybie 2 lub 3)
TI - flaga przerwania od nadajnika, ustawiana po wysłaniu ostatniego bitu,
musi być kasowana programowo
RI - flaga przerwania od odbiornika, ustawiana po odebraniu ostatniego bitu,
musi być kasowana programowo
PCON SMOD
-
-
-
GF1
GF0
PD
IDL
87h
SMOD - bit zdwojenia prędkości pracy portu szeregowego w trybach 1,2 i 3
SBUF
SBUF - rejestr buforowy nadajnika/odbiornika
99h
Slide 6
MCS51 - standardowy SIO
Praca w trybie 0
- synchronicznym
5/30
Slide 7
MCS51 - standardowy SIO
Transmisja w trybie 0 - synchronicznym
6/30
Slide 8
MCS51 - standardowy SIO
Praca w trybie 1
- asynchronicznym 8-bitowym
7/30
Slide 9
MCS51 - standardowy SIO
Transmisja w trybie 1 - asynchronicznym
8/30
Slide 10
MCS51 - standardowy SIO
Praca w trybie 2 i 3
- asynchronicznych 9-bitowych
9/30
Slide 11
MCS51 - standardowy SIO
Transmisja w trybie 2 i 3 - asynchronicznym
10/30
Slide 12
MCS51 - standardowy SIO
11/30
Dostępne szybkości transmisji:
1. tryb synchroniczny:
fB = fOSC/12
2. tryby asynchroniczne 1 i 3:
fB = 2SMODfTF1/32
3. tryb asynchroniczny 2:
fB = 2SMODfOSC/64
Wykorzystując timer/licznik 1 z 8-bitowym z aut. przeładowaniem mamy:
fB = 2SMODfOSC : 12 : 32 : (256-TH1)
Wykorzystując timer/licznik 2 z 16-bitowym przeładowaniem mamy:
fB = fOSC : 32 : (65536-RCAP2)
Slide 13
MCS51 - standardowy SIO
12/30
przykładowe szybkości transmisji i wykorzystanie timera/licznika #1
mod
PORT SZEREGOW Y
szyb ko ść
fO S C
b it
[M H z]
SM OD
T IM E R /L IC Z N IK 1
b it
tryb
stała
C /T
p rzeład o w an ia
0
1M H z
1 2 ,0 00
x
x
x
x
2
3 75 00 0b od
1 2 ,0 00
1
x
x
x
2
1 87 50 0b od
1 2 ,0 00
0
x
x
x
1 ,3
6 25 00 bo d
1 2 ,0 00
1
0
2
0 F Fh
1 ,3
1 92 00 bo d
1 1 ,0 59
1
0
2
0FD h
1 ,3
9 60 0b od
1 1 ,0 59
0
0
2
0FD h
1 ,3
4 80 0b od
1 1 ,0 59
0
0
2
0FAh
1 ,3
2 40 0b od
1 1 ,0 59
0
0
2
0 F 4h
1 ,3
1 20 0b od
1 1 ,0 59
0
0
2
0 E 8h
1 ,3
6 00 bo d
1 1 ,0 59
0
0
2
0D 0h
1 ,3
3 00 bo d
1 1 ,0 59
0
0
2
0A0h
1 ,3
1 37 ,5b od
1 1 ,0 59
0
0
2
1D h
1 ,3
1 10 bo d
6 ,00 0
0
0
2
7 2h
1 ,3
1 10 bo d
1 2 ,0 00
0
0
1
0FEEBh
Slide 14
MCS51 - standardowy SIO
13/30
Dostrojenie do żądanej prędkości transmisji przy odbiorze
Odbiór przy dokładnej fB*:
Odbiór przy zawyżonej fB w odbiorniku (fB > fB*):
Odbiór przy zaniżonej fB w odbiorniku (fB < fB*):
start odbioru
zerowanie dzielnika ‘:16’
- „resynchronizacja”
Warunek poprawnego odbioru:
odczyt poprawny ostatniego bitu (RB8) i STOPU=1
Slide 15
MCS51 - standardowy SIO
14/30
101/fB*
stany podzielnika
‘:16’ przy odczycie
bitu w trybach 1,2 i 3
stan linii RxD
111/fB*
0 1 2 3 4 5
6 7 8 9 A B C D E F
STOP
(11 bit ramki)
0 1 2 3 4 5 6 7 8 9 A B C D E F
(10+6/16)1/fBMAX
0 1 2
3 4
5 6
7 8 9 A B C D
(10+10/16)1/fBMIN
Slide 16
MCS51 - standardowy SIO
15/30
Oszacowanie tolerancji częstotliwości pracy fB odbiornika:
*
f BMAX
fB
(10
10
f BMIN
fB
(10
11
*
fB
)
16
*
fB
6
3,7 %
3, 4 %
10
16
)
166
160
170
176
*
*
f B 1, 037 f B
*
*
f B 0 ,966 f B
Slide 17
MCS51 - standardowy SIO
16/30
Dostrojenie do żądanej prędkości transmisji przy nadawaniu
Nadawanie dokładnie z fB = fB*:
Nadawanie przy zawyżonej fB w nadajniku (fB > fB*):
Nadawanie przy zaniżonej fB w nadajniku (fB < fB*):
start nadawania/odbioru
- „resynchronizacja”
Warunek poprawnego nadawania/odbioru:
odczyt poprawny ostatniego bitu (TB8) i STOPU=1
Slide 18
MCS51 - standardowy SIO
17/30
(10+10/16)1/fB*
stany podzielnika
‘:16’ przy odczycie
bitu w trybach 1,2 i 3
(10+6/16)1/fB*
0 1 2 3 4 5 6 7 8 9 A B C D E F
STOP
stan linii RxD
(11 bit ramki)
0 1 2 3 4 5 6 7 8 9 A B C D E F
111/fBMAX
101/fBMIN
0 1 2
3 4
5 6
7 8 9 A B
Slide 19
MCS51 - standardowy SIO
18/30
Oszacowanie tolerancji częstotliwości pracy fB nadajnika:
f B 11
*
f BMAX
10
10
166
160
f B 1, 037 f B
*
*
16
f B 10
*
f BMIN
10
6
160
166
f B 0 , 964 f B
*
*
16
* 3,7 %
fB fB
3,6 %
Ostrzejsze kryteria narzuca poprawny odbiór i one są decydujące:
* 3, 7 %
fB fB
3, 4 %
Slide 20
MCS51 - standardowy SIO
19/30
Możliwości uzyskania poprawnych wartości fB
2 SMOD f
OSC
TH 1 256 INT
12 32 f
B
fB
*
to leran cja
TH1
SM OD
p rzy f O S C
fB
1 20 0
1 15 9 ...12 44
2 30
0
12M H z
1 20 2
2 40 0
2 31 8 ...24 89
2 43
0
12M H z
2 40 4
4 80 0
4 63 6 ...49 78
2 43
1
12M H z
4 80 8
9 60 0
9 27 4 ...99 55
2 51
1
9M H z
9 37 5
1 92 00
1 85 47 ...1 99 10
2 54
0
15M H z
1 95 31
3 84 00
3 70 94 ...3 98 21
2 55
0
15M H z
3 90 63
Slide 21
MCS51 - standardowy SIO
20/30
Transmisja wieloprocesorowa
RxD TxD
RxD TxD
RxD TxD
C1
C2
Ck
rozproszony system automatyki/pomiarów
• wymiana informacji o procesie;
• koordynacja współpracy;
• synchronizacja procesów;
• gromadzenie pomiarów ...
Slide 22
MCS51 - standardowy SIO
Możliwości portu SIO:
• wyjścia RxD i TxD łączy się na wspólną linię transmisyjną;
• wykorzystanie trybów 2 i 3 z ustawionym bitem SM2 (pozwala on
zaakceptować tylko te odebrane ramki, które mają ustawiony bit RB8);
• zakłada się, że w danej chwili jeden z mikrokontrolerów jest nadrzędny;
• mikrokontroler nadrzędny ma wyzerowany bit SM2;
• w mikrokontrolerach podrzędnych musi być ustawiony bit SM2;
• każdemu mikrokontrolerowi należy przyporządkować indywidualny,
8-bitowy adres;
• dopuszcza się adres ogólny dla transmisji typu rozgłaszanie;
• w procedurach obsługi przerwań od SIO przy RI=1, należy wstawić
sekwencje rozkazów rozpoznające adres wywołania.
21/30
Slide 23
MCS51 - standardowy SIO
Przykładowy algorytm działania:
22/30
1. Procesor nadrzędny wysyła ramkę z adresem indywidualnym lub ogólnym
i ustawionym bitem TB8 - adres ten określa do kogo jest adresowana
następująca po nim transmisja.
2. Wszystkie pozostałe procesory, działając jako podrzędne, mają ustawiony bit
SM2 i odbiorą wysłaną ramkę wywołania - adres wywołania trafi do ich
rejestrów SBUF i ustawią się flagi RI.
3. Uruchomione zostaną procedury obsługi SIO, które w przypadku
przerwania od odbiornika (RI=1) przy ustawionym bicie SM2=1 porównują
bajt z SBUF z przyporządkowanymi adresami indywidualnymi lub ogólnym.
4. Procesor, który stwierdzi zgodność adresu wywołania z własnym,
zeruje swój bit SM2 i kończy procedurę obsługi SIO,
pozostałe procesory kończą obsługę SIO pozostawiając SM2=1.
5. Następuje wymiana informacji pomiędzy procesorem nadrzędnym
a zaadresowanym podrzędnym przy SM2=0 i zerowych bitach TB8/RB8.
SIO pozostałych procesorów ignorują tak przesyłane ramki danych.
6. Po zakończeniu transmisji, procesor podrzędny ponownie ustawia SM2=1.
Slide 24
MCS51 - rozszerzony SIO
23/30
Dostępne funkcje dodatkowe:
1. Sygnalizacja błędnego bitu stopu - brak ‘1’ w chwili spodziewanego
bitu STOP - jest to tzw. błąd ramki, sygnalizowany ustawieniem bitu FE,
który można sprawdzić odczytując bit SM0 w SCON.
2. Automatyczne rozpoznawanie adresów wywołania przy komunikacji
wieloprocesorowej - włączane przez ustawienie bitu SM2;
W trybie 1 SIO analizowane są wszystkie odebrane bajty z poprawnymi
bitami stopu, a w trybach 2 i 3 - tylko te, dla których RB8=1.
Slide 25
MCS51 - rozszerzony SIO
24/30
Flaga RI ustawia się tylko wtedy gdy odebrany bajt jest zgodny
z zaprogramowaną w rejestrach SFR maską adresu.
Pojawiają się 2 rejestry SFR:
SADDR
0A9h
SADEN
0B9h
Odebrany bajt-adres wywołania jest zgodny, jeżeli spełnia równanie:
(odebrany_bajt SADDR) SADEN = 00h
Przykład:
w C1 ustawiono:
SADDR=
11000001
SADEN=
11111110
adres aktywny= 1100000x
w C2 ustawiono:
11000010
11111101
110000x1
Wtedy adres wywołania 11000001 adresuje tylko C1, adres 11000010 - tylko C2,
adres11000000 - oba C, a każdy adres z grupy xxxxxx11 zostanie zignorowany.
Slide 26
MCS51 - dodatkowe SIO
Np. układy Siemensa
Funkcje:
• transmisja tylko asynchroniczna (jak tryby 1,2 i 3 podstawowego SIO);
• własny generator prędkości transmisji;
• analogiczne rejestry obsługujące (S1BUF i S1CON)
25/30
Slide 27
MCS51 - inne interfejsy szeregowe
26/30
SPI - pełnodupleksowa magistrala synchroniczna, umożliwiająca dostęp do
specjalizowanych układów peryferyjnych, pamięci konfiguracji, bądź
programowanie mikrokontrolera w układzie.
Obsługiwana poprzez zestaw rejestrów SFR (SPDR, SPSR, SPCR)
Slide 28
MCS51 - inne interfejsy szeregowe
27/30
I2C - półdupleksowa magistrala synchroniczna, umożliwiająca dostęp do
specjalizowanych układów peryferyjnych, pamięci konfiguracji.
Spotykane są 2 warianty:
1. obsługa transmisji całych bajtów (np. rejestry: S1DAT, S1CON,
S1STA i S1ADR w C552)
2. obsługa transmisji pojedynczych bitów (np. rejestry: S1INT, S1BIT
i S1SCS w C524, albo I2CON, I2DAT, I2CFG i I2STA w C751,C752)
Slide 29
MCS51 - inne interfejsy szeregowe
I2C - w C552
28/30
Slide 30
MCS51 - inne interfejsy szeregowe
29/30
Rejestr sterujący:
S1CON CR2 DF ENS1 DE STA DD STO DC
SI DB
AA DA CR1
D9
CR0
CR2,CR1,CR0 - wybór szybkości transmisji:
względem fOSC (1/60 1/120 1/960 1/160 1/192 1/224 1/256) lub 1/8TF1
ENS1 - włączenie portu I2C do pracy
STA - nadaj bit START
STO - nadaj bit STOP
SI - flaga przerwania od portu I2C
AA - wyzerowany wstrzymuje reagowanie na odebrany adres wywołania
D8
0D8h
Slide 31
MCS51 - inne interfejsy szeregowe
30/30
Rejestr stanu:
S1STA
SC4
SC3
SC2
SC1
SC0
0
0
0
0D9h
SA2
SA1
GC
0DBh
SC4,SC3,SC2,SC1,SC0 - bity kodu stanu interfejsu
Rejestr adresu:
S1ADR
SA7
SA6
SA5
SA4
SA3
SA7...SA1 - 7-bitowy adres układu jako portu podrzędnego
GC - ustawiony zezwala na reakcję na adres wywołania ogólnego
Rejestr buforowy danych:
S1DAT
0DAh