Autor Tema: Pregunta sobre BRGH (High Baud Rate Select bit)  (Leído 3651 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado alperez

  • PIC18
  • ****
  • Mensajes: 255
Pregunta sobre BRGH (High Baud Rate Select bit)
« en: 08 de Noviembre de 2012, 10:12:39 »
Hola amigos, vengo otra vez con una duda, y es que no sé que criterios se deben utilizar para este bit de configuracion de la uart.
Tengo FCY de 2MHz y quiero un BaudRate de 9600, y según mis calculos, tengo:

para BRGH=0 ==> UxBRG=12(12.028)   ERROR=0.1625%
para BRGH=1 ==> UxBRG=51(51.083)   ERROR=0.1625%

Supongo que BRGH=0 por el redondeo a entero, pero no estoy seguro que esto tenga algo que ver ya que el error es el mismo

P.D.: estoy con un pic24fj256gb106 y programo en XC16

Gracias
       

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Pregunta sobre BRGH (High Baud Rate Select bit)
« Respuesta #1 en: 08 de Noviembre de 2012, 19:53:06 »
  En ese caso me parece que sería indistinto ya que con cualquier valor que tome BRGH, el error será el mismo.
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado alperez

  • PIC18
  • ****
  • Mensajes: 255
Re: Pregunta sobre BRGH (High Baud Rate Select bit)
« Respuesta #2 en: 09 de Noviembre de 2012, 05:48:01 »
  En ese caso me parece que sería indistinto ya que con cualquier valor que tome BRGH, el error será el mismo.

Pienso que así es, pero ¿que significa baja y alta velocidad?

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Pregunta sobre BRGH (High Baud Rate Select bit)
« Respuesta #3 en: 09 de Noviembre de 2012, 08:33:22 »
  Mirando una tabla demostrativa del pic 16F877 veo que con BRGH = 1 y cristal de >= 10 MHz no se puede lograr una velocidad baja de 1200 baudios. Sin embargo, con BRGH = 0 si se puede lograr. Tal vez se refiera a eso con alta y baja velocidad.

  Con BRGH = 1 y frecuencia de oscilación alta, no se pueden lograr bajas velocidades de comunicación.
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Pregunta sobre BRGH (High Baud Rate Select bit)
« Respuesta #4 en: 09 de Noviembre de 2012, 08:41:18 »
En esa linea de PICs, el cristal ideal, que cumple perfecto con frecuencias altas y bajas es de 3,6864 Mhz.
Búsquenlo en las tablas y verán lo que digo...
Yo lo use durante mucho tiempo y es perfecto. :mrgreen: :mrgreen:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado alperez

  • PIC18
  • ****
  • Mensajes: 255
Re: Pregunta sobre BRGH (High Baud Rate Select bit)
« Respuesta #5 en: 09 de Noviembre de 2012, 11:30:57 »
En esa linea de PICs, el cristal ideal, que cumple perfecto con frecuencias altas y bajas es de 3,6864 Mhz.
Búsquenlo en las tablas y verán lo que digo...
Yo lo use durante mucho tiempo y es perfecto. :mrgreen: :mrgreen:

Ya pero intento poner lo que tengo... recycling

Desconectado alperez

  • PIC18
  • ****
  • Mensajes: 255
Re: Pregunta sobre BRGH (High Baud Rate Select bit)
« Respuesta #6 en: 10 de Noviembre de 2012, 05:51:39 »
Ahora tengo otro problema, si pongo un reloj de 4Mhz la uart envia basura, a 12 Mhz, igual, basura, pero si configuro el reloj interno a 8Mhz transmite correctamente. He probado con CCS y el resultado es el mismo
En el datasheet vienen unas tablas con datos a FCY = 1,4,8,12,16 Mhz,
¿debo entender que los xtal que puedo usar son 2,8,16,24 y 32 Mhz? Si así es no entiendo que el mejor sea 3,6864 Mhz.
¿puede que tenga un problema con el reloj externo?
¿serán los condensadores?

Añado: El USB sí que funciona con xtal 4Mhz. No me lo explico
« Última modificación: 10 de Noviembre de 2012, 06:23:19 por alperez »

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Pregunta sobre BRGH (High Baud Rate Select bit)
« Respuesta #7 en: 10 de Noviembre de 2012, 09:12:04 »
  La velocidad que debes tener en cuenta no es la del cristal sino la velocidad de trabajo interna. Como estás usando USB, supongo que estás trabajando a 48MHz (para poder trabajar a la velocidad del USB 2.0). Si esa es también la frecuencia de trabajo del núcleo del PIC, debería tomar esa como la frecuencia de oscilación para calcular el BaudRate.
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado alperez

  • PIC18
  • ****
  • Mensajes: 255
Re: Pregunta sobre BRGH (High Baud Rate Select bit)
« Respuesta #8 en: 10 de Noviembre de 2012, 09:57:20 »
  La velocidad que debes tener en cuenta no es la del cristal sino la velocidad de trabajo interna. Como estás usando USB, supongo que estás trabajando a 48MHz (para poder trabajar a la velocidad del USB 2.0). Si esa es también la frecuencia de trabajo del núcleo del PIC, debería tomar esa como la frecuencia de oscilación para calcular el BaudRate.


Segun el datasheet, la frecuencia que tengo que utilizar es FCY=FOSC/2.
No entiendo nada. Ahora viendo el datasheet veo un par de BIT's CPDIV que creo que es donde tengo que configurar el divisor para los perifericos, pero no entiendo entonces el FCY
Ahora no puedo hacer pruebas, pero muchas gracias de todas formas

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Pregunta sobre BRGH (High Baud Rate Select bit)
« Respuesta #9 en: 10 de Noviembre de 2012, 14:11:01 »
  Sí estás usando USB y cristal de 4 MHz seguramente tenés activado el PLL (para obtener los 48MHz del USB) -configuración XTPLL -.

  Observa la página 121 del datasheet que muestra un diagrama con el camino de las distintas configuraciones de oscilador.
  En la página 128 muestra mas en detalle como es el bloque y de allí se aprecia que cuando se tiene activo el PLL para poder generar los 48MHz para USB, la frecuencia base para el CPU es de 32MHz (96MHz del PLL / 3). De allí pasa por un preescaler para poder elegir entre 4 posibilidades de frecuencias para el "system clock", es dicha frecuencia la denominada FOSC, por lo tanto FCY es dicha FOSC/2.

  De allí se desprende que en el datasheet indique que el micro puede trabajar hasta 16 MIPS Los 32MHz de FOSC / 2.

  Tendrás que ver como tienes los bits CPDIV, como tu bien comentas, y en base a ello vas a poder determinar cual es tu FCY. En caso de que los bits estén en 00, tu clock sería 32MHz por lo tanto FCY = 16MHz
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado alperez

  • PIC18
  • ****
  • Mensajes: 255
Re: Pregunta sobre BRGH (High Baud Rate Select bit)
« Respuesta #10 en: 11 de Noviembre de 2012, 06:40:27 »
  Sí estás usando USB y cristal de 4 MHz seguramente tenés activado el PLL (para obtener los 48MHz del USB) -configuración XTPLL -.

  Observa la página 121 del datasheet que muestra un diagrama con el camino de las distintas configuraciones de oscilador.
  En la página 128 muestra mas en detalle como es el bloque y de allí se aprecia que cuando se tiene activo el PLL para poder generar los 48MHz para USB, la frecuencia base para el CPU es de 32MHz (96MHz del PLL / 3). De allí pasa por un preescaler para poder elegir entre 4 posibilidades de frecuencias para el "system clock", es dicha frecuencia la denominada FOSC, por lo tanto FCY es dicha FOSC/2.

  De allí se desprende que en el datasheet indique que el micro puede trabajar hasta 16 MIPS Los 32MHz de FOSC / 2.

  Tendrás que ver como tienes los bits CPDIV, como tu bien comentas, y en base a ello vas a poder determinar cual es tu FCY. En caso de que los bits estén en 00, tu clock sería 32MHz por lo tanto FCY = 16MHz

Esto lo tenia claro y ya habia visto esa pagina del datasheet, es más, hay un para de bit's (DOZE), que son para cambiarle la velocidad a la CPU independientemente de los perifericos para poder ahorrar energia. Todo esto me tenia confundido, porque tenia estos bits para que el micro trabajase a 16MIPS paro hasta ahora creía que FOSC= frecuencia del oscilador, pero está claro que NUNCA se debe dar nada por sentado.

Mucas gracias, ya he cambiado FCY = 16MHz y listo, ya funciona la UART


 

anything