Autor Tema: ayuda rs232  (Leído 4146 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado josepunki

  • PIC10
  • *
  • Mensajes: 43
ayuda rs232
« en: 16 de Abril de 2007, 06:42:40 »
no entiendo muy bien como configurar los registros del 16F871 para implementar la comunicacion del PIC con un PC (transmision y recepcion), y, si puede ser, para que se produzca una interrupcion al recibir datos.

lo que mas me inquieta es como configurar el baud rate (tengo xtal de 4Mhz). que hago con BRGH? tengo que escribir algo en SPBRG? utilizo 9 bits? o son 8 + el bit de inicio o fin?

ayuuuuda
thanks

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
Re: ayuda rs232
« Respuesta #1 en: 16 de Abril de 2007, 12:39:12 »
Que tal Josepunki,

Antes que nada y sin causar ninguna ofensa ni herir sentimientos. Te recomiendo que simpre que uses cualquier micro tengas el datasheet de este contigo ya que ahi se encuentra la respuesta a muchas preguntas del funcionameinto de cada uno de los perifericos de los micorocntroladore. Para el caso del USART existe un solo capitulo que habla de como configurar y usar el USART.

Para tu caso voy a darte un peuqnio empujon, para lo que necesitas y te mostrare que todo esta ahi en el datasheet, solo hay que leer detenidamente y con paciencia.

Ok, comencemos.

Primero antes que nada debes saber que el protocolo serial asincrono consta de 1 bit de paro,  8 o 9 bits de datos (aunque existen otras configuraciones, pero no estan soportadas directamente por este micro), 1 bit de paro. Y debido a que es asincrono necesitamos definirle un baudrate o velocidad de transmision en la que existen varias de ellas, las mas comune son:

1200 bps
2400 bps
4800 bps
9600 bps
19200 bps
38400 bps
57600 bpss
115200 bps

Las anteriores son baudrates standard, pero se pueden generar valores no standar. Entonces la pregunta es como donfigura ese baud rateLeyendo el datasheet en delmicrocontrolado en la pagina 63 ahi se encuntras las ecuaciones que nos ayudan a configura el baud rate. y nos muestra 3, pero solo dos definene el modo asincrono que son:
LOW speed: BR = Fosc/(64(X+1))
High speed: BR = Fosc/(16(X+1))

Asi pues no esta diciendo que el micro en forma asincrona tiene dos modos de operacion: Low speed y High speed el cual se configura en el bit BRGH (bit 2 del rgistro TXSTA), el cual si es 0 es low speed y 1 para high speed.

Como no mencionas el baud rate que deseas voy suponer y proponer que deseas 9600 bps.

Entonces, veamos si es posible obtneer ese baud rate en el modo de low speed.
Despejando X de la primera ecuacion:
X = (Fosc/(64*BR)) - 1
Sustituyendo:
X = (4Mhz/(64*9600))-1
X = (4MHz/614400)-1
X= 6.5 -1
X = 5.5
Pero como solo pueden ser valores enteros este debe ser 6 el cual se cargara en el registro SPBRG

Ahora veamos cual es el porcentaje de error que obtendria con este valor en el SPBRG.
Primero Regresando a la ecuacion 1.
BR = 4MHz/(64(6+1))
BR = 4MHz(64*7)
BR = 4MHz/448
BR = 8928.57 bps

Entonces el porcentaje de error es:

%E = ((8928.57-9600)/9600)*100
%E = ((-671.43)/9600)*100
%E = -.069 *100
%E = -6.99%

Como puedes ver el nivel de porcentaje es muy alto, el standard serial recomineda que el error debe ser maximo del 3%. Por lo tanto no es posible generar ese baud rate en modo low speed.
Ahora veamos que pasa en modo high speed.
Despejando X de la ecuacion 2;
X= (Fosc/(16*BR)) - 1
Sustituyendo:
X = (4MHz/(16*9600)) - 1
X = (4MHz/153600) -1
X = 26.04 -1
X = 25.01 o sea 25.

Calculemos el baud rate generado con este valor.
BR = 4MHz/(16(25+1))
BR = 4MHz/(16*26)
BR = 4MHz/416
BR = 9615.38 bps

el porciento de error es:
%E = ((9615.38-9600)/9600)*100
%E = (15.38/9600)*100
%E = 0.0016 *100
%E = 0.16%

Como puedes ver el porcentaje de error es muy pequenio, menor al 1%, por lo tanto es aceptado.

Ahora ya sabes que debe colocar un 1 en el bit BRGH y que el registro SPBRG lo debes cargar con 25 decimal.

Con respecto a tu pregunta que cuantos bits, eso depende de tu procotocolo aunque lo standar es 8 bits.
Con respecto a que si es posible generar una interrupcion cuando se reciben datos ,calro que es posible y en el datasheet lo explica perfectamente. En las pagina 67 explica como configurar la transmision y en la pagina 69 la recepcion ademas de mencionar si se desea obtner una interrupcion cuando se reciben datos.

Saludos y espero que esta basta explicacion te ayude y vuelvo repetir no te molestes ni te ofendas, pero todo esto esta en el datasheet.

Elreypic.

Desconectado manuelroin24

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 665
Re: ayuda rs232
« Respuesta #2 en: 17 de Abril de 2007, 00:41:09 »
Mas claro ni el agua, felicitaciones mi amigo , muy buena explicación
El conocimiento se consigue a base de esfuerzo...

Desconectado josepunki

  • PIC10
  • *
  • Mensajes: 43
Re: ayuda rs232
« Respuesta #3 en: 17 de Abril de 2007, 04:24:17 »
gracias elreypic2.

si yo ya habia leido los datasheet del pic pero lo que, por ejemplo, me explicas para conseguir el valor de X no lo veia por ningun lado.es decir, yo veia las tablas y q podia ser highspeed o low tambien, pero me preguntaba cual será mi equipo, si los 4Mhz se encuentran en ambas tablas.

me has sido de mucha ayuda. gracias y saludos

Desconectado josepunki

  • PIC10
  • *
  • Mensajes: 43
Re: ayuda rs232
« Respuesta #4 en: 28 de Abril de 2007, 06:17:45 »
para seguir con el 232:

quiero que mi 16F871 produzca una interrupcion al recibir datos desde el PC. si no h entendido mal los datasheet esto se hace activando el bit RCIE. (solo hay que hacer eso?)

ahora viene mi pregunta mas profunda ;-) la interrucion que se produce, de que prioridad es? me lleba directamente a la direccion 04h para mespues ir a mi rutina?

otra cosa: tengo que activar de alguna forma las interrupciones en el micro?

muchas gracias

Desconectado PICpegaso

  • PIC16
  • ***
  • Mensajes: 124
Re: ayuda rs232
« Respuesta #5 en: 25 de Mayo de 2007, 17:19:35 »
Compañero jose te recomiendo que leas este adjunto para que despejes tantas dudas, seguro que te las resolvera rapido, es una parte que se centra en las interrupciones de los 16f87x,
saludos

Fabiancho

Cuando se tiene un buen POR QUÉ, siempre se encuentra el CÓMO

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: ayuda rs232
« Respuesta #6 en: 26 de Mayo de 2007, 03:47:12 »
hola josepunki, me animo a preguntarte algo mas , sabes programar un pic ? no es de mala fe mi pregunta, sino que las personas que han posteado pueden darte la mejor información del mundo, pero, si no posees la suficiente experiencia para llevarlo a cabo, entonces creo que deberias empezar a caminar antes de correr.  :-)
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado josepunki

  • PIC10
  • *
  • Mensajes: 43
Re: ayuda rs232
« Respuesta #7 en: 31 de Mayo de 2007, 08:15:05 »
hola microcadaver.

pues en ello estoy. tengo hecho un programa para una central de alarmas que en teoria me funciona y en breves pasare a la práctica...
acabo de recibir mi primer PIC y el programador ya esta esperando, asi que probaré con pequeños programillas hasta que funcione del todo

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: ayuda rs232
« Respuesta #8 en: 31 de Mayo de 2007, 11:03:39 »
ah bacan, entonces no tienes porque correr pues te van a salir errores que no le vas a encontrar ni pies ni cabeza, poco a poco amigo, si puedes consiguete un entrenador de pictambien, o sino hazte uno, lo cual seria mejor aún :mrgreen: :mrgreen: exitos y no dudes en postear lo que en adelante vas a experimentar!!
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado josepunki

  • PIC10
  • *
  • Mensajes: 43
Re: ayuda rs232
« Respuesta #9 en: 01 de Junio de 2007, 11:32:04 »
ya dispongo de fuente de alimentacion, placa blanca y los componentes de mi proyecto. Tambien tengo un programador, pero no se si es alguno de los que se nombran en el foro. Lo compré en una tienda y es de marca Velleman, el modelo K8076, y puede grabar diferentes PICs de hasta 40 pines.
estoy enmpezando a probar y a soldar mi PCB y en cuanto pueda implementaré la programacion de mi micro, y por lo que he visto en este foro hay conocimentos y buena voluntad como para diseñar cualquier cosa.

muchas gracias

Desconectado dogflu66

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3510
Re: ayuda rs232
« Respuesta #10 en: 03 de Junio de 2007, 06:19:02 »
Que tal Josepunki,

-------------------------------------------------------

Elreypic.



Esta magnifica tu explicacion....  :-)

Compañero jose te recomiendo que leas este adjunto para que despejes tantas dudas, seguro que te las resolvera rapido, es una parte que se centra en las interrupciones de los 16f87x,
saludos



Muy buena esa info para tenerla a mano...  :-)
Saludos desde Granada, España.


 

anything