Autor Tema: Si quisiera colocar un cristal a un MC9S08SH8, que registro deberia configura?  (Leído 7807 veces)

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

Desconectado cicloide2

  • PIC18
  • ****
  • Mensajes: 359
Hola, eso cual seria el procedimiento para configurar el cristal externo de 8Mhz, cuales los pasos a seguir sin usar el Procesor Expert, que registros y como configurarlos para que mi micro funcione con un cristal externo. La coneccion esta clara pero la configuracion la veo complicada y en verdad no se por donde comenzar.

Agradeceria una explicacion clara como para quien no tiene mucha idea de hacerlo( o sea, yo).

Gracias :?

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Hola cicloide, en estos días te subo algún código de ejemplo, yo trabajo con el SH32 que para el caso es el mismo. Se paciente estoy hasta las manos de cosas.

Saludos !

Desconectado Freescalin

  • PIC10
  • *
  • Mensajes: 22
Hola...
En el sigiente link hay un curso básico de 9s08 que puede orientarte, específicamente los capítulos 3 y 4.

http://www.edudevices.com.ar/articulos_MCUs_hc9s08.htm

Yo uso desde hace poco tiempo el SH8, pero hasta ahora siempre con oscilador interno, no te podría decir nada "práctico" respecto a tu pregunta.
De todos modos, aunque quieras hacerlo "a mano", lo mismo podés chusmear como lo hace el Device Initialization. Al ir cambiando las selecciones, podés ver cómo se "mueven" los valores de los registros, y entender un poco más el "porqué" de los valores.
Espero que te sirva.
"El Datasheet es al Programador lo que la Biblia al Predicador"

Desconectado cicloide2

  • PIC18
  • ****
  • Mensajes: 359
Gracias Freescalin y gracias RICHI777, tanto tiempo como andas RICHI777?, boy viendo lo que subio Freescalin , mientras espero tu codigo, que te parese?
Un detalle que se me olbido aclarar, que sea en C por favor, gracias nuevamente.
Saludos ;-) :-/ ;-)
« Última modificación: 23 de Mayo de 2013, 18:49:14 por cicloide2 »

Desconectado cicloide2

  • PIC18
  • ****
  • Mensajes: 359
Freescalin, una pregunta estube viendo, la info que me brindastes y me surgio una duda, que no tiene que ver con el ocilador externo sino con la configuracion del ocilador interno, (pido disculpas si me desvie del post orginal) en el articulo N4, pagina 4 cuando dice :

El oscilador interno de referencia es ajustable por el usuario del mismo modo que lo
explicado para dicho modo en el módulo ICG. El uso del modo FEI es una manera
práctica de disponer de un oscilador interno con razonable precisión para muchas
aplicaciones, sin tener que recurrir al uso de líneas externas para la conexión de cristal
alguno, esto es particularmente valioso cuando el MCU elegido dispone de pocos pines
y el proyecto necesita de líneas I/O. La precisión del oscilador interno cuando se
encuentra ajustado con los valores de fábrica (almacenados en una zona de FLASH
para su utilización) es de +/- 2% en todo el rango de temperatura de trabajo del MCU
lo
que permite que se puedan efectuar aplicaciones de comunicaciones seriales
asincrónicas (UART / SCI) sin oscilador externo con total seguridad, ya que la
tolerancia en el desvío del Baud Rate de una PC o dispositivo serial asincrónico similar
es del orden de +/- 5%.

Como se si esos valores los tengo bien configurados en mi micro , donde puedo verlos cuales serian para este modelo de micro por el cual pregunto(MC9S08SH8 )ya que mis practicas fueron hasta ahora con oscilador interno a 8 Mhz, y tube inconvenientes de cuelgue del micro y es por eso que pensaba colocar un cristal externo (cuelgues al usar el modulo KBI para prender un led y apagarlo con el mismo pulsador, como veran nada dificultoso solo que el micro se quedaba tildado despues de varios usos del pulsador, y leyendo esto quisa mi micro no tenga bien configurado estos valores que dice el articulo ) de todas formas me gustaria aprender a configurar bien un oscilador externo, no ,esto solamente surgio de leer el articulo.

Gracias..
« Última modificación: 23 de Mayo de 2013, 20:25:40 por cicloide2 »

Desconectado Freescalin

  • PIC10
  • *
  • Mensajes: 22
Estimado Cicloide2...
Yo me hice esta pequeña guía para el uso del oscilador interno:

HCS08 - Seteos de Clock

Modo por default: FEI (Así "arranca" el micro si uno no toca nada en la inicialización).

Referencia interna = 31.25 Khz

FLL out clock = .03125 Mhz * 1024 = 32 Mhz

Internal Bus Clock (Fbus):
Fbus = FLLout / BDIV / 2
Con FLLout = 32 Mhz
Fbus = 16 Mhz ; para BDIV = 00 (divide por 1)
Fbus =  8 Mhz ; para BDIV = 01 (divide por 2)
Fbus =  4 Mhz ; para BDIV = 10 (divide por 4)
Fbus =  2 Mhz ; para BDIV = 11 (divide por 8)

Para usar clock interno (sin cristal) con alguna de las Fbus anteriores
ICSC1 = %00000110
Bit 2 = 1 ...selecciona referencia interna
Bit 1 = 1 ...habilita la ref. int para usar en los periféricos

Y por ejemplo, para Fbus = 4 Mhz
ICSC2 = %10000000
Bit 7 = 1 y Bit 6 = 0 forman el BDIV (y así divide por 4)

De hecho, hasta ahora siempre he usado el Clock así, y no he tenido ningún problema de cuelgues, ni nada parecido. Estoy usando el SCI sin ningún problema, los Timer (TPM) en Output Compare y en Input Capture, y varias funciones (Subrutinas) propias, sin ningún problema.
Yo también me debo la prueba de Clock con cristal, pero ando corto de tiempo...
Saludos!



"El Datasheet es al Programador lo que la Biblia al Predicador"

Desconectado cicloide2

  • PIC18
  • ****
  • Mensajes: 359
Boy a probar y comento ;-)

Gracias.

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Muy buena respuesta FreeScalin. Yo para ciertos periféricos uso o copio lo que hace el Process Expert, aunque no me gusta el código que genera debo reconocer que la información sobre el uso de registros es bastante buena.
Basicamente lo que hago es crear un nuevo proyecto con el micro que voy a utilizar.

Pego algunas imágenes ...





Uno debe ir seteando varios valores, como la frecuencia del XTAL, la frecuencia del bus, etc.

Una vez hecho esto, hay que seleccionar la opción para generar código.

Después simplemente mirando el código generado podemos pegar el código que se refiere al clock.

Código: C
  1. /*  System clock initialization */
  2.   ICSTRM = *(unsigned char*)0xFFAF;    /* Initialize ICSTRM register from a non volatile memory */
  3.   ICSSC = *(unsigned char*)0xFFAE;     /* Initialize ICSSC register from a non volatile memory */
  4.   /* ICSC1: CLKS=0,RDIV=7,IREFS=0,IRCLKEN=1,IREFSTEN=0 */
  5.   setReg8(ICSC1, 0x3A);                /* Initialization of the ICS control register 1 */
  6.   /* ICSC2: BDIV=1,RANGE=1,HGO=0,LP=0,EREFS=0,ERCLKEN=1,EREFSTEN=0 */
  7.   setReg8(ICSC2, 0x62);                /* Initialization of the ICS control register 2 */
  8.   /* GNGC: GNGPS7=0,GNGPS6=0,GNGPS5=0,GNGPS4=0,GNGPS3=0,GNGPS2=0,GNGPS1=0,GNGEN=0 */
  9.   setReg8(GNGC, 0x00);

Este código es generado en el módulo cpu.c

Normalmente yo hago esto. También es recomendable leer una AN donde explica las tres clases de clock que trae la familia S08, lamentablemente no la encuentro.

Saludos !
« Última modificación: 28 de Mayo de 2013, 21:43:47 por RICHI777 »

Desconectado cicloide2

  • PIC18
  • ****
  • Mensajes: 359
Bueno muchachos, si con todas estas instrucciones no logro ponerle el cristal al micro es porque no quiero. RICHI777, gracias, le comente a Freescalin que para descatar ruidos ingresados por los cables conectados en mi protoboard, decidi hacer un pequeño PCB para poder agregar y quitar el cristal y asi poder practicar los dos modos, y como dige evitar ruidos por los cables, cuando lo tenga listo comenzare a implementar todas las opciones que me sugirieron.

Saludos y gracias. ((:-))

Desconectado Freescalin

  • PIC10
  • *
  • Mensajes: 22
Bueno, así es... yo uso el "Device Initialization" y genero código "automático". Pero luego lo uso "tal cual", llamando la MCUinit en el main.
Eso si, aclaro... yo programo en assembbler, porque nunca me puse a estudiar "C" (vagancia la mia). o he usado tantos años que ya no me molesta "descular hormigas" con los "nemónicos" y esas cosas.... Cuestión de costumbre, y en este momento, de velocidad.
Saludos, vamos padelante....
"El Datasheet es al Programador lo que la Biblia al Predicador"

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Si quisiera colocar un cristal a un MC9S08SH8, que registro deberia configura?
« Respuesta #10 en: 31 de Mayo de 2013, 00:44:36 »
Bueno, así es... yo uso el "Device Initialization" y genero código "automático". Pero luego lo uso "tal cual", llamando la MCUinit en el main.
Eso si, aclaro... yo programo en assembbler, porque nunca me puse a estudiar "C" (vagancia la mia). o he usado tantos años que ya no me molesta "descular hormigas" con los "nemónicos" y esas cosas.... Cuestión de costumbre, y en este momento, de velocidad.
Saludos, vamos padelante....

Bien ahí !!!

Saludos !