# pic18f4550



## isa (May 27, 2006)

bueno queria ver si me pueden ayudar, no entiendo como configurar el PLL de este pic. al parecer usando este pll interno se pude llegar a una frecuencia de clock de 96Mhz alguien entinde como es esto?
ademas, usando un cristal de 48Mhz, la formula para determinar un tiempo para una interrupcion debo de realizar la siguiente operacion ? 
 tiempo de interrupcion= 4*(1/48Mhz)*timer1.... bueno esa formula usaba para 16f877a pero usando 20Mhz... para este pic no se si sea asi. 
ademas este pic tambien se pude programar usando puerto paralelo o solo usb?
espero me ayuden 
isa


----------



## pelado (Jun 1, 2006)

En la pagina de microchip hay buen material sobre este pic.
Para programarlo, yo el bootloader lo carge in-circuit usando el programador de pics que esra en www.pablin.com.ar y como software el winpic800, este ultimo no recuerdo de donde lo baje pero es libre. Despues si lo programsa desde el usb, usando un soft que te da microchip (libre)


----------



## maunix (Jun 6, 2006)

isa dijo:
			
		

> bueno queria ver si me pueden ayudar, no entiendo como configurar el PLL de este pic. al parecer usando este pll interno se pude llegar a una frecuencia de clock de 96Mhz alguien entinde como es esto?
> ademas, usando un cristal de 48Mhz, la formula para determinar un tiempo para una interrupcion debo de realizar la siguiente operacion ?
> tiempo de interrupcion= 4*(1/48Mhz)*timer1.... bueno esa formula usaba para 16f877a pero usando 20Mhz... para este pic no se si sea asi.
> ademas este pic tambien se pude programar usando puerto paralelo o solo usb?
> ...



Mira veo que estas algo confundido.

El pic lo puedes programar con un programador.  Si el programador está coneectado al puerto serie, al usb o al paralelo esa es otra cuestión.

Lo otro es un 'bootloader'.  El bootloader es un software que debe estar en el pic, pero en primera instancia 'algun programador' se lo debe cargar.  Luego si , el bootloader te permite agilizar la actualizacion de tu software.

En cuanto al PLL te explico que es interno ypermite cuadruplicar la frecuencia del oscilador.

48Mhz es la frecuencia máxima que puedes lograr y la puedes lograr con un cristal de 12Mhz y habilitando el PLLx4.


Saludos


----------



## Nika_dmm (Mar 5, 2009)

hola me podria yudar no se como configurar el osilador interno


----------



## LIAMNEESON (Mar 6, 2009)

En la página de RedPic viene un artículo acerca de.

Te adjunto una imagen para que te des una idea de como está internamente la cuestión del ocscilador.


----------



## sebitronic (Dic 20, 2009)

Hola, algo estuve leyendo en el datasheet de un 18F2550 y si no lei mal no se puede usar la misma fuente de oscilador para el modulo usb que para el resto de los perifericos, ose que si usas el pll para el usb tenes que usar el oscildor directo al nucleo, quisiera saber si es asi o traduci mal.


----------



## camilo9793 (Oct 9, 2010)

Hola a todos, tengo un problema con el pic19f4550, mas exatamente con el oscilador, inteno realizar el encendido y apagado de un led a cierta frecuencia en CSS picc, la simulación en proteus es perfecta, pero ya monatndolo noooooo, siempre la frecuencia es m{as baja o mucho más alta, de lo que yo establezco en mi programa,ya tuve en cuenta el PLL y el CPUDIV y nada.. pienso que el problema estará en los fuses, los he cambiado como 10 veces y tampoco... intent{e con el oscilador interno, mediante el fuse INTCR_iO y tampoco!!, este es mi código en C, por si alguien me puede ayudar a encontrar el error..

#include    <18f4550.h>
#use        delay (clock=4M)
//#fuses      xt,NOWDT,NOPROTECT,NOLVP,NOMCLR        //DETERMINO LOS FUSES DEL MICRO
#fuses     XTPLL,MCLR,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL1,CPUDIV1,NOVREGEN,NOMCLR
//#fuses      HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN

#use        fast_io(b)
#use        fast_io(a)

void main (void)
{
   set_tris_b (0x00);                           //DEFINIENDO PORTB COMO SALIDA
   set_tris_a (0x00);      


for(;                                          //bucle infinito

   {

     output_high(pin_a0);                     
     delay_ms(200);
      output_low(pin_a0);
      delay_ms(200);

   }

}

PDTA: Programo el micro con el pickit2.


----------



## ByAxel (Oct 10, 2010)

Que tal.
Dale una leída a este tema...
http://picmania.garcia-cuervo.net/conceptos.php#USB4Mhz, te fijas en los diagramas en bloque del módulo del oscilador...

Por ejemplo para usar el Oscilador interno a 8Mhz...


```
#FUSES INTRC_IO
#FUSES NOIESO
#FUSES FCMEN
#FUSES NOMCLR
#FUSES NOXINST

#use delay(clock=8Mhz)   // Le indicas al compilador que el CPU va a 8Mhz

...
...
// Y luego de MAIN...
...
setup_oscillator(0xF6);
```

saludos


----------



## camilo9793 (Oct 10, 2010)

Muchas gracias por responder, mas tarde lo pruebo en protoboard de nuevo con los fuses que tu me diste.. pero me surge una pregunta: setup_oscillator(0xF6); esta instrucción que hace dentro del programa?? pues la verdad no la habia visto. Gracias de nuevo


----------



## ByAxel (Oct 10, 2010)

camilo9793 dijo:


> me surge una pregunta: setup_oscillator(0xF6); esta instrucción que hace dentro del programa?? pues la verdad no la habia visto. Gracias de nuevo



setup_oscillator(0xF6); en binario *11110110*.
Modifica el registro OSCCON; según el datasheet del PIC es para escoger la velocidad del oscilador interno (desde 8Mhz, 4Mhz, 2Mhz, etc..) junto con el resto de sus bits para configurar adecuadamente el oscilador (eso indica que puedes cambiar la velocidad incluso cuando el PIC esté trabajando ). Opcionalmente tiene el registro OSCTUNE para ajustar mucho más la frecuencia...

saludos.


----------



## camilo9793 (Oct 10, 2010)

Muchas gracias BYAxel, efectivamente con esata instrucción en CSS logro modificar el registro OSCCON y asi mismo cambiar la frecuencia del oscilador interno del micro; pero intenté con oscilador externo de 4Mhz y de 16 y de nuevo tuve problemas.. modifique el OSCCON en los bits de menor peso, que segun el data sheet permiten elegir la fuente del oscilador: interno,primario(externo) y otro...  pero el led de flahea incluso sin oscilador conectado. Debo configurar algo mas?? para el externo aparte del PLL, el CPUDIV, los fuses y el registro OSCCON?? Muchas gracias


----------



## ByAxel (Oct 11, 2010)

Con la imagen:
- Desde "Primary Oscillator" hacia abajo en Oscillator postcaler "CPUDIV" al ser 4Mhz, escoges la división entre 1; continuas... FOSC3:FOSC0 son de los fuses cuando escoges el tipo y junto al registro OSCCON se selecciona la fuente del oscillador (generalmente no se usa el OSCCON cuando se usa el oscilador externo ya que inicia con valores pre-establecidos) y toma en cuenta:

#FUSES NOIESO //Internal External Switch Over mode disabled
#FUSES FCMEN  //Fail-safe clock monitor enabled

saludos.


----------



## asdlocal (Feb 7, 2011)

Tengo problemas al configurar los fuses del uC18f4550, pues necesito una velocidad de lectura de 40Mhz para hacer un sistema de control.... 
La verdad es que no se como hacerlo....
Confio en su ayuda y en que me puedan ayudar con respecto a esto..... 
les agradezco de antemano


----------

