CATEGORII DOCUMENTE |
Comunicatia seriala
Descriere generala
Comunicatiile seriale se utilizeaza pe distante mici de ordinul zecilor de metri cat si pe distante mari (interlocalitati), prin intermediul sistemului telefonic. Transformarea paralel-serie a cuvintelor de date asociate cu transmisia pe o singura linie (in general un singur canal), elimina sarcina dificila a asigurarii la receptie a sincronismului, intre mai multe semnale electronice transmise in paralel pe linii fizic diferite.
Comunicatiile serie in cazul PC-urilor se incadreaza in principiu in modelul general al unei comunicatii de date serie intre doua echipamente de prelucrare a datelor (terminale, calculatoare). O astfel de comunicatie este formata din urmatoarele componente :
- echipamente terminale (mC, calculator, terminal de date, etc) sunt surse si/sau destinatii ale datelor. Ele sunt interfatate paralel cu unitatile de comunicatii serie
- unitatile de comunicatie serie (numite si controlere de comunicatie sau interfete de comunicatie cu functiuni de control al comunicatiei. In principal, unitatea serie executa conversia paralel-serie si serie-paralel de la si catre mprocesor. In plus tot la acest nivel se executa si detectia si corectia erorilor
- echipamente de adaptare electrica (ETCD - echipament terminal pentru comunicatii de date) cu linia fizica (canalul) pe care se realizeaza legatura, numite in general modem-uri. In cazul in care mediul de transmisie este analogic, modemul executa conversia digital/analogica si cea inversa si modularea/demodularea unui semnal purtator, corespunzator cu largimea de banda a canalului utilizat si a vitezei de transmisie
- linia de comunicatie, reprezinta mediul fizic prin care se face comunicatia. In practica aceasta 'linie' poate lua o diversitate de forme (linii fizice dedicate, linii telefonice din reteaua telefonica publica, canale din sisteme mutiplex cu diviziune in frecventa sau in timp)
Comunicatiile de date sunt subiectul a numeroase standardizari internationale. In aceste standardizari, unitatea de prelucrare si cea de comunicatie serie formeaza impreuna echipamentul terminal de prelucrare a datelor (EPTD), vazut dinspre ETCD (modem) printr-o interfata mecanica si electrica standard de comunicatie serie care asigura compatibilitatea diverselor ETPD si ETCD.
Circuitul de date este portiunea cuprinsa intre doua ETPD. El asigura comunicatia serie a datelor la nivelul ETPD, fara ca ETPD sa fie nevoit sa 'cunoasca' detaliile implementarii legaturii fizice pe linie. Se observa ca in cazuri particulare, cele doua ETPD pot fi legate direct prin linii fizice cu cuplaj in curent continuu pe distante de ordinul zecilor de metri, caz in care circuitul de date degenereaza in aceasta linie. Citeva exemple tipice sunt: conectarea unui terminal de tip consola printr-o legatura serie cu un mC sau conectarea serie a doua mC aflate la o distanta relativ mica.
Legatura de date include circuitul de date si unitatile de comunicatie serie. La nivelul acesteia, protocoalele de date asigura stabilirea, mentinerea, asigurarea corectitudinii mesajelor transmise si deconectarea legaturii intre doua statii de date. Prelucrarile implicate de realizarea protocoalelor sunt de nivel logic si nu electric. In afara canalului principal de transmisie, poate exista si un canal secundar de intoarcere, utilizat pentru confirmari de receptie.
Parmetrii legaturii de date in serie
Debitul binar (viteza de transmisie) = numarul maxim de simboluri binare transmise pe secunda:
D=1/T [biti/s]
unde T este perioada de timp alocata transmisiei unui nivel logic 1 sau 0 (asa numita perioada de 'bit').
Viteza reala efectiva de transmisie a datelor este inferioara lui D deoarece:
- in afara informatiei propriu-zise, exista portiuni redundante ale mesajelor (identificatori, comenzi, biti pentru detectia si corectia erorilor etc.)
- in mai multe cazuri transmisia este de tip asincron, caz in care in interiorul unui mesaj exista 'pauze variabile' care nu poarta informatie
- in cazul aparitiei erorilor se procedeaza de obicei (la nivelul legaturii de date) la retransmiterea mesajelor eronate, ceea ce conduce la micsorarea vitezei efective
Viteza de modulatie = numarul de schimbari pe secunda a starii electrice la iesirea modemului (inversul intervalului de modulatie) si se masoara in bauds :
V(m)=1/ [bauds]
Relatia intre D si V(m) este:
D=V(m) log2n [biti/s]
unde n este numarul starilor electrice utilizate in modem.
Vitezele si debitele standardizate pe plan international sunt: 75,150, 300, 600, 1200, 2400, 4800, 9600, 19200. Vitezele mai mari pot ajunge la 14400, 28800, 38400, 57600, 96000, 115200.
Codurile utilizate in comunicatii de date
In comunicatia de date, informatia se transmite sub forma de caracter, un caracter reprezentind litere, cifre, semn speciale, sau informatii pentru comanda comunicatiei (caractere neafisabile). In functie de codul utilizat, un caracter se reprezinta prin 5 pina la 8 biti.
Codurile mai utilizate sunt:
- codul Baudot (CCITT nr.2 sau AI nr.2), sau codul CCITT nr.2. Este utilizat pentru transmisiile telegrafice cu viteze mici pe retelele telegrafice comutate (TELEX), avand 5 biti/caracter (32-combinatii)
- codul CCITT NR.5 (ASCII) cu 7 biti/caracter (128-combinatii)
- codul BCD cu lungimea de 7 biti (6 biti plus un bit pentru paritate). Acest cod permite obtinerea a 64 combinatii de cod distincte pentru reprezentarea informatiei vehiculate pe canal si a fost utilizat in sistemele de calcul de generatia a 2-a
- codul EBCDIC cu 8 biti/caracter, ce constituie o extindere a codului BCD, neavind control al paritatii, oferind 256 de combinatii
Blocul reprezinta un ansamblu de biti, caractere sau cuvinte (cuvant este un octet - byte sau multioctet de date, in general egal ca dimensiune cu cuvintul de date al UCP).
Mesajul reprezinta o succesiune de unul sau mai multe blocuri, incadrate de delimitatori.
Detectia si corectia erorilor
Problema esentiala in comunicatia de date, detectia si corectia erorilor se face la nivelul functional al legaturii de date. Metoda general utilizata care permite detectarea erorilor este adaugarea la transmisie a informatiei de control (redundanta), aflata in corespondenta stricta cu continutul informational propriu-zis al mesajului. Acest lucru permite efctuarea la receptie a unor verificari asupra corectitudinii elementului protejat (caracter, mesaj, bloc).
Metodele de protejare mai uzuale sunt urmatoarele :
- verificarea de tip vertical (VRC=Vertical Redundancy Check), in care fiecare caracter este prevazut la transmisie cu un bit suplimentar de paritate. Acesta asigura o anumita paritate fixata (para sau impara) a caracterului completat, verificabila la receptie
- verificarea longitudinala (LRC=Longitudinal Redundancy Check) in care se adauga la sfirsitul unui bloc un caracter reprezentind suma modulo doi a tuturor caracterelor din bloc
- utilizarea codurilor detectoare si corectarea de erori. De obicei sunt utilizate coduri ciclice, cu polinoame generatoare standardizate (CRC-Cyclic Redundancy Check)
Corectarea erorilor detectate se poate face automat (daca codul utilizat este si corector) sau prin retransmiterea mesajului (blocului) eronat. Corectia prin retransmitere este de trei tipuri :
- cu oprire si asteptare ARQ-ACK (Automatic ReQuest for Repeat-ACKnowledge) in care transmitatorul transmite blocul n de informatie si asteapta apoi semnal de confirmare. In cazul confirmarii pozitive (ACK) se transmite blocul n1 iar in caz contrar, se transmite blocul n
- cu transmisie continua (ARQ-NACK) - in care transmitatorul transmite continuu blocurile n, n1, n2, fara a astepta semnalul de confirmare pozitiva (ACK). Daca se primeste o confirmare negativa (NACK) de la receptor, atunci se reia transmisia incepind de la blocul receptionat eronat de catre corespondent
- cu transmitere selectiva - asemanatoare cu ARQ-NACK, cu deosebire ca se retransmite doar blocul eronat.
Transmisia asincrona si transmisia sincrona
O legatura de date poate fi utilizata in trei moduri :
- simplex - transmisie intr-o singura directie
- semi-duplex - transmisie in ambele sensuri dar succesiv
- duplex - transmisie simultana in ambele sensuri.
Modul de utilizare depinde de implementarea fizica a circuitului de date si de protocolul de date folosit. Citirea si interpretarea corecta a datelor receptionate de catre unitatea de comunicatie serie presupune o sincronizare intre transmitator si receptor. Exista doua tipuri de transmisii (referitor la sincronizare) : asincrona si sincrona.
Transmisia asincrona (START-STOP)
In transmisia asincrona, caracterele se transmit ca entitati distincte delimitate de bitul de START (nivel'0') si debitul (sau bitii) de STOP (nivel '1') ca in fig 1 :
fig 1 - caracter in transmisie seriala
Intervalul dintre doua caractere poate fi oarecare, linia fiind mentinuta in acest caz pe nivelul electric corespunzator situatiei de repaus ('1' logic). Lungimea unui caracter variaza in functie de codul folosit, intre 5 si 8 biti/caracter. Durata (minima) a STOP-ului este T, 2T sau 1,5T (valori standard).
Receptorul trebuie sa cunoasca: viteza de transmisie (1/T), numarul de biti/caracter si daca exista sau nu bit de paritate si tipul acestuia, durata STOP-ului. Receptia unui caracter este declansata de frontul anterior negativ al bitului de START. Receptorul porneste o baza de timp locala, decalata cu T/2 fata de frontul de lucru negativ al START-ului si care furnizeaza momentele de esantionare a bitilor caracterului. Receptia unui caracter se termina dupa achizitionarea tuturor bitilor acestuia. Procesul se repeta caracater cu caracter.
Transmisiunile de tip asincron se utilizeaza curent pentru viteze mici ( 1200 biti/s), in legaturile de date prin modem-uri. Pentru legaturi directe, binare pe distante mici se pot utiliza si viteze mai mari: 2400, 4800, 9600 si valori foarte mari dar care nu sunt garantate si nici documentate: peste 9600: 19200, 28800, 38400, 57600, 115200.
Transmisia sincrona
Transmisia sincrona se utilizeaza pe legaturile de date de viteza mare, fiind preferata datorita eficientei (majoritatea protocoalelor de date sunt construite pentru transmisii sincrone). Informatia este transmisa sub forma de blocuri de caractere sau biti (102-105 biti) succesivi (fara biti de START si STOP intre caractere), incadrate de caractere speciale de sincronizare, delimitare si comanda.
In receptorul sincron exista trei nivele de sincronizare:
- sincronizarea pe bit, obtinuta prin bucle cu calare de faza (PLL) pe baza tranzitiilor existente in semnalul receptionat
- sincronizarea pe caracter realizata prin recunoasterea a unul sau doua caractere de fazare (numite caractere SYN ). Receptorul sesizeaza caracterele SYN si isi fazeaza logica sa recunoasca prin numararea bitilor, inceputul si sfarsitul fiecaruia dintre caracterele urmatoare. Pentru a asigura mentinerea sincronizarii, se insereaza caractere SYN suplimentare in mesajul transmis, la intervale de una sau doua secunde. Daca recptorul nu mai receptioneaza corect SYN (intr-un interval limitat de timp), el rejecteaza mesajul si reincepe cautarea lui SYN
- sincronizarea de bloc sau mesaj dependenta de protocolul de date (DLC=Data Link Control) folosit
Numarul de statii de date interconectate printr-un canal de telecomunicatii poate fi de doua feluri (legaturi point-to-point) sau mai mult de doua (legaturi multipoint), acest numar avand implicatii asupra procedurilor de exploatare (adresare, explorare).
Protocoale de date
Functiunile de baza ale unui protocol de date denumit pe scurt DLC (Data Link Control) sunt :
- stabilirea si intreruperea legaturii intre doua statii
- asigurarea integritatii mesajelor prin detectia erorilor, cerere de retransmisie si
confirmari de receptie (pozitive sau negative)
- identificarea transmitatorului si receptorului prin explorare si selectie
- asigurarea umor functii de comanda speciale, cum ar fi : cererea transmiterii
starii, resetarea unei statii, confirmarea resetarii, start, confirmarea startului, deconectare
In cadrul modelului arhitectural al comunicatiei de date, DLC se gaseste pe nivelul 2. Clasificarea protocoalelor de date se face in principal dupa modul cum raspund la sincronizare. Exista protocoale orientate pe caracter (BCP - Byte Control Protocols) si protocoale orienrate pe bit (BOP - Bit Oriented Protocol).
Protocolul BCP
Mesajul consta intr-or succesiune de octeti, delimitati printr-o secventa de sincronizare (doua sau mai multe caractere SYN). Mesajul propriu-zis estecompus din unul sau mai multe blocuri. Pentru functionarea corecta. a legaturii de sunt prevazute caractere de comanda care fac parte din codul utilizat (ASCII, EBCDIC, etc). Un bloc se compune dintr-un camp de comanda (header), un cimp de text si un cimp pentru detectarea erorilor (LRC sau CRC ). Exemple de caractere de comanda sunt : SOH (Start of Header), STX (Start of TeXt), ETB (End of Intemediate Transmission Block), ETX (End of TeXt), EOT (End Of Trasmission).
Protocolul BOP
In acest protocol unitatea de transmisie este cadrul, delimitat de doua flaguri (01111110). In interiorul unui cadru se gasesc : cimpurile de comanda, de informatie, de detectare a erorilor. In aceste protocoale, mesajul propriu-zis este tratat ca o succesiune de biti situata intre cele doua flaguri. Protocoalele BOP sunt mai flexibile decat BCP in asigurarea "transparentei" (transparenta=posibilitatea de a transmite si caractere de comanda in interiorul blocului de informatie, fara ca acestea sa fie interpretate la receptie drept comenzi ). Exemple de protocoale BOP : SDLC (Synchronous Data Link Control), HDLC (High Level Data Link Control-ISO), ADCCP (Advanced Data Communication Control Procedure-ANSII), etc.
Circuite specializate pentru comunicatia serie
Comunicatia serie in PC-uri este realizata de catre circuite programabile specializate, care comunica paralel cu UC si serie cu exteriorul. Circuitele specializate pentru comunicatia serie (numite si intefete de comunicatie serie) se intalnesc in practici in doua variante :
- circuite transmitator-receptor asincron (UART=Universal Asincron Receiver/Transmitter) sau transmitator/receptor asinancron (USART - permite si realizarea sincronizarii in cazul protocoalelor sincrone)
- circuite transmitator/receptor si realizare a functiilor protocoalelor de date. Avantajul acestei specializari este eliberarea UC de efectuarea sarcinilor privitoare la protocolul de date.
Strutura unui transmitator/receptor elementar (T/R)
Functiile de baza ale T/R sunt conversia serie/paralel la receptie si paralel/serie la transmisie.
Transmitatorul (T) contine un registru paralel in care primeste un cuvant in mod paralel de la UC. Codul paralel se transfera in registrul de deplasare pentru conversia paralel/serie, generandu-se semnalul serie pe o iesire notata TxD, la momente de timp furnizate de un semnal de tact pentru transmisie notat TxC. Acest ceas poate fi primit din exterior (modem) sau este obtinut prin divizarea ceasului sistemului. In functie de modul de lucru, asincron sau sincron, logica de comanda adauga bitii de START, paritate, STOP (pentru asincron) sau caracterele de sincronizare, LRC, CRC, SYN (pentru sincron). Programarea transmitatorului implica setarea registrilor logicii de comanda (porturi), prin cuvinte de mod si comanda prin care se stabilesc caracteristicile functionale ale circuitului. Transmitatorul poate fi controlat prin cuvantul de stare. Acesta este reprezentat. pe acest model de semnalele TxRDY (TxRDY=1, cand buferul de transmisie este vid, deci poate primi un nou caracter) si TxE (TxE=1, cand convertorul paralel - serie este vid deci s-a terminat transmisia efectiva a caracterului). Informatiile datorate acestor biti se pot obtine :
- citirea cuvantului de stare al transmitatorului
- intreruperi generate de semnalele electrice asociate la TxRDY si TxE
Receptorul (R) contine un caracter serie - paralel in care se achizitioneaza in mod serie bitii semnalului pe intrarea RxD, la esantionarea cu ceasul RxC. Dupa terminarea receptiei unui caracter, acesta este transferat in buferul de receptie. Acest lucru este reflectat prin setarea RxRDY=1. Se poate citi un cuvant de stare sau se genereaza o intrerupere. Cuvantul de stare poate contine si alte informatii legate de receptie.De exemplu, pentru modul de lucru asincron, cuvantul de stare contine in mod tipic urmatorii biti indicatori : eroare de paritate, eroare de receptionare a bitului de STOP (daca este un o in loc de 1), eroare de suprapunere (overrun), cand un caracter a fost receptionat si transferat de receptor in buffer peste cel precedent.
Programarea receptorului (la fel si a transmitatorului) se face prin scrierea in registrele logicii de comanda a cuvintelor de mod si de comanda corespunzatoare modului si parametrilor de lucru doriti.
Porturi seriale intr-un PC
Intr-un PC se pot gasi pana la 4 porturi seriale, adresabile prin servicii BIOS sau DOS. Pentru BIOS primul port serial este 0, urmatorul este 1, etc. Pentru DOS primul port serial este COM1, al doilea este COM2, etc. In modul de functionare sincrona se presupune sincronizarea ca operatie prealabila receptionarii sirului de caractere ce constitue mesajul. Circuitul intra in modul 'cautare' (HUNT) in care bitii receptionati pe linia RxD sunt inscriti unul cate unul in tamponul datelor receptionate. Dupa fiecare bit anscris are loc compararea intre continutul acestui tampon si continutul unui registru incarcat prin program cu caracterul de sincronizare. Cand cele doua registre au continuturi diferite, se asteapta receptionarea bitului urmator si operatia continua astfel pana ce tamponul datelor receptionate contine caracterul SYN. Daca protocolul de comunicatie prevede sincronizarea cu un singur SYN, circuitul iese din modul HUNT si SYNDET=1. Trebuie remarcata necesitatea ca cele doua caractere sa fie caractere succesive, fara biti sau caractere straine intercalate intre ele. Intrarea in modul 'cautare' se face in urma initializarii functionarii sau in urma conmenzii prin program a acestui regim. In modul asincron sunt adaugati bitii de START, de paritate (daca este cazul) si bitul (bitii) de STOP. In acest mod un semnal de 0 pe linia RxDpoate semnifica un bit de START. Daca linia este gasita in starea 0, se trece la receptia caracterului, constand din biti de paritate si bit (biti) de STOP. Cand intreg caracterul a fost receptionat, linia RxRDY indica disponibilitatea acestuia in tamponul datelor receptionate.
In conformitate cu specificatiile CCITT V.24 respectiv EIA RS 232-C nivele electrice corespunzand nivelelor logice pentru interfata seriala sunt :
- pentru '0' logic : +3 - +12V
- pentru "1" logic : -3 - -12V
Programarea interfetei seriale
Interfata seriala poate fi programata in trei moduri :
- servicii DOS
- servicii BIOS
- programarea directa a interfetei seriale prin controlul registrilor
Programarea prin intermediul serviciilor DOS se face folosind functia 0x4b cu INT 21h. Programarea prin servicii BIOS permite o viteza maxima de 9600 bauds, dupa care se pot pierde caractere. Acest fapt se datoreaza modului cum se desfasoara comunicatia in PC (de exemplu, la afisare se face si scroll al ecranului care consuma timp).
Serviciul 0, INT 14H
Acest serviciu seteaza parametrii de comunicatie : viteza de transmisie, paritatea, numarul de biti de stop si lungimea cuvantului. Paramatrii sunt introdusi in registrul AL :
Dupa executie intreruperea este dezactivata si registrul AX contine informatii ce vor fi descrise la serviciul 3.
Serviciul 1, INT 14H
Acest serviciu este utilizat pentru transmisia unui caracter. Caracterul ce urmeaza a fi transmis este incarcat in registrul AL, DX este incarcat cu numarul portului utilizat (este valabil pentru toate serviciile). Dupa transmisie, registrul AH contine informatii despre cum s-a transmis caracterul : daca bitul 7 este setat inseamna ca nu s-a putut transmite octetul. In caz contrar registrul contine primii 7 biti de stare (fara bitul de Time-out error).
Serviciul 2, INT 14H
Cu acest serviciu se face receptia unui caracter in registrul AL. Daca bitul 7 al registrului AH este setat inseamna ca receptia a esuat. In caz contrar, bitii 4, 3, 2,1 sunt bitiicorespunzatori ai registrului de stare.
Serviciul 2, INT 14H
Acest serviciu returneaza
starea portului serial. Registrul AH raporteaza starea liniei de comunicatie,
iar registrul
Registrul AH (comanda liniei) |
Registrul AL (comanda modemului) |
bit 7 = time-out error |
received line signal detect |
bit 6 = transmitter shift register empty |
ring indicator |
bit 5 = transmitter holding register empty |
data set ready |
bit 4 = break detect |
clear to send |
bit 3 = framing error |
delta receive line signal detect |
bit 2 = parity error |
trailer edge ring detector |
bit 1 = oevrrun error |
delta data set ready |
bit 0 = data ready |
delta clear to send |
Programarea directa a interfetei seriale
Interfata seriala este vazuta de programatori ca fiind compusa din 10 registri accesibili ca porturi de intrare sau iesire. Registrii sunt prezentati in continuare :
nume |
abreviere |
adresa |
in/out |
transmitter holding register |
THR |
xF8h |
out |
receiver data register |
RDR |
xF8h |
in |
baud rate divisor (LSB) |
BRD (LSB) |
xF8h |
out |
baud rate divisor (MSB) |
BRD (MSB) |
xF9h |
out |
interrupt enable register |
IFR |
xF9h |
out |
interrupt ID register |
IIR |
xFAh |
in |
line control register |
LCR |
xFBh |
out |
modem control register |
MCR |
xFCh |
out |
line status register |
LSR |
xFDh |
in |
modem status register |
MSR |
xFEh |
in |
Se observa ca prima litera de la adresa este notata cu x. Ea va fi inlocuita cu cifra corespunzatoare portului serial pe care se doreste a se face comunicatia. Astfel, daca se utilizeaza COM1, cifra va fi '3', iar daca se foloseste COM2, cifra va fi '2'. Adresa cartelei seriale se afla in zona de date BIOS la adresa 0040:0000H. La offseturile 0002H, 0004H si 0006H se afla adresele celor trei cartele ce pot exista in sistem. Recomandarea este ca dupa fiecare citire/scriere din/in port sa se faca o mica bucla de intarziere. Intreruperile hard generate la receptia/transmisia unui caracter sunt : 0x0C pentru COM1 si 0x0B pentru COM2, respectiv IRQ4 si IRQ3.
Registrul THR (xF8h)
Contine caracterul ce va fi transmis. Primul bit transmis este 0.
Registrul RDR (xF8h)
Este buferul in care se va regasi caracterul receptionat
Registrul LSB (xF8h) si MSB (xF9h)
Pentru a accesa aceste registre trebuie ca bitul 7 al registrului LCR sa fie setat. Aceste registre folosesc la programarea ratei de divizare, deci a vitezei de transmisie.
viteza |
MSB (hexa) |
LSB (hexa) |
C0 |
||
0C |
||
Se observa ca multe din aceste rate nu sunt accesibile BIOS-ului.
Registrul IER (xF9h)
Controllerul I8259 permite ca numai patru intreruperi sa fie activate sau dezactivate in mod independent. Intreruperile ce pot fi setate respectiv resetate in acest registru sunt codate in primii patru biti ai registrului.
schimbare in starea modemului
Prin setarea bitului corespunzator se activeaza intreruperea, iar prin resetare se dezactiveaza. Pentru a avea acces la acest registru trebuie ca bitul 7 (DLAB) LCR sa fie resetat.
Registrul.IIR (xFAh)
Pot fi programate patru tipuri de intreruperi prin registrul IER. Daca mai mult decat una a fost activata, rutina de intrerupere trebuie sa stie datorita carei cauze s-a produs si sa actioneze in consecinta. Daca numai o singura intrerupere este activa, atunci acest lucru nu mai este necesar. Bitii 1 si 2 codeaza tipul de intrerupere pe baza de prioritate
bit 2 |
bit 1 |
nivel prioritate |
tipul intreruperii si cum se reseteaza |
activata prin setarea bitului 2 din IER, semnifica eroare de overrun, paritate sau framing. Se reseteaza prin citirea LSR (xFDh) |
|||
activata prin setarea bitului 0 din IER. Semnifica caracter receptionat. Se reseteaza prin citirea RDR |
|||
activata prin citirea bitului 1 din IER. Semnifica caracter receptionat. Se reseteaza prin citirea RDR |
|||
activata prin setarea bitului 3 din IER. Semnifica starea modemului schimbata. Se reseteaza prin citirea RDR |
Registrul LCR (xFBh)
Acest registru programeaza parametrii transmisiei
Registrul MCR (xFCh)
Acest registru permite setarea unui protocol de comunicatie cu un dispozitiv extern (modem). Bitul 0 controleaza semnalul Dtata Terminal Ready (active pe 1). Bitul 1 controleaza semnalul Request To Send. Bitul 3 controleaza semnalul 2 de la iesire (TxD). Acesta permite intreruperii generate de interfata sa fie plasata pe bus-ul sistem pentru a fi receptionata de controllerul de intrerupere. Bitul 4 permite realizarea unei bucle de testare pentru verificarea corectitudinii unei portiuni din programul de comunicatie seriala. Initializarea obisnuita a acestui registru arata astfel :
DTR
si DSR active pentru comunicatie in sisteme cu sau fara modem. Nu sunt active
intreruperile DTR si RTS active
utilizand intreruperi
Registrul LSR (xFDh)
Acesta este registrul de stare. El contine informatii privitoare la transferul de date. Bitul 0 semnifica Data Ready, deci caracterul a fost receptionat. Registrul este resetat prin citirea caracterului din portul xFBh. Bitul 1 este pentru eroare de overrun, bitul 2 pentru eroare de framing iar bitul 4 pentru eroare de intrerupere BREAK. Citirea registrului LSR reseteaza bitii de eroare. Bitul 5 arata ca registrul de transmisie este gata sa primeasca un nou caracter. Bitul 6 arata acelasi lucru si suplimentar ca si registrul de deplasare este gol. Bitul 7 este nefolosit (=0).
Registrul MSR (xFEh)
Acest registru contine informatii cu privire la starea liniilor modemului. Patru din biti sunt setati daca linia de intrare a interfetei si-a schimbat starea de la ultima citire a registrului de stare.
Data Carrier Detect (DCD
- schimbare de stare) Trailing Edge Ring (RI -
schimbare de stare) Data Set Ready (DSR -
schimbare de stare) Clear To
Send (CTS - schimbare de stare) Data Carrier Detect Trailing Edge Ring Data Set Ready Clear To
Send
Probleme
1. Analizati programele din fisierul seriala.c. Primul program permite interconectare intre doua calculatoare pe seriala prin COM2, al doilea implementeaza protocolul XON-XOFF, al treilea corupe intreruperea de ceas, receptie pe seriala si tastatura iar al patrulea permite comunicarea prin programarea directa a porturilor.
2. Construiti un program mai amplu ce permite un transfer de fisiere si programarea flexibila a serialei din meniu.
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 1337
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved