MCS51 - standardowy SIO 2/30

Download Report

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 = 2SMODfTF1/32

3. tryb asynchroniczny 2:

fB = 2SMODfOSC/64

Wykorzystując timer/licznik 1 z 8-bitowym z aut. przeładowaniem mamy:
fB = 2SMODfOSC : 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

101/fB*
stany podzielnika
‘:16’ przy odczycie
bitu w trybach 1,2 i 3
stan linii RxD

111/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

111/fBMAX

101/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