Autor Tema: Adaptando mis rutinas de retraso a una nueva frecuencia...  (Leído 3492 veces)

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

Desconectado manwenwe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2211
Adaptando mis rutinas de retraso a una nueva frecuencia...
« en: 27 de Enero de 2007, 15:56:50 »
Hola, estoy trabajando con un PIC18F4550 y hasta ahora había utilizado un cristal de 4Mhz(XT) con PLL desactivado. Ahora necesito cambiar a 32Mhz y para esto he cambiado mis rutinas de retrasos(para segundos, milisegundos y microsegundos) pero no se porque no me funcionan, por eso os pido ayuda; ah! bueno programo en C18. Esta es mi rutina para conseguir multiplos de 1 segundos(uso como base las rutinas de delays que proporcina microchip):

Código: [Seleccionar]
void delaySegundos(int8 segundos){

int8 i,j;

for(i=0;i<segundos;i++)
for(j=0;j<4;j++)
Delay10KTCYx(200); // Delay10KTCYx(x) = x * 10000 ciclos de intrucción...

}

Mis cuentas son las siguientes:

Tciclo_de_instrucción = 4/frecuencia = 4/32Mhz = 125nSeg

DelaySegundos(x) = x * 4 * 200 * 10000 * 125nSeg = x Seg.

El caso es que obtengo el triple del retraso esperado y no explico por qué? Ejemplo: en vez de 10 segundos, obtengo 30....

Tengo el oscillador definido como HS y el PLL desactivado(PLL = 1). Lo único que podría ser problemático es que no tengo puestos los condensadores del cristal, pero hasta ahora con 4Mhz no tuve ningun problema por esto: además ¿una desviación de frecuencia del 200%, puede darse debibo a no poner los condensadores? Realmente no lo se...

Espero algo de ayuda o consejos! Pues tampoco se si estoy obviando algún detalle que me pueda "fastidiar el invento"  :D :D :D :D

Saludos y gracias de antemano!
Ojo por ojo y todo el mundo acabará ciego - Mahatma Gandhi -

Desconectado manwenwe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2211
Re: Adaptando mis rutinas de retraso a una nueva frecuencia...
« Respuesta #1 en: 28 de Enero de 2007, 11:30:25 »
Hola de nuevo, he estado mirando por internet los rangos de frecuencia de los cristales HS y he visto que van de 4-20Mhz.... esto es algo que no sabía :( :( :(

Entonces ¿la única forma de que un PIC funcione a más de 20Mhz es utilizar el PLL?

Por último: yo pensaba que tenía algún error en la función de retardo, por eso postee en este subforo... como finalmente parece que el problema no tiene que ver con el lenguaje C, pido disculpas :-). Si algún moderador lo ve espero que lo cambie de subforo....

Saludos!
Ojo por ojo y todo el mundo acabará ciego - Mahatma Gandhi -

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18269
    • MicroPIC
Re: Adaptando mis rutinas de retraso a una nueva frecuencia...
« Respuesta #2 en: 28 de Enero de 2007, 12:16:29 »
Efectivamente, sólo puedes poner cristales hasta 20MHz. A partir de ahí tienes que jugar con el PLL.
Y ponle los condensadores; aunque pueda funcionar sin ellos si falla no sabrás de quién es la culpa ;-)

Desconectado asogen

  • PIC10
  • *
  • Mensajes: 15
Re: Adaptando mis rutinas de retraso a una nueva frecuencia...
« Respuesta #3 en: 18 de Febrero de 2007, 01:30:55 »
hey, yo tengo un programa a 4 mhz, y lo queria a 20, organice el programa con los retardos y todo, en proteus me funciona bien con la nueva frecuencia (xtal de 20) como yo quiero, pero despues de quemar el pic y ensayarlo, no funciona y hace cosas que no son. mi pregunta es  sera el micro es un 16f877a i/p, o sera mi quemador?? :x :x :x :( :(, gracias a todos y buenos dias


Desconectado asogen

  • PIC10
  • *
  • Mensajes: 15
Re: Adaptando mis rutinas de retraso a una nueva frecuencia...
« Respuesta #5 en: 18 de Febrero de 2007, 10:08:52 »
......... fuses?     :shock: :shock: :shock: :shock: :shock: :shock: :shock:, que se supone que sea eso y perdoname la ignorancia.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18269
    • MicroPIC
Re: Adaptando mis rutinas de retraso a una nueva frecuencia...
« Respuesta #6 en: 18 de Febrero de 2007, 11:04:21 »
Donde ponga XT cámbialo por HS y prueba.

Desconectado asogen

  • PIC10
  • *
  • Mensajes: 15
Re: Adaptando mis rutinas de retraso a una nueva frecuencia...
« Respuesta #7 en: 20 de Febrero de 2007, 22:05:45 »
epale nocturno  :lol: :lol: :P :P :P :P :D :D :mrgreen: :mrgreen: :mrgreen:
ahora puedo disfrutar de los 20 mhz. gracias

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18269
    • MicroPIC
Re: Adaptando mis rutinas de retraso a una nueva frecuencia...
« Respuesta #8 en: 21 de Febrero de 2007, 02:51:16 »
Me alegro que te funcione. Si miras en el datasheet, hay una sección que explica cómo se configura el oscilador, y ahí verás XT, HS y el resto de opciones.

Desconectado asogen

  • PIC10
  • *
  • Mensajes: 15
Re: Adaptando mis rutinas de retraso a una nueva frecuencia...
« Respuesta #9 en: 26 de Febrero de 2007, 17:53:23 »
ok gracias :mrgreen: :mrgreen: :mrgreen:

Desconectado manwenwe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2211
Re: Adaptando mis rutinas de retraso a una nueva frecuencia...
« Respuesta #10 en: 27 de Febrero de 2007, 01:38:49 »
Hola, solucioné en parte mi problema(con el que inicié el post) pero ahora me surge una duda  relacionada con la frecuencia de xtal... espero que  me podais aconsejar: ¿cúal es la máxima frecuencia a la que pueden operar los módulos  LCD 2x16(con controlador hitachi)?

Comento esto porque yo trabajaba con mi Pic a 4Mhz y con la programación del módulo a través de la librería XLCD de C18. Esta librería te pide 3 rutinas de retardo para hacer funcionar el LCD: 15ms, 5ms y 18 ciclos de reloj. Bueno, hace poco subí la frecuencia de mi Pic hasta 10Mhz; tuve algunos problemas para poner a funcionar el LCD ya que no inicializaba con las "nuevas rutinas" de retardo: con las de 15ms y 5ms no tuve mucho problema en cambio tuve que subir la de 18 ciclos de reloj porque si no el LCD no visualizaba nada.

El caso es que ahora necesito subir,de nuevo, la frecuencia de operación de mi Pic hasta los 40Mhz(utilizando PLL). Cambíe de nuevo las rutinas de retardo pero en este caso por mucho que las aumente no consigo visualizar nada... Por esto me surge la duda de si existe una frecuencia máxima de operación del módulo, a la que este sea incapaz de distinguir las señales... o algo por el estilo.

Saludos y gracias!
« Última modificación: 27 de Febrero de 2007, 01:41:28 por manwenwe »
Ojo por ojo y todo el mundo acabará ciego - Mahatma Gandhi -


 

anything