Você está na página 1de 6

Apuntes de Microprocesadores.

Clase 21
Comunicacin Serial con el PIC16F877 La USART en modo asncrono contiene los siguientes elementos: Circuito de Muestreo Generador de Baudios Transmisor Asncrono Receptor Asncrono

El Circuito de muestreo funciona sobre el m dulo de recepci n! en el terminal RC"#R$#%T& 'l muestrea tres (eces el (alor por all recibido para decidir por ma)ora cual es su (alor real& El Generador de Baudios *ara el protocolo asncrono RS-+,+C! la frecuencia en baudios -bits por segundo. a la /ue se reali0a la transferencia se debe efectuar a un (alor normali0ado: ,,1! 211! 3+11! +411! 4511! 6211! 36+11! ,5411! etc& *ara generar esta frecuencia! el USART dispone de un generador de frecuencia en Baudios! BRG! cu)o (alor es controlado por el contenido grabado en el registro S*BRG -667.& Aparte del (alor $ cargado en el registro S*BRG! la frecuencia en baudios del generador depende del bit BRG7 del registro T$STA 8+9& :n el caso de /ue BRG7 ; 1 se traba<a en ba<a (elocidad ) si BRG7 ; 3 se traba<a en alta (elocidad& Seg=n este bit se obtendr> el (alor de una constante ? necesaria en la determinaci n de la frecuencia de funcionamiento& Tabla I Seleccin de +elocidad de transmisin a tra+,s del bit B-G&

Fuente( )ata S*eet del PIC16F877

Freq -baudios . =

Fosc - K @- X + 3..

-3.

:n la ecuaci n 3 ) en la Tabla A! $! es el (alor cargado en el registro S*BRG -667.& ?;24 si se traba<a a ba<a (elocidad -BRG;1. o ?;32 si se traba<a a alta (elocidad -BRG7;3.& Tabla II A!uste de la rata de transmisin en modo asincrnico" con oscilador de #$ %&'

BRG;3 BRG;1 Fuente( )ata S*eet del PIC16F877 Transmisor Asncrono

Wilmer Sanz F.

Apuntes de Microprocesadores. Clase 21


La configuraci n del la USART para transmitir se reali0a a tra(Bs del registro T$STA -657.& La descripci n de este registro se ofrece a continuaci n: T.STA /08&1 CSRC bit" T$6 T$:C SECC BRG7 TRMT T$6% bit1

CSRC: Bit de selecci n& Co usado en el modo asincr nico& :n el modo sincr nico! CSRC;1 Modo sncrono 3 ; Modo maestro -relo< generado internamente desde BRG. 1 ; Modo escla(o -relo< generado por una fuente eDterna. T$6: 7abilita el bit 6 de transmisi n 3 ; Selecciona transmisi n de 6 bits 1 ; Selecciona transmisi n de 5 bits T$:C: Acti(a la transmisi n 3 ; Transmisi n acti(ada 1 ; Transmisi n desacti(ada Cota: SR:C#CR:C anula T$:C en modo sncrono& SECC: Bit de selecci n del modo del USART 3 ; Modo sncrono 1 ; Modo asncrono BRG7: Bit de selecci n de la (elocidad de baudios Modo asncrono: 3 ; Alta (elocidad 1 ; Ba<a (elocidad Modo Sincrono: Co se usa en este modo TRMT: Bit de estado del registro de despla0amiento de transmisi n 3; TSR (aco 1 ; TSR no (aco T$6%: Bit 6 del dato a transmitir -puede ser el bit de paridad. :l dato /ue se desea transmitir por el USART se deposita en el registro T$R:G -367. ) a continuaci n se traspasa al registro de despla0amiento TSR! /ue (a sacando los bits secuencialmente ) a la frecuencia establecida& Adem>s! antes de los bits del dato de informaci n se inclu)e un bit de inicio ) despuBs de sacar todos los bits se aFade un bit de parada& :l USART receptor recibe! uno a uno! los bits! elimina los de control ) los de informaci n una (e0 /ue Gan llenado el registro de despla0amiento RSR los traslada autom>ticamente al registro RCR:G -3A7.! donde /uedan disponibles para su posterior procesamiento& Si obser(amos el diagrama de blo/ues de la secci n transmisora del USART -figura 3.! el n=cleo est> constituido por el registro de despla0amiento TSR! /ue obtiene el dato desde el registro T$R:G ) luego lo (a despla0ando ) sacando bit a bit! en serie! por la lnea RC2#T$#C?& :l primer bit /ue sale es el de menos peso& :l dato a transferir se carga por softHare en T$R:G ) se transfiere al TSR en cuanto se Ga)a transmitido el bit de parada del dato anterior& La transferencia entre los dos registros se reali0a en un ciclo ) entonces el seFali0ador T$AI se pone a 3! para ad(ertir /ue el registro de transmisi n se Ga (aciado& TambiBn en este momento puede producirse una interrupci n si se Ga posibilitado el uso de interrupciones& Cuando se escribe otro dato sobre T$R:G! el seFali0ador T$AI se pone a 1& :l bit TRMT sir(e para indicar el estado del registro TSR ) (ale 3 cuando est> (aco&

Wilmer Sanz F.

Apuntes de Microprocesadores. Clase 21

Fi3 1 )ia3rama de blo4ues del mdulo Transmisor de la 5SA-T Fuente( )ata S*eet del PIC166877 Pasos 2ara la transmisin asincrnica 3& Configurar las lneas RC2#T$#C? como salida ) RC"#R$#%T como entrada +& Aniciali0ar el registro S*BRG con la (elocidad de transmisi n adecuada& Si se desea una (elocidad alta! debe acti(arse el bit BRG7& ,& 7abilitar el *uerto serial asincr nico desacti(ando el bit SECC -T$STA:4. ) acti(ando el bit S*:C -RCSTA:".& 4& Si se desea traba<ar con interrupciones! acti(ar el bit T$A: -*A:3:4.& Los bits GA: ) *:A: del registro ACTCJC deben estar acti(os tambiBn& K& Si se desea transmitir datos de 6 bits! acti(ar el bit T$6 -T$STA:2.& Si se Ga escogido esta opci n! el no(eno bit a transmitir debe ser cargado en T$6% -T$STA:1.& 2& 7abilitar la transmisi n acti(ando el bit T$:C -T$STA:K.& :sta acci n autom>ticamente acti(ar> al bit T$AI -*AR3:4.& "& Cargar el dato en el registro T$R:G& Con esta acci n se inicia la transmisi n& -ece2tor Asncrono La configuraci n del la USART para recibir se reali0a a tra(Bs del registro RCSTA -357.& La descripci n de este registro se ofrece a continuaci n: -CSTA /18&1 S*:C bit" R$6 SR:C CR:C A%%C I:RR J:RR R$6% bit1

S*:C: 7abilitaci n del puerto serie 3 ; *uerto serie Gabilitado -configurar los pines RC"#R$#%T ) RC2#T$#C? como entrada ) salida! respecti(amente. 1 ; *uerto serie desGabilitado R$6: 7abilita el bit 6 de recepci n 3 ; Selecciona recepci n de 6 bits 1 ; Selecciona recepci n de 5 bits SR:C: Configura la recepci n sencilla Modo asncrono: no importa Modo sncrono maestro 3 ; 7abilita recepci n sencilla 1 ; %esGabilita recepci n sencilla Modo sncrono escla(o: no importa CR:C: Configura la recepci n continua Modo asncrono: 3 ; 7abilita modo de recepci n continua

Wilmer Sanz F.

Apuntes de Microprocesadores. Clase 21


1 ; %esGabilita recepci n continua Modo sncrono: 3 ; 7abilita recepci n continua Gasta /ue el bit CR:C es borrado 1 ; %esGabilita recepci n continua A%%:C: %etecci n de direcci n Modo asncrono con 6 bits -R$6 ; 3.: 3 ;Acti(a la detecci n de direcci n! acti(a la interrupci n ) descarga el buffer de recepci n al acti(arse RSR859 1 ;%esacti(a la detecci n de direcci n! todos los bits son recibidos ) el bit 6 puede ser utili0ado como bit de paridad I:RR: Bit de error de trama 3 ; :rror de trama -puede ser actuali0ado le)endo el registro RCR:G ) recibir el siguiente dato (>lido 1 ; Co Ga) error de trama J:RR: Bit de error de desbordamiento 3 ; :rror de desbordamiento -puede ser borrado escribiendo un 1 en el bit CR:C. 1 ; Co Ga) error de desbordamiento R$6%: Bit 6 del dato recibido -*uede ser el bit de paridad. Los datos se reciben en serie! bit a bit! por la lnea RC"#R$#%T ) se (an introduciendo secuencialmente en el registro de despla0amiento RSR /ue funciona a una frecuencia 32 (eces m>s r>pida /ue la de traba<o - baud rate.& Cuando el dato consta de 6 bits Ga) /ue programar el bit R$6 ; 3 ) el no(eno bit de informaci n se colocar> en el bit R$6% del registro RCSTA& Una (e0 /ue el modo asncrono Ga sido seleccionado! la recepci n es Gabilitada colocando a L3M l gico el bit CR:C -RCSTA849.& :l cora0 n de la recepci n serial es el registro de corrimiento de recepci n -RSR.& %espuBs de detectar el bit de parada la data presente en RSR es transferida al registro RCR:G -si es /ue est> (aco.& Si la transferencia Ga sido completada con BDito el RCAI -*AR38K9. es puesto a L3M l gico& Si lo deseamos podemos usar esta caracterstica para traba<ar interrupciones& *ara ello deberemos Gabilitar el bit RCA: -*A:38K9.& :l bit RCAI solo es de lectura ) colocado a L1M l gico por GardHareN es decir cuando el registro RCR:G est> (aco& Al parecer el registro RCR:G es un solo registro pero no es asN el registro RCR:G es una suerte de pila de dos posiciones& *or tanto es capa0 de almacenar + datos -b)tes. ) mantener un tercer dato en RSR& Si la pila est> llena ) se llena el RSR -tercer dato. es decir llega el bit de stop de ese tercer dato el microcontrolador procede a colocar a L3M l gico el bit J:RR -o(er run error bit. ) el (alor presente en RSR se pierde& %e darse esta situaci n lo /ue debemos Gacer es rescatar los dos datos /ue est>n en la pila de RCR:G& Luego resetear el J:RR! para eso es necesario resetear el bit CR:C -ponerlo a L1M l gico ) luego a L3M l gico.& Cuando se acti(a el bit J:RR las transferencias de RSR a RCR:G son desGabilitadas por lo tanto debemos cumplir con Gacer el reset del bit CR:C para normali0ar la recepci n& 7a) otro bit /ue tambiBn es importante seFalar ) es el bit I:RR -RCSTA8+9. error de frame o trama o marco& :l bit I:RR se coloca a L3M l gico si detecta un L1M l gico como bit de parada& *or lo tanto antes de leer lo /ue contiene el registro RCR:G es necesario re(isar el (alor de los bits I:RR ) J:RR&

Fi3 # )ia3rama de blo4ues del mdulo -ece2tor de la 5SA-T Fuente( )ata S*eet del PIC166877

Wilmer Sanz F.

Apuntes de Microprocesadores. Clase 21


La siguiente es la secuencia de pasos a reali0ar para configurar la rece2cin asncrona: 3& Aniciali0ar el registro S*BRG con el (alor apropiado /ue genere los baudios necesarios& Co ol(ide colocar un (alor al bit BRG7 de acuerdo a si (a! o no! a transmitir en alta (elocidad& +& 7abilitar el puerto serial asncrono colocando a 1 bit SECC ) a 3 l gico el bit S*:C& ,& Si se (a a traba<ar con interrupci n! asignar RCA:;3! adem>s de Gabilitar las interrupciones& 4& 7abilite la recepci n colocando a 3 el bit CR:C& K& :l bit RCAI se colocar> a 3 l gico cuando un dato llegue completo al microcontrolador ) una interrupci n se generar> si es /ue se Ga acti(ado el bit RCA:& 2& Leer el registro RCSTA para obtener el (alor del no(eno bit -si es /ue est> traba<ando con 6 bits de datos. ) determinar si Gubo error en la comunicaci n -re(ise los bits J:RR ) I:RR.& "& Si no Gubo error lea los 5 bits de datos del registro RCR:G& 5& Si no Gubo alg=n error resetee el bit CR:C&
#include p16f877.inc org 0x00 goto Inicio org 0x5 Inicio bsf STATUS, !0 "Ir b#nco 1 bcf T IS$,6 " $6%T& s#lid#, pin de tr#ns'isi(n bsf T IS$,7 " $7% x entr#d#, pin de recepci(n 'o)l* d+,55+ "1,00 b#ud r#te &t#l-,0./0 'o)*f S!1 2 bcf T&STA,1 23 "Selecci(n de b#4# )elocid#d bcf T&STA,S56$ ".odo #s7ncrono bcf STATUS, !0 "Ir b#nco 0 bsf $STA,S!86 "/#bilit# el puerto serie

bsf STATUS, !0 "Ir b#nco 1

bcf T&STA,T&9 "8 bits de d#tos # tr#ns'itir bsf T&STA,T&86 "Acti)# l# tr#ns'isi(n seri#l, T&I: - 1 bcf STATUS, !0 "Ir b#nco 0 bcf $STA, &9 "8 1its de d#tos bsf $STA,$ 86 "!#r# x $ontinuo

";;;Subprogr#'# de 8n)7o. 8l d#to # tr#ns'itir )iene en < 8n)i# 'o)*f T& 82 "T& 82 - < 8sper#tx btfss !I 1,T&I: "8sper# /#st# =ue tr#ns'isi(n cul'in( goto 8sper#tx return ";;;Subprogr#'# de ecibe btfss !I 1, $I: "!regunt# si el buffer de goto ecibe " 6o, ir # ecibir & es full ecepci(n. 8l d#to # se recibe en <

'o)f

$ 82,< "Si, <- $ 82 > pone # cero el

$I:

"'o)*f T& 82 Tr#ns'itir d#to

Wilmer Sanz F.

Apuntes de Microprocesadores. Clase 21


return end

Biblio3ra6a - MicrocGip TecGnolog) Anc& -+113.& PIC16F87. )ata S*eet& HHH&microGip&com O:n lneaP Qltimo acceso: +2-12-+115 - Apuntes de Clase&

Wilmer Sanz F.

Você também pode gostar