TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: xufoo en 11 de Enero de 2011, 21:32:20

Título: Problema con delay_ms()
Publicado por: xufoo en 11 de Enero de 2011, 21:32:20
Hola a todos! Soy nuevo en el foro, y llevo ya un tiempo trasteando con PICs, pero a nivel de ensamblador, y hace poco que he empezado con CCS.

Entrando en materia...

#include <18F14k50.h>
#fuses INTRC_IO,CPUDIV1,NOWDT,NOPROTECT,NOLVP
#use delay(clock=8000000)
void main() {
   set_tris_c(0xF0);

   while(1){
      output_high(PIN_C5);
      delay_ms(1000);
      output_low(PIN_C5);
      delay_ms(1000);
   }
}

  El código no hace más que encender y apagar un led, el problema es la temporización: si en el #use delay() uso cualquier valor, el led está
un segundo apagado y uno encendido; pero si pongo 8MHz, únicamente está medio segundo en cada estado  :? He mirado en el hilo de bugs
pero no he encontrado nada...
  Lo único que modifico es la tercera línea; estoy usando la versión 4.108 de CCS con un pic18f14k50.

  Un saludo!!
Título: Re: Problema con delay_ms()
Publicado por: Nocturno en 12 de Enero de 2011, 02:58:07
Ese micro admite un amplio rango de frecuencias para su oscilador interno, deberías establecer la que quieres utilizar al principio de tu main, utilizando setup_oscillator()
Título: Re: Problema con delay_ms()
Publicado por: xufoo en 12 de Enero de 2011, 06:58:27
Sí, he probado eso también pero con el mismo resultado: para cualquier frecuencia genera los retardos correctamente, excepto para la de 8MHz
Título: Re: Problema con delay_ms()
Publicado por: MGLSOFT en 12 de Enero de 2011, 08:39:29
Porque no miras en la lista de bugs oficial de CCS ??   :lol: :lol: :lol:

Aqui (http://www.ccsinfo.com/devices.php?page=versioninfo) esta!!  :mrgreen: :mrgreen:
Título: Re: Problema con delay_ms()
Publicado por: xufoo en 13 de Enero de 2011, 17:27:07
  Ya he encontrado el problema...me sobra el #fuses CPUDIV1 (que pensaba que sería equivalente a no dividir, pero ese es NOCPUDIV  :oops:), y como la frecuencia de 8MHz es la que coge en caso de usar el módulo CPUDIV, es la única con la que me daba el error...por si le sirve a alguien!
  De todas formas gracias por la ayuda!