TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: c4_esp_VR en 14 de Julio de 2009, 05:02:14
-
Hola compañeros:
Nunca me habia pasado esto con un pic, a ver si con un poco de suerte a alguno le ha ocurrido lo mismo. Utilizo un pic 18f13k50 que son para usb de low cost con el siguiente código:
#include <18F13K50.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#define LEDV PIN_C4
#define LED_ON output_high
#define LED_OFF output_low
int i=0;
void main(void)
{
while(true)
{
LED_OFF(LEDV);
delay_ms(1000);
i=0;
LED_ON(LEDV);
delay_ms(1000);
i=1;
}
}
Resulta que el led se me apaga a los 10 seg y se enciende a los 10 seg y así sucesivamente, cuando tenia que ser cada 1 segundo, el cristal que uso es de 12Mhz y el esquemático es el siguiente
Pin1 -> 5V
Pin20 -> GND
Pin2 y Pin3 -> Clk 12Mhz
Pin4 -> 5V con una resistencia de 4k7 entre Pin4 y Pin1
Pin6 -> Led verde
Adjunto el diagrama de pines del pic y una foto en directo de esta, en un principio, una maravilla de pic.
Diagrama de pines 18f13k50 (http://www.4shared.com/file/117968953/4cc798b4/PinDiagram_18f13k50.html)
Dicho programa lo uso con un 18f45k20 y con un 18f4550 y funciona perfectamente, tambien hay que decir que esto lo hago con CCS a través de MPLab para programarlo con el PicKit3 y resulta que el único pic que no puedo debugear es el que falla aunque si lo puedo programar perfectamente. Se me olvidaba comentar que este programa funciona simulandolo en proteus con el pic 18f13k50, es decir, el que no funciona...
Si alguien tiene alguna idea de que puede estar pasando, o tiene una ligera idea del problema que lo mencione y lo pruebo in situ :) :) :) ya que tengo todo montado a mi vera.
Un saludete y gracias.
-
Tiene toda la pinta de que no configuras bien los fuses del oscilador... en concreto el PLL CPUDIV y USBDIV
-
Pero en este caso imagino que no haría falta ya que no voy a usar el USB para nada, de todas maneras lo intento.
Un saludete.
-
Efectivamente era por los fuses...pero ni el emulador de MPLab, ni el emulador de Proteus habian dicho absolutamente nada...aqui dejo los fuses que debería de utilizar para que funcionase.
#include <18F13K50.h>
#fuses HS, NOWDT, NOPROTECT, NOLVP, USBDIV1, CPUDIV1
#define LEDV PIN_C4
#define LED_ON output_high
#define LED_OFF output_low
#use delay(clock = 12000000)
int i=0;
void main(void)
{
while(true)
{
LED_OFF(LEDV);
delay_ms(1000);
i=0;
LED_ON(LEDV);
delay_ms(1000);
i=1;
}
}
Asi que por mi parte tema cerrado :mrgreen: