Puerto Serie del PC.doc

Embed Size (px)

Citation preview

Introduccin

Despus de utilizar los displays de 7 segmentos y los displays LCD como interfaces para nuestras aplicaciones ha llegado la hora de dar un paso ms adelante y qu mejor que la misma pantalla de un computador.

La interface con un ordenador se puede realizar por cualquiera de sus puertos externos ms conocidos: serie, paralelo o el USB. El paralelo casi ni se encuentra en los ordenadores de hoy y de momento el puerto USB nos queda fuera de alcance por la complejidad del desarrollo del firmware (programa del microcontrolador). As nos quedamos con el puerto serie.

Aprenderemos a volcar datos desde nuestro microcontrolador a la pantalla del ordenador (data logging), as como a enviar datos mediante el teclado del PC hacia el microcontrolador.

El Estndar RS-232

Toda comunicacin elaborada entre dos dispositivos requiere conocer el protocolo que la gobierna a nivel hardware y software. Para el puerto serie se trata del Estndar RS-232, o ms bien EIA/TIA-232 por las siglas de Electronics Industry Association y Telecommunications Industry Association, sus desarroladores

El RS-232 fue originariamente pensado para regir las comunicaciones entre ordenadores y equipos de mdem de la poca (hace ms de 40 aos). Con el tiempo han surgido otras versiones como RS-232-C, RS-232-D, RS-232-E, etc., una ms reciente que la otra, pero con variaciones inapreciables por ser uno de los estndares menos estrictos. Despus de todo, es solo un Estndar Recomendado o Recommended Standard; de ah la RS.

En la literatura tcnica se acostumbra mucho utilizar los trminos DTE y DCE para referir a los dispositivos que se comunican segn el Estndar RS-232. DTE (Data Terminal Equipment) suele representar al ordenador y DCE (Data Circuit-terminating Equipment) designa a cualquier dispositivo conectado al ordenador (un mdem se sobrentenda antes).

Sin embargo, estos conceptos no quedan del todo claros en redes del tipo ordenador-ordenador o microcontrolador-microcontrolador usando el puerto serie. As que por comodidad en adelante hablaremos de ordenador y mdem, viendo como mdem hasta donde quepa a cualquier dispositivo conectable al puerto serie (el circuito de nuestro microcontrolador).

Ahora pasemos a describir los principales aspectos que nos recomienda el estndar.

Voltajes de los niveles lgicos del RS-232

En las comunicaciones seriales RS-232 los valores para representar los 1s y 0s lgicos son muy diferentes de los que estamos acostumbrados a usar en el mundo TTL. All no existen los 5V (para el 1) y 0V (para el 0).

Para entenderlo ms fcilmente veamos la siguiente figura, donde se compara la forma de onda de una seal RS-232 con la forma de onda de una seal digital convencional.

Niveles de tensin para los 1s y 0s lgicos.Puedes notar la enorme diferencia: los 1 lgicos se representan con voltajes negativos y los 0 lgicos, por voltajes positivos; adems del amplio rango de los voltajes.

Un 1 lgico se expresa por una tensin de 5V a 15V. Este estado se llama spacing.

Un 0 lgico se da cuando la tensin en cualquiera de las lneas es de +5V hasta +15V. Este estado se conoce como marking.

Formato de transferencia de datos

Como en toda comunicacin serial, los datos viajan en grupos de bits. En este caso cada grupo o carcter consta de un bit de Start, los bits de Datos (8 por lo general), un bit de Paridad (opcional) y finaliza con uno o dos bits de Stop.

Formato de un byte de dato en el Estndar RS-232. Bit de Start. Es la transicin de 1 a 0 e indica el inicio de una transferencia. En la lgica RS-232 podra significar una transicin de -15V a +15V y en lgica TTL es una transicin de 5V a 0V.

Bits de Datos. Forman los datos en s que se desean transmitir. Cada dato puede ser de 5, 6, 7 u 8 bits. Por supuesto, siempre preferimos trabajar con 8 bits (1 byte). El primer bit a transmitir es el menos significativo o LSbit (Least Significant Bit).

Bit de Paridad. Este bit es opcional y se puede enviar despus de los bits de datos. Sirve para ayudar a detectar posibles errores en las transferencias de datos. Es muy raramente usado, primero, porque es poco efectivo (solo podra detectar errores, no corregirlos) y, segundo, porque hay mejores formas de tratamiento de errores.

Bits de Stop. Los bits de Stop son estados de 1 lgico. El Estndar dice que puede haber 1, 1.5 2 bits de Stop al final de los datos (o del bit de paridad si lo hubiera).

Velocidad de transmisin (Baud Rate)

El Baud Rate es el nmero de bits que se transmiten por segundo.

Debido a que estamos hablando de un tipo de transmisin asncrona, no existe una seal de reloj que sincronice los bits de datos. Para que los dispositivos transmisor y receptor se entiendan correctamente tambin es necesario que operen con el mismo baud rate. Los valores ms comunes que fija el Estndar RS-232 son: 1200, 2400, 4800, 9600, 19200, 38400, 56000, 57600, 115200, 128000, 256000. Aunque las versiones ms recientes del Estndar ponen un lmite de 20 kbits, es comn emplear los valores altos como 115200 (siempre que sea posible).

Sabemos que no es lo mismo interfacear un ordenador con un microcontrolador usando un cable de 2 m de longitud que conectarlo a un PLC a 8 m de distancia: la longitud del cable y la interferencia presente en el ambiente son factores a considerar a la hora de escoger el baud rate.

Seales del puerto serie

Internamente el puerto serial de un ordenador es controlado por un circuito integrado (por ejemplo el 16750, de 40 pines). De esas lneas solo 9 salen al exterior y desembocan en un conector DB9 macho (el que nosotros vemos y donde conectamos nuestro programador TE-20). Raras veces se ve que salen ms lneas para llegar a un conector DB25.

El uso de las 9 seales tiene ms sentido cuando se trabaja con un mdem. Por eso vamos a seguir hablando de mdem, pese a que bien puede ser reemplazado por otro dispositivo.

Pines del conector DB9 (macho) del puerto serie.En la figura mostrada las direcciones de las flechas sealan si los pines son de entrada o de salida. Del mismo modo, los colores ayudan a asociar los pines con funciones anlogas o complementarias, as:

TD y RD se encargan de transmitir y recibir los datos, respectivamente.

RTS y CTS sirven para controlar el Control del flujo de datos (Handshaking) hardware.

DTR, DSR y DCD intervienen en el establecimiento de la comunicacin.

Adems de ellos, estn la infaltable tierra (SG) y RI, usada exclusivamente en conexiones con un mdem.

Ahora bien, cuando vamos a conectar el ordenador a un microcontrolador nuestro inters se puede reducir a tres lneas: TD, RD y SG. Las dems: o pueden ignorarse, o pueden conectarse al mismo puerto serie artificiosamente para evitar problemas de comunicacin, o pueden usarse para implementar un Control del flujo de datos (Handshaking) hardware, con el microcontrolador emulando algunas funciones de mdem. En cualquiera de los tres casos, eso depender del software de ordenador usado para controlar el puerto serie.

En el conector hembra la posicin de los pines se puede ver diferente a fin de establecer una conexin cruzada, es decir, para que el TD de un dispositivo se una con el RD del otro y viceversa. Lo mismo debe pasar con los pares RTS-CTS y DTR-DSR.

Control del flujo de datos (Handshaking)

Generalmente el ordenador superar a su interlocutor (mdem u otro) tanto en velocidad de transferencia como en los buffers de recepcin de datos. Para que el mdem no empiece a perder los datos llegados el Estndar contempla mecanismos de control de flujo de datos ya sea va hardware o software.

El control de flujo de datos por software se identifica por el uso de los caracteres Xon (ascii 0x11) y Xoff (ascii 0x13). El dilogo es as: cuando, por alguna razn, el mdem ya no desea recibir ms datos del ordenador entonces le enva el carcter Xoff dicindole que suspenda la transmisin al menos temporalmente. Cuando el mdem est nuevamente dispuesto a aceptar ms datos le enviar el carcter Xon y el ordenador reanudar la transferencia.

Lo bueno del mtodo es que el hardware requerido es el mnimo (ver la siguiente figura) y lo malo es que ambos dispositivos deben soportar las transferencias full duplex que exige el estndar RS232 para este caso.

Conexin bsica para el Handshaking software.En un tipo de comunicacin simplex el protocolo es ste: cuando el ordenador quiere enviar datos al mdem pone un 1 en RTS. Si el mdem est dispuesto a recibir esos datos, le responder con un 1 por la lnea CTS y el ordenador empezar a transmitir los datos; de otro modo, le responder con un 0 y el ordenador tendr que posponer el envo de datos.

Cuando la comunicacin es half duplex o full duplex el protocolo vara, pero eso ya no lo tocaremos aqu para no seguir enredndolo. Solo vemos lo suficiente del estndar, en este caso para entender las conexiones alternativas entre un ordenador y un microcontrolador que se usan en algunas ocasiones y que veremos en la siguiente seccin.

Cableado para el handshaking hardware entre dos dispositivos.En el diagrama se han sumado las lneas DTR, DSR y DCD (de color marrn), por las que los dispositivos se informan el uno al otro si estn listos o no para iniciar la comunicacin.

Interface serial microcontrolador-ordenador

Como siempre, el enfoque se divide en dos partes:

Requerimientos hardware

Nos vamos a enfocar en dos aspectos.

Primero veamos el tema del transceiver. Dado que los niveles de tensin en el Estndar RS-232 (de 12V, 0V y +12V en el ordenador) no son compatibles con los niveles habituales de los microcontroladores (de 0 y 5V), se requiere de un transceiver que convierta estas tensiones de unos niveles a otros y viceversa.

Sin duda, el MAX232 es el ms famoso de todos. Como se ve en su esquema, mostrado abajo, el MAX232 puede trabajar con una fuente de alimentacin de 5V y provee dos canales de transmisin y dos de recepcin, aunque solo se suele usar un par. A su gran tamao se suma como desventaja el uso de condensadores externos, para bombear la carga necesaria en los circuitos doblador e inversor de voltaje.

Interface entre un microcontrolador y un computador mediante el transceiver MAX232.El mismo fabricante del MAX232, Dallas Semiconductors, ofrece sus versiones mejoradas como el MAX203, que no requiere de capacitores externos, o el MAX202, que brinda proteccin contra cargas electrostticas.

Mejor aun para pequeos circuitos sera el DS275 (de 8 pines), el cual tampoco requiere de capacitores externos y cuenta con el par justo de drivers de transmisin y recepcin de datos. Su principal inconveniente es que est diseado para operar solo en transferencias half duplex.

Para conocer ms del funcionamiento interno de los transceivers es recomendable que consultes sus respectivos datasheets.

Interface entre un microcontrolador y un computador mediante el transceiver DS275.El segundo aspecto hardware que interesa es el relacionado con el Control del flujo de datos (Handshaking): en los dos esquemas presentados anteriormente las retro-conexiones en el conector DB9 (de color violeta) son opcionales. Solo harn falta cuando el programa terminal del ordenador est configurado para utilizar los pines indicados, as:

RTS (7) se conecta a CTS (8) para que siempre que el ordenador desee enviar datos al microcontrolador, se responda a s mismo con un permiso concedido.

Anlogamente, DTR (4) se une a DSR (6) para que cuando el ordenador informe un estoy listo para la comunicacin, su eco (hacindose pasar por el microcontrolador) le responda con un yo tambin lo estoy. A veces DTR tambin se dirige a DCD (1).El MAX232 (Maxim) es un circuito integrado utilizado para adaptar los niveles requeridos en una conexin donde interviene un dispositivo que maneja niveles de tensin TTL (nuestro microcontrolador, por ejemplo) y otro capaz de trabajar bajo los parmetros de la norma EIA/TIA-232E y las V.28/V.24. Expresado en lenguaje de tensiones, los niveles TTL operan entre los 0 y 5Volts y la otra norma, conocida en el mundo tcnico como RS-232 (Recommended Standard-232), utiliza tensiones que van desde los -12Volts a los +12Volts. Este circuito integrado (el MAX232) est especialmente diseado para trabajar en equipos que utilicen bajos niveles de tensin (5Volts) y requiere de muy pocos componentes externos para lograr un funcionamiento ptimo.

En su arquitectura interna, el MAX232 posee los accesorios necesarios para obtener las tensiones que se requieren a ambos lados de los circuitos que enlaza y cuenta con cuatro adaptadores-inversores de tensin: dos son utilizados para la conversin TTL RS-232 y los otros dos para la operacin inversa. En la mayora de las aplicaciones con microcontroladores se utilizan slo dos (uno de cada tipo), pero cuando se lo emplea en aplicaciones especiales, como puede ser el caso de redes RS-485, se agrega una conexin extra para controlar la prioridad de uso del bus (RS-485). Es decir, la seal RTS (Request To Send = Peticin de envo) que proviene desde el ordenador pasa por una unidad de recepcin del MAX 232 y se entrega al controlador de bus RS-485 en niveles de tensin TTL.

Requerimientos software

Por un lado necesitamos unas rutinas para el microcontrolador que gestionen las funciones del Estndar RS-232. stas pueden implementarse tranquilamente a nivel software debido a su simplicidad o mediante el mdulo USART, el cual por supuesto ofrecer mucha ms eficiencia y flexibilidad.

Por otro lado, necesitaremos un programa de ordenador que se encargue de controlar su puerto serie. A su vez, este programa puede ser uno desarrollado por nosotros mismos, que nos permitira tener el control total del puerto serie y podramos transmitir y recibir todo tipo de datos (binarios o de texto). Tambin podramos implementar tcnicas alternativas de control de flujo de datos (aparte de los descritos arriba), o sofisticados mecanismos para el control de errores en la transferencias de datos. Como ves, se ve muy atractivo, pero tambin requiere de conocimientos a mediano nivel sobre programacin en lenguajes como Visual C++, Delphi o Visual Basic.

Como alternativa prctica, podemos usar softwares como el Hyperterminal de Windows, Serial Port Monitor o Smart Term. Estos son programas de tipo consola que nos permiten visualizar los datos que se transfieren hacia/desde el puerto serie. Por no ofrecer tanta flexibilidad nos limitaremos a trabajar con datos de texto. Conforme vamos escribiendo los caracteres en la consola, se irn enviando hacia nuestro microcontrolador. As mismo, los caracteres enviados desde el microcontrolador se irn mostrando en la consola, todo en tiempo real.

El USART de los PICs

USART es la sigla de Universal Synchronous Asynchronous Receiver Transmitter. Es el mdulo perifrico que incorporan muchos microcontroladores para comunicarse con dispositivos que soportan el estndar RS-232. En su nombre se aprecia que puede trabajar en modo Sncrono o Asncrono. En este presentacin nos enfocaremos exclusivamente al modo asncrono.

En los PICs las principales caractersticas del USART son:

Asncronamente el USART puede trabajar en modo full-duplex, esto es transmitir y recibir datos, al mismo tiempo inclusive.

El USART puede generar interrupciones al recibir datos o despus de enviarlos.

El USART opera detrs del escenario para que las transferencias de datos se lleven a cabo mientras el CPU realiza otras tareas.

El baud rate es configurable por el usuario.

Los datos pueden ser de 8 9 bits, solo habr 1 bit de stop y sin bit de paridad.

Por fortuna, el USART y su control es compatible en todos los PICs que lo tienen, desde los PIC16F hasta los PIC18F, incluso hay un gran parecido con los de otros microcontroladores. As que creo que valdr la pena demorarnos un poco en esta teora.

Los registros del USART

Adems de estos registros todava faltan por citar los que controlan las interrupciones del USART. Aunque ya los conocemos basante bien los veremos por separado.

SPBRG. Registro Generador de Baud Rate del USART. Pone la velocidad de transmisin.

TXREG. Registro de Transmisin del USART. Aqu se cargan los datos a transmitir.

RCREG. Registro de Recepcin del USART. Aqu se almacenan los datos recibidos.

TXSTA. Registro de Control y Estado de Transmisiones.

RCSTA. Registro de Control y Estado de Recepciones.

Todos estos registros son de 8 bits. Los tres primeros no tienen formatos preestablecidos y podran aceptar cualesquiera valores. Los dos ltimos tienen los siguientes mapas de bits:

TXSTA: CSRC TX9 TXEN SYNC--- BRGH TRMT TX9D

RCSTA: SPEN RX9 SREN CREN ADDEN FERR OERR RX9DEn lo sucesivo iremos describiendo las funciones de estos dos registros y de cada uno de sus bits. Algunos bits estn relacionados con la operacin del USART en modo sncrono, tema que de momento no nos compete, y sern ignorados.

Ahora que si no quieres seguir esperando para ver tu PIC conectado al puerto serie del ordenador, ya puedes pasar a las prcticas.

Inicializacin del USART

Lo primero que se debe hacer con un mdulo es configurar su operacin. Los bits de los registros TXSTA y RCSTA relacionados con esta tarea son:

SYNC. Establece si el USART trabajar en modo sncrono (si vale 1) o asncrono (si vale 0).

SPEN (Serial Port Enable). Con 1 se habilita el USART, con 0 se le inhabilita. Una vez habilitado, el USART asumir el control de los pines TX y RX. los cuales en los PIC16F87xA son RC6 y RC7.

TXEN (Transmit Enable). Con 1 se habilita la parte del USART que transmite los datos. Con 0 la inhabilitamos.

CREN (Continue Receive Enable). Lo mismo que TXEN pero para las recepciones.

TX9 (9-bit Transmit). Si vale 1, los datos que se transmitan sern de 9 bits. Si vale 0 los datos sern de 8 bits.

RX9 (9-bit Receive). Lo mismo que TX9 pero para las recepciones.

Con todo esto ya podemos implementar la siguiente funcin de inicializacin del USART. Las dos primeras lneas establecen el Baud rate. Ese tema lo tratamos ms adelante por ser tan extenso como importante. De hecho, si hubiera que cambiar algo en esta funcin, seran esas dos lneas. El resto del cdigo ser casi siempre el mismo.

//****************************************************************************

// Inicializa el USART a 9600-8N1.

// Si BRGH = 1 => BaudRate = Fosc/(16*(SPBRG+1))

// Si BRGH = 0 => BaudRate = Fosc/(64*(SPBRG+1))

//****************************************************************************

void usart_init(void){ // Establecer el Baud rate a 9600.

TXSTA.BRGH = 1; // Set high speed => ...

SPBRG = 25; // SPBRG = Fosc/(BaudRate*16) -1

// Establecer modo asncrono, habilitar transferencias de datos,

// configurar pines de E/S respectivos.

TXSTA.SYNC = 0; // Seleccionar modo asncrono

RCSTA.SPEN = 1; // Habilitar el puerto serial

TXSTA.TXEN = 1; // Habilitar las transmisiones

RCSTA.CREN = 1; // Habiiitar las recepciones

TXSTA.TX9 = 0; // Transmisiones de 8 bits

RCSTA.RX9 = 0; // Recepciones de 8 bits

}Lo curioso es que las cosas ms importantes de esta funcin se pueden resumir con la notacin 9600 8N1. Significa Baud rate = 9600, formato de datos = 8 bits, No (sin) bit de paridad y 1 bit de Stop. Deberemos recordar esos parmetros a la hora de configurar el software terminal del lado del ordenador.

Transmisin de datos del USART

El dato que el USART transmitir debe ser previamente cargado en el registro TXREG. Con esa accin la transmisin comienza de inmediato. Mientras el registro TXREG contenga algn dato, el bit TXIF (del regitro PIR1) valdr 0. Cuando TXREG est nuevamente dispuesto para acoger otro dato, TXIF se setear automticamente por hardware.

Hay otros detalles de consideracin que podran ser tiles para implementar una funcin de transmisin de datos, como hablar del registro oculto TSR o del bit TMRT, que indica si dicho registro est vaco o no. Con lo expuesto ya se puede codificar la siguiente funcin putch:

//****************************************************************************

// Transmite el byte 'data' por el USART

//****************************************************************************

void putch(char data){ while(PIR1.TXIF == 0) // Esperar a que RXREG est vaco

continue; //

TXREG = data; // Poner dato a enviar

}Dije que no detallara sobre el registro oculto TST pero tampoco nos vamos a perder de su utilidad. Con l se puede implementar la siguiente funcin de transmisin alternativa, que, en general, ser algo ms lenta que la anterior, aunque acaso tambin un poco ms segura.

//****************************************************************************

// Transmite el byte 'data' por el USART

//****************************************************************************

void putch(char data){ while(TXSTA.TMRT == 0) // Esperar a que TSR est vaco

continue; //

TXREG = data; // Poner dato a enviar

}

Recepcin de datos del USART

Los datos (de 8 9 bits) que llegan al USART se almacenan en el registro RCREG, que en realidad es un buffer de dos niveles, es decir, puede contener hasta dos datos. Apenas haya un dato en RCREG, se activar el flag RCIF (del registro PIR1).

El bit RCIF es de solo lectura y se limpiar automticamente cuando hayamos terminado de leer todos los datos del buffer RCREG.

Es recomendable que los datos que lleguen al USART se lean de inmediato. De no ser as, el buffer de RCREG se podra llenar y el USART podra atorarse o quedarse colgado. No debemos olvidar esto porque el procedimiento para desbloquear el USART es algo engorroso como para describirlo aqu y porque personalmente he visto que no siempre funciona.

Asumiendo que seguiremos la recomendacin mencionada la funcin de recepcin de datos sera as:

//****************************************************************************

// Recibe un byte de dato del USART

//****************************************************************************

char getch(void){ while(PIR1.RCIF == 1) // Esperar a que haya algn dato en buffer RCREG

continue; //

return RCREG; // Retornar dato recibido

}Clculo del Baud Rate

Como habamos estudiado, el baud rate es la velocidad de transferencias de datos, se mide en bits/segundo y hay valores estndar que debemos respetar (4800, 9600, 19200, 115200, etc.).

En el USART del PIC el baud rate depende de Fosc (frecuencia del XTAL en los PIC16F), del registro SPBRG y del bit BRGH segn alguna de las siguientes frmulas:

BRGH = 1 (Alta velocidad)BRGH = 0 (Baja velocidad)

La pregunta es cundo usar una u otra frmula, cundo debemos poner BRGH a 1 a 0? Lamentablemente tendremos que probar las dos frmulas y ver con cul conseguimos mejores resultados. Por ejemplo, calculemos con el valor de 9600 para descubrir por qu es uno de los ms recurrentes y populares.

Primero evaluemos la frmula poniendo BRGH = 1: (Se considera XTAL de 4MHz.)

Resolvindola tenemos SPBRG = 25.04. Obviamente debemos truncar la parte decimal y quedamos con 25. Para saber el valor real de Baud rate que esto nos dar, volvemos a evaluar la frmula ahora con SPBRG = 25.

Vemos que no da los 9600 que buscbamos. La diferencia generar un error de (9615.38 - 9600)/9600 = 0.16%. Nada mal, verdad?

Ahora veamos qu tenemos si ponemos BRGH = 0:

Al resolver la ecuacin tenemos SPBRG = 5.51 = 5. Para saber el valor real de Baud rate que esto nos dar, volvemos a evaluar la frmula ahora con SPBRG = 5.

sta es una gran diferencia y origina un error de (10416.67 9600)/9600 = 8.51%.

Dado que la segunda desviacin es intolerable, concluimos en que deberemos quedarnos con los datos del primer clculo, con BRGH = 1, SPBRG = 25 y el error de 0.16%.

Aunque algunos compiladores pueden calcular automticamente el valor de los registros para generar el baud rate que le indiquemos, no avisan error producido. Por lo tanto, siempre ser recomendable ver por nosotros mismos si el error es aceptable para nuestras aplicaciones. Si es una cuestin crucial, a veces tambin se puede optar por cambiar de XTAL; por ejemplo, uno de 3.6884 MHz (o sus mltiplos) deriva en errores de 0.00% para casi todos los baud rates.

Los registros TXSTA y RCSTA en detalle.

Transmit Status Register y Receive Status Register. No te dejes llevar del todo por sus nombres. Hay algunos bits de un mdulo que afectan al otro.

ste es el registro TXSTA:

CSRCTX9TXENSYNC---BRGHTRMTTX9D

Bit 7Bit 0

CSRC:Clock Source Select bit

Vlido solo en modo Sncrono:1 = Modo maestro (reloj generado internamente desde BRG)

0 = Modo esclavo (reloj proveniente de fuente externa)

TX9:9-bit Transmit Enable bit

1 = Selecciona transmisin de 9 bits

0 = Selecciona transmisin de 8 bits

TXEN:TMR0 Clock Source Select bit

1 = Transmisiones habilitadas

0 = Transmisines inhabilitadas

SYNC:USART Mode Select bit

1 = Modo Sncrono

0 = Modo Asncrono

BRGH:High Baud Rate Select bit

Vlido solo en modo Asncrono:1 = Baud rate de Alta velocidad

0 = Baud rate de Baja velocidad

TRMT:Transmit Shift Register Status

1 = Registro TSR vaco

0 = Registro TSR lleno

TX9D:9th bit of Transmit Data. Can be Parity bit

ste es el registro RCSTA:

SPENRX9SRENCRENADDENFERROERRRX9D

Bit 7Bit 0

SPEN:Serial Port Enable bit

1 = Puerto serial habilitado (configura los pines TX y RX para el puerto serial)

0 = Puerto serial inhabilitado

RX9:9-bit Receive Enable bit

1 = Selecciona recepciones de 9 bits

0 = Selecciona recepciones de 8 bits

SREN:Single Receive Enable bit

Vlido solo en modo Sncrono - maestro:1 = Habilita recepcin nica

0 = Inhabilita recepcin nica

CREN:Continues Receive Enable bit

En modo Asncrono:1 = Habilita recepcin continua

0 = Inhabilita recepcin continua

En modo Sncrono:1 = Habilita recepcin continua hasta que el bit CREN se limpie.(CREN se sobrepone a SREN)

0 = Inhabilita recepcin continua

ADDEN:Address Detect Enable bit

Vlido solo en modo Asncrono de 9 bits (RX9 = 1):1 = Habilita deteccin de direccin

0 = Inhabilita deteccin de direccin

FERR:Framing Error bit

1 = Ocurri un error de frame

0 = No ocurri un error de frame

OERR:Overrrun Error

1 = Ocurri un error de overrun (Se puede limpiar limpiando CREN)

0 = No ocurri un error de overrun

RX9D:9th bit of Receive Data. Can be Parity bit

_1376387175.bin

_1376388305.bin

_1376388306.bin

_1376388304.bin

_1376388303.bin

_1376386701.bin

_1376387174.bin

_1376386693.bin

_1376386700.bin

_1376386692.bin