Microcontroladores - Comunicacion por Puerto serial

 
Vista:

Comunicacion por Puerto serial

Publicado por Leminer Croes (6 intervenciones) el 14/06/2006 21:05:34
Hola...
Estoy realizando una practica en la que tengo que enviar el resultado de una conversion a/d por el puerto serial pero he estado probando con el hyperterminal a ver si me recibe lo que esta enviando el pic pero no pasa nada...
Estoy utilizando los valores 4800baudios, 8bits de Datos, 1 Bit de parada, sin paridad, tengo el pic configurado asi y el hyperterminal.
Tambien se que debo cambiar de 4800 baudios a 1200, con 4800 es asi:
movlw D'103'
movwf spbrg
que debo cargar en SPBRG para que sea 1200Baudios
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

RE:Comunicacion por Puerto serial

Publicado por Edgar Muñoz (14 intervenciones) el 22/06/2006 22:09:05
El valor que debes escribir en el SPBRG depende de la frecuencia del oscilador que utilizas y del bit BRGH (bit 2 del registro TXSTA) , no sé con que frecuencia trabajas en tu aplicación ni que valor tiene el bit BRGH.

El Baud Rate se calcula con las fórmulas:
Baud Rate = FOSC/(64(X + 1)), si BRGH=0;
Baud Rate = FOSC/(4(X + 1)), si BRGH=0;
X es el valor que debes cargar en el SPBRG

Por ejemplo si trabajas con un oscilador de 4MHz y deseas un Baud Rate de 1200 bps debes cargar el valor 51(decimal) si BRGH es 0 y el valor 207 (decimal) si BRGH es 1. Recuerda que el SPBRG está en el Banco 1 en los PIC16xxxx.

En el Datasheet del pic que estás utilizando hay tablas para diferentes frecuencias del oscilador y valores de BRGH que te indican el valor del SPBRG para el Baud Rate que desees.


Además, no basta con configurar el SPBRG también tienes que configurar los registros TXSTA y RCSTA (registros de control de transmisión y recepción respectivamente).

Una configuración típica es la siguiente

Carga TXSTA (Banco 1 en los PIC16xxxx ) con el valor binario 00100100
Carga RCSTA (Banco 0 en los PIC16xxxx) con el valor binario 10010000

Para transmitir un dato serialmente debes escribir este dato en el registro TXREG. Sólo debes escribir un nuevo dato cuando el registro se ha vaciado (esto se verifica con el bit TXIF del registro PIR1).

Los datos que el pic recibe se almacenan en el registro RCREG.

Finalmente recuerda que en el hyperterminal sólo puedes visualizar caracteres imprimibles, así que toma en cuenta los datos que vas a enviar desde el pic
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar