Está en la página 1de 9

Laboratorio de Electrónica Digital III

Practica No. 6
Interfaz de Comunicación Serial.
Objetivo.
Que el alumno sea capaz de configurar la Interfaz de Comunicación
Serial del Microcontrolador y el Intercambiando Datos con la PC.

Procedimiento.
El alumno realizara programas recomendados.

Equipo a Utilizar.

1. PC.
2. CodeWarrior para la familia de MCU HC(S)08
(FREESCALE).
3. Protoboard con la Implementación del Diagrama.
4. HyperTerminal / Moserial.

Marco Teórico.

Introducción.

El Microcontrolador MC9S08SE(8/4)CRL incluye un bloc de


Comunicación Serial (SCI) que consta de ocho registros de 8 bits, a través
de los cuales se puede configurar el bloc SCI, enviar y recibir información
logrando la comunicación.

En la Comunicación Serial, los bits de datos se trasmiten bit por bit,


en una cadena de caracteres, haciendo uso de una sola línea de
comunicación, a diferencia de la comunicación en paralelo que requiere
varias de estas líneas. La transmisión típica de un carácter de 8 bits,
estará dada por un bit de inicio, ocho bit de datos (típicamente) y un bit de
parada.

La línea de comunicación puede ser Full Dúplex o Half Dúplex. La


primera se refiere a un cable para transmisión y otro para recepción,
trabajando ambos de manera simultánea, mientras que la segunda se
refiere a que un único cable sirve para transmitir y recibir en diferentes
intervalos de tiempo.
La comunicación puede también ser síncrona o asíncrona. La
comunicación serial síncrona transmite un bloc completo de caracteres en
sincronización con un reloj de referencia, mientras que la comunicación
serial asíncrona transmitiría ese mismo carácter de manera aleatoria e
independientemente de cualquier reloj.

La Comunicación Serial puede darse a diferentes velocidades, donde


la unidad de velocidad será el Baudio, que es igual al número de bits por
unidad de tiempo, típicamente segundos (bits/s). Algunas velocidades son
2400, 9600 y 115200 Baudios.

Para poder realizar la comunicación serial entre un Microcontrolador


y un dispositivo como la PC, es necesario un adaptador de niveles de
voltaje, dado que el Microcontrolador trabaja con el estándar TTL y la
tarjeta de Comunicación Serial de la PC trabaja con el estándar RS232
(EIA – 232), el cual establece lo siguiente:

Nivel Rango de Voltajes.


Lógico.
1 -5 a -15 Volts
0 5 a 15 Volts

El Integrado MAX232 es idóneo para desempeñar la función de


adaptación de voltajes e inversión de lógica.

Definición de los Registros.


1. Registros de Velocidad Alto y Bajo. (SCIBDH:SCIBDL)

Estos registros se concatenan para configurar el modulo divisor de


velocidad SBR0:SBR12, con el cual determinamos la velocidad de flujo del
bloc.
Para trabajar con una velocidad de 9600 Baudios (Bits/s), por
ejemplo, asignamos los valores hexadecimales a los registros como se
muestra:
SCIBDH = #00
SCIBDL = #34

2. Registros de Control SCIC1, SCIC2 y SCIC3.

Este grupo de registros nos permite realizar las configuraciones


necesarias para el bloc de comunicación serial. En lo siguiente se
presentan las opciones de configuración básicas.

M: Configuración de Bits de Datos (8 o 9)


M=0: Bit de Inicio + Ocho Bits de Datos + Bit de Paro.
M=1: Bit de Inicio + Nueve Bits de Datos + Bit de Paro.

PE: Configuración de Paridad.


PE=0: Paridad Deshabilitada.
PE=1: Paridad Habilitada.
PT: Configuración del Tipo de Paridad.
PT=0: Paridad Par.
PT=1: Paridad Impar.

TE: Habilitar Transmisión.


TE=0: Deshabilitada.
TE=1: Habilitada.

RE: Habilitar Recepción.


RE=0: Deshabilitado.
RE=1: Habilitado

El registro SCIC3 contiene opciones de configuración avanzadas,


que no se aborda en este documento, si el lector lo desea puede encontrar
información detallada en el manual de referencia.

Para una comunicación básica, 8 bits de datos, sin paridad,


habilitando la transmisión y recepción de datos, asignaríamos los valores a
los registros de configuración como se muestra:

SCIC1 = #$00
SCIC2 = #$0C

3. Registros de Status. SCIS1 y SCIS2

Los Registros de Status contienen flags de información, en estos


registros el usuario no puede escribir sino solamente leer, estas banderas
son activadas por el Microcontrolador para informar la llegada de un nuevo
dato, el fin de un envío o algún error en la transmisión, por mencionar algo,
en lo siguiente se presenta la descripción de algunas de ellas.
TDRE: Registro de Transmisión de Datos Vació.
TDRE=0: TDR lleno (No se puede transmitir dato).
TDRE=1: TDR vacío (Se puede transmitir dato).

TC: Transmisión Completa.


TC=0: Transmisión en proceso.
TC=1: Transmisión completa.

RDRF: Registro de Recepción de Datos Lleno.


RDRF=0: RDR vacío (No se ha recibido dato).
RDRF=1: RDR lleno (Se recibió un dato)

El registro SCIS2 contiene flags de información avanzadas que no se


abordan en este documento, si el lector lo desea puede encontrar
información detallada en el manual de referencia.

Como se menciono antes, estos registros son modificados por el


Microcontrolador, de manera que la escritura en ellos no tiene efecto.

4. Registro de Datos. SCID

Este registro es en realidad dos registros separados. Cuando el


registro es leído, en realidad obtenemos el contenido del buffer de solo-
lectura de recepción de datos y cuando se escribe en el registro SCID, en
realidad se escribe en el buffer de solo-escritura de transmisión de datos.
La lectura y escritura de este registró están involucradas en los
mecanismos de limpieza de las banderas de status.

Ejemplo.

El siguiente programa es un ejemplo en el cual el Microcontrolador


envía el mismo dato que recibe desde la computadora, haciendo uso de
una terminal de puerto serial como HyperTerminal en Windows o moserial
en Linux. La interfaz entre el Microcontrolador y la computadora es el chip
Max232 como se muestra en el diagrama. Se configura la comunicación a
8 bits de datos, sin paridad a 9600 baudios.
El código fuente de nuestro programa es el siguiente, lo puede copiar
directamente este documento, si las instrucciones no le son familiares,
sírvase de leer el set de instrucciones en el capitulo 7 del manual de
referencia:

mainLoop:
JSR AR
CICLO:
BRCLR 5,SCIS1,CICLO
LDA SCID
PSHA
BRCLR 7,SCIS1,CICLO
PULA
STA SCID
BRA CICLO
AR:
MOV #0,SCIBDH
MOV #31,SCIBDL
MOV #$00,SCIC1
MOV #$0C,SCIC2
RTS
feed_watchdog
BRA mainLoop

Nota. De presentare algún problema en la comunicación habiendo revisado las


conexiones y el código, considere cambiar el valor del registro SCIBDL en un rango de
30 a 34, esto podría mejorar la sincronía entre la computadora y el microcontrolador.

El código anterior contiene una rutina en la cual se programan los


registros de taza de baudios y los registros de control, y un ciclo que se
encarga de generar el efecto de eco, es decir que cuando recibe un dato lo
envía de regreso a la terminal. Cuando un dato llega desde la
computadora al buffer SCID, la bandera RDRF del registro SCIS1 se
activa, entonces leemos el dato del SCID, lo almacenamos y para
reenviarlo debemos asegurarnos que el registro de transmisión de datos
este vacío, esto lo hacemos revisando la bandera TDRE del registro
SCIS1, cuando este activo podremos enviar el dato escribiendo en el
registro SCID.
Reporte.

En un proyecto nuevo realice un programa que envié


constantemente a través del puerto serial del microcontrolador un valor
hexadecimal de 78 hacia la computadora, el cual en código ASCII equivale
a “ x ”.

En el documento de reporte incluya:


- la codificación.
- una captura de pantalla del debug.
- una captura de pantalla de la terminal.
- el diagrama de su implementación.
- una foto del prototipo.

También podría gustarte