110 likes | 225 Views
S ériová komunikácia. Y. 1. 0. Start. Stop. 1. 0. 1. 0. 0. 1. 0. 1. D7. D6. D5. D4. D3. D2. D1. D0. t. Znak 8-bit. Vlastnosti sériového kanálu (UART). UART – Universal Asynchro Receiver-Transceiver Je plne duplexný, t.j. môže súčasne vysielať i prijímať dáta
E N D
Sériová komunikácia Y 1 0 Start Stop 1 0 1 0 0 1 0 1 D7 D6 D5 D4 D3 D2 D1 D0 t Znak 8-bit
Vlastnosti sériového kanálu (UART) • UART – Universal Asynchro Receiver-Transceiver • Je plne duplexný, t.j. môže súčasne vysielať i prijímať dáta • Umožňuje to samostatný register vysielača a register prijímača (SBUF – Serial Buffer) • Vysielací a prijímací register ( SBUF ) má rovnakú adresu (99h – oblasť SFR) • Bajt dát pre vysielanie sa zapisuje do SBUF registra vysielača signálom Write • Prijatý bajt dát sa číta z SBUF registra prijímača signálom Read • Môže pracovať v 4 módoch činnosti : mod0 – mod3
D7 D6 D5 D4 D3 D2 D1 D0 TL1 TF1 Timer T1 Mod 2 TH1 D7 D6 D5 D4 D3 D2 D1 D0 Zloženie sériového kanálu ( UART ) Procesor 12 MHz Read Write OSC DATA 8 bit : 12 Vysielač SBUF vysielača CLK 1 MHz Nastavenie časovača T1 CLK SBUF prijímača Sériový kanál Prijímač AT89C2051 RxD(P3.0) TxD(P3.1) S 1 0 1 0 0 1 0 1 S D0 D7 D6 D5 D4 D3 D2 D1
Vlastnosti sériového kanálu (UART) • Mod1 – ide o 8-bitový UART s voliteľnou prenosovou rýchlosťou, t.j. dáta sa prenášajú systémom : štart-bit, 8 dátových bitov, stop-bit • Registre zodpovedné za sériový prenos : - SCON (Serial Control Register) - SBUF (Serial Buffer – pre čítanie prijatých dát - pre zápis dát určených na vyslanie - PCON (obsahuje bit SMOD, určujúci prenosovú rýchlosť) - TH1 (horný register čítača T1, tiež určuje prenosovú rýchlosť) • TH1 – časovač T1 nastavený v mod2, s automatickou predvoľbou, zakázané prerušenie od časovača T1
Vlastnosti sériového kanálu (UART) SCON – Serial Control Register • SM0,SM1 - 00 mod0 používa sa málokedy • 01 mod1 8-bit UART s voliteľnou rýchlosťou • 10 mod2 9-bit UART s pevnou rýchlosťou • 11 mod3 9-bit UART s voliteľnou rýchlosťou • SM2 – povolenie multiprocesorovej komunikácie ( v mode 2,3 ) • REN – Receive Enable ( povolenie prijímania softverovo ) • TB8 – deviaty vysielaný bit ( v mode 2,3 ) • RB8 – deviaty prijímaný bit ( v mode 2,3 ) • TI – príznak prerušenia pri vysielaní ( znak bol úspešne vyslaný ) • RI – príznak prerušenia pri prijímaní ( ak je prijatý nový znak )
Algoritmus sériovej komunikácie (1) • Sériové vysielanie - nastaviť mód sériového prenosu a prenosovú rýchlosť - zápis dát do SBUF vysielača - čakať, pokiaľ príznak. bit TI nabehne do LOG1 (dáta vyslané) - vynulovať príznakový bit TI, aby bolo možné vyslať ďalší znak • Sériové prijímanie - nastaviť mód sériového prenosu a prenosovú rýchlosť - povoliť sériový príjem ( nastaviť bit REN = 1 ) - čakať, pokiaľ príznak. bit RI nabehne do LOG1 (dáta boli prijaté) - prečítať ( vybrať ) dáta z SBUF prijímača na ďalšie spracovanie - vynulovať príznakový bit RI, aby bolo možné prijať ďalší znak
Algoritmus sériovej komunikácie (2) Využitie prerušenia od sériového kanálu • Pri vzniku prerušenia od sériového kanálu procesor odskakuje na vektorovú adresu 0023h, kde je umiestnený obslužný podprogram • Pri vzniku prerušenia sa nevie, či k prerušeniu došlo v súvislosti s vyslaním znaku alebo prijatím znaku • Preto je pri obsluhe prerušenia nutné otestovať príznakové bity TI, resp RI, aby bolo možné vykonať správnu časť obslužného podprogramu. • Ak TI=1 ... vznik prerušenia od vysielača sér. kanálu • Ak RI=1 ... vznik prerušenia od prijímača sér. kanálu • Po identifikácii zdroja prerušenia je nutné vynulovať tieto príznakové bity
Prepojenie sériovou komunikáciou Podmienky nadviazania komunikácie • zvolený rovnaký mód sériovej komunikácie • nastavená rovnaká prenosová rýchlosť • krížové prepojenie vysielača jedného uP s prijímačom druhého uP
Program na vyslanie jedného znakuPri stlačení tlačidla dôjde ku vyslaniu znaku rýchlosťou 2400 Bd • $mod51 • Znak EQU 88h ; kod znaku " A " • org 0000h • ajmp Start ; skok na zaciatok hlavneho programu • org 0003h ; obsluha prerusenia INT0 • mov SBUF,B ; presun znaku do bufra vysielaca • reti • org 0050h ; Zaciatokhlavneho programu • Start: mov SCON,#01000010b ; ser.kanal,mod1, povolenie vysielania • mov TMOD,#00100000b ; casovac T1,mod2, softstart (Gate=0) • mov TH1,#0f3h ; prednastavenie T1, 2400 Bd • mov TCON,#01000000b ; start casovaca ( hodinovy signal vysielaca) • mov IE,#10000001b ; povolenie prerusenia INT0 • setb IT0 ; reakcia na zostupnu hranu • mov B,#Znak ; znak na vyslanie • Slucka: sjmp Slucka ; cakanie na prikaz vysielania • end
Program na príjem jedného znakuPríklad na príjem jedného znaku s využitím prerušenia sériového kanálu • $mod51 • org 0000h ; Zaciatok hlavneho programu • mov SCON,#01010000b ; ser.kanal, mod1, povolenie prijmu • mov TMOD,#00100000b ; volba casovac T1,mod2, softstart(Gate=0) • mov TH1,#0f3h ; prednastavenie T1, 2400 Bd • mov TCON,#01000000b ; start casovaca T1 • mov IE,#10010000b ; povolenie prerusenia ser.kanalu • mov P1,#0ffh ; zhasnutie displeja • Slucka: sjmp Slucka ; cakacia slucka • org 0023h ; obsluha prerusenia ser.kanalu • mov P1,SBUF ; zobrazenie prijateho znaku na displeji • clr RI ; nulovanie priznaku prijmu • reti • end
Procesor 12 MHz Read Write OSC DATA 8 bit : 12 Vysielač SBUF vysielača D7 D6 D5 D4 D3 D2 D1 D0 CLK 1 MHz TL1 TF1 Timer T1 Mod 2 TH1 CLK SBUF prijímača D7 D6 D5 D4 D3 D2 D1 D0 S 1 0 1 0 0 1 0 1 S Sériový kanál Prijímač D0 D7 D6 D5 D4 D3 D2 D1 AT89C2051- µP 1 RxD(P3.0) TxD(P3.1)