Autor Tema: diferencia entre crystal clock speed y cpu clock speed gama 18f  (Leído 2912 veces)

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

Desconectado dkmar11

  • PIC10
  • *
  • Mensajes: 14
diferencia entre crystal clock speed y cpu clock speed gama 18f
« en: 05 de Octubre de 2016, 16:04:41 »
Hola a todos.
estoy haciendo un proyecto para control de unos servomotores para la apertura de una puerta, con LCD y keypad, bueno todo bien, pero como es comun por aqui, el uso del servomotor y el ccp requiere un reloj de baja frecuencia, cosa que no encuentro, pero me di cuenta que en la seria 18f, puedo elegir el ciclo maquina, esto funciona corectamente??, ya que con la configuracion quedaria hacia:

Código: [Seleccionar]
#include <18F4550.h>
#device ADC=16

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES WDT128                   //Watch Dog Timer uses 1:128 Postscale
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOXINST                  //Extended set extension and Indexed Addressing mode disabled (Legacy mode)

#use delay(clock=1MHz,crystal=4MHz)

con esta configuracion logro tener un PWM de 62hz para el control del servo sin complicaciones, pero mi pregunta es, cual es la diferencia de clock=1MHz y crystal=4MHz, para que se pone #device ADC=16, cuando se crea el documento????

muchas gracias.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:diferencia entre crystal clock speed y cpu clock speed gama 18f
« Respuesta #1 en: 05 de Octubre de 2016, 16:06:32 »
Que PIC estamos hablando ?

Desconectado dkmar11

  • PIC10
  • *
  • Mensajes: 14
Re:diferencia entre crystal clock speed y cpu clock speed gama 18f
« Respuesta #2 en: 05 de Octubre de 2016, 16:10:24 »
18f4550 :)

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:diferencia entre crystal clock speed y cpu clock speed gama 18f
« Respuesta #3 en: 05 de Octubre de 2016, 16:13:44 »
No, no podes tener la CPU corriendo a una velocidad distinta de los modulos. Si en los Timers podes usar los preescaler de los mismos. Pero el reloj de entrada es el mismo.

Podes verlo en diagrama del datasheet o en la imagen que puse



El ciclo de maquina esta determinado por la frecuencia de entrada. Si usas o no el PLL, etc.

Agrego:

#Device ADC=xxx

Citar
Configures the read_adc return size. For example, using a PIC with a 10 bit A/D you can use 8 or 10 for xx- 8 will return the most significant byte, 10 will return the full A/D reading of 10 bits.

Esto es del conversor Analogico Digital. Por mas que pongas ADC=784740913203, no vas a tener esa cantidad de bits. El maximo para el 18F4550 es de 10, podes usar 8 y lo que hace es en ves de darte los 10 bits, te da los 8 mas significantes.

#use delay()

Citar
clock=speed

speed is a constant 1-100000000 (1 hz to 100 mhz).

This number can contains commas. This number also supports the following denominations: M, MHZ, K, KHZ. This specifies the clock the CPU runs at. Depending on the PIC this is 2 or 4 times the instruction rate. This directive is not needed if the following type=speed is used and there is no frequency multiplication or division.

type=speed

type defines what kind of clock you are using, and the following values are valid: oscillator, osc (same as oscillator), crystal, xtal (same as crystal), internal, int (same as internal) or rc. The compiler will automatically set the oscillator configuration bits based upon your defined type. If you specified internal, the compiler will also automatically set the internal oscillator to the defined speed. Configuration fuses are modified when this option is used. Speed is the input frequency.

Resumen, no hay necesidad de usar clock , si es que usas crystal=xxxx , el mismo compilador sabe de que reloj se trata y si debe dividirlo o no. Como ves dice que el compilador va a setear automaticamente los bits del oscilador para que eso se cumpla. Imagino que si tenes un cristal de 4Mhz, y pusiste ahi internal=4Mhz, entonces solo el compilador va a agregar codigo para cambiar al modulo oscilador interno
« Última modificación: 05 de Octubre de 2016, 16:26:18 por KILLERJC »

Desconectado dkmar11

  • PIC10
  • *
  • Mensajes: 14
Re:diferencia entre crystal clock speed y cpu clock speed gama 18f
« Respuesta #4 en: 05 de Octubre de 2016, 16:24:34 »
mmmm, pero cual va a los modulos ccp??? el pereferico USB???, por que en el diagrama veo que el ocilador primario puede pasar por un prescaler y de ahi se va a un pereferico, o me estoy confundiendo??.

gracias por la ayuda

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:diferencia entre crystal clock speed y cpu clock speed gama 18f
« Respuesta #5 en: 05 de Octubre de 2016, 16:32:45 »
El USB pheripheral es el USB solamente. Y requiere una frecuencia en especifico.

La frencuencia que va a los modulos ( CCP, Timers, etc) puede venir de varios lados:

- Oscilador interno ( de 8mhz que se puede dividir, o uno de 32Khz)
- Oscilador externo principal ( este puede pasar por el PLL para llevarlo a tener maximo 48Mhz en la CPU - y sus fracciones- , o directamente pasar por un preescaler o divisor )
- Oscilador externo secundario ( para cristales de 32Khz normalmente, y tambien que pueden usar el Timer )

Esto se setea normalmente por FUSES (al momento de grabar el micro), pero existe la posibilidad de poder setearlos cuando esta corriendo el PIC por software.

La salida de cada una de estas fuentes va al multiplexor ( un selector ) y de alli va a la CPU y a los perifericos/modulos