TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: andreaymaria en 04 de Marzo de 2010, 08:46:27

Título: Frecuencia oscilacion
Publicado por: andreaymaria en 04 de Marzo de 2010, 08:46:27
Hola, estoy realizando mi proyecto final de carrera y necesito utilizar la frecuencia de oscilación del cristal sacándola por el PORTA.RA0...
como podría extraerla??Utilizo el PIC 18f4550.
Muchas gracias
Título: Re: Frecuencia oscilacion
Publicado por: Nocturno en 04 de Marzo de 2010, 09:00:22
Si quieres obtener exactamente la misma frecuencia de oscilación del cristal no puedes hacerlo por RA0, sólo puedes hacerlo por RA6.
Por RA0 puedes sacar pulsos por software pero por mucho que optimices tu algoritmo, y dedicando el micro a esa tarea en exclusiva, gastarás unas pocas instrucciones por ciclo, con lo que la frecuencia de salida será muy inferior a la del cristal.
Título: Re: Frecuencia oscilacion
Publicado por: andreaymaria en 04 de Marzo de 2010, 09:02:25
Esto es lo que he hecho yo:

#include <p18f4550.h>
#include <delays.h>

#pragma config DEBUG=ON
#pragma config FOSC=XT_XT
#pragma config WDT=OFF
#pragma config LVP=OFF
#pragma config PWRT=OFF
#pragma config MCLRE=ON

unsigned float aux;

void main(void){
      TRISA = 0X00; //Definimos como salida


while(1){

aux=PORTAbits.RA6;
PORTAbits.RA0=(aux/48);

      }
}

No te rías mucho si he hecho cosas fatal...jajaja...es que he empezado hace poco con esto y no controlo mucho...

Necesito la frec de oscilacion entre 48..pro eso la he divididio por 48..
Título: Re: Frecuencia oscilacion
Publicado por: Suky en 04 de Marzo de 2010, 09:11:23
 :shock: Para obtener una señal de 48MHz/4 puedes configurar el PWM, porque si no estoy equivocado con PR2=0 y preescaler=1 se tendría una señal de 12MHz, eso si en el pin RC1,RC2 o RB3.


Saludos!
Título: Re: Frecuencia oscilacion
Publicado por: andreaymaria en 04 de Marzo de 2010, 09:14:47
... :oops:...

Entonces a ver si te he entendido bien...tengo que cambiar los pragmas no??Que debería poner??
Pero el código que he hecho está bien??

Que vergüenza pero es q tengo un lío..
Título: Re: Frecuencia oscilacion
Publicado por: bmfranky en 04 de Marzo de 2010, 09:16:53
Un saludo,andreaymaria  , saludos tambien a nocturno ySuky
¿Que frecuencia de reloj usas?
Si no pones mas datos no podremos ayudarte.

Pon la frecuencia que usas de cristal y la frecuencia que necesitas en la salida a ver que se puede hacer.
Título: Re: Frecuencia oscilacion
Publicado por: Suky en 04 de Marzo de 2010, 09:22:50
... :oops:...

Entonces a ver si te he entendido bien...tengo que cambiar los pragmas no??Que debería poner??
Pero el código que he hecho está bien??

Que vergüenza pero es q tengo un lío..

Lo que has hecho es totalmente incorrecto, primero al utilizar un XT_XT el pin RC6 ya no está habilitado y no puedes capturar sus valores, y después lo que haces para transferir el valor a RA0 ...  :shock:

No se porqué pensé que trabajabas a 48MHz  :mrgreen: Seguramente estás trabajando a 4MHz. Para hacer lo que comento, busca información sobre crear señales PWM con el módulo CCP, y revisa el datasheet del microcontrolador.


Saludos!
Título: Re: Frecuencia oscilacion
Publicado por: Nocturno en 04 de Marzo de 2010, 09:27:03
¿Qué frecuencia de salida necesitas?
Título: Re: Frecuencia oscilacion
Publicado por: andreaymaria en 04 de Marzo de 2010, 09:28:42
La frecuencia del cristal que uso es de 4Mhz y uso el Pic 18f4550...pero yo suponía que el Pic ya tenia una frecuencia de oscilación predefinida...o no es asi??
Título: Re: Frecuencia oscilacion
Publicado por: Nocturno en 04 de Marzo de 2010, 09:42:22
Sólo si usas el oscilador interno, que va a 8MHz.
Título: Re: Frecuencia oscilacion
Publicado por: Fer_TACA en 04 de Marzo de 2010, 09:43:56
Tiene una frecuencia predefinida solo si al pic tiene y entondes si se puede utilizar el oscilador interno. Pero solo se le podra definir y configurar unas detreminadas frecuencias que tiene predefinidas.

Esta informacion viene en el datashhet.

Fer.


Edito, se me adelanto Manolo.
Siempre dispuesto al quite...........
Título: Re: Frecuencia oscilacion
Publicado por: andreaymaria en 04 de Marzo de 2010, 09:47:48
Sí, eso es lo que necesito, la frec del oscilador interno, esa frecuencia necesito sacarla por alguna pata del Pic y no sé cómo hacerlo...cúales son los pragmas que debería poner?y como lo hago para sacarla por alguna pata del Pic xq me han dicho que como lo he hecho esta mal... :(
Título: Re: Frecuencia oscilacion
Publicado por: Fer_TACA en 04 de Marzo de 2010, 09:57:01
Ahora no recuerdo bien y no tengo delante el datasheet, pero si lo consultas mira donde se coloca el cristal externo para generar la frecuencia de oscilacion externa.

Configuras el micro con su oscilacion interna y le pin donde supuestamente se colocaria el cristal externo (RA6 creo) debes de tener directamnete la oscilacion pero tienes que configurar el pin como salida y la oscilacion que obtendras creo es la cuarta parte de los 8MHz internos.

Espero no haberme equivocado, para no liarte mas.

Fer.
Título: Re: Frecuencia oscilacion
Publicado por: bmfranky en 04 de Marzo de 2010, 10:10:51
Aclara lo que necesitas, necesitas frecuencia principal a 4mhz y despues los 8 del interno en una pata del pic, ¿para que?.

Porque no explicas lo que necesitas conseguir realmente, y intentaremos ayudarte, lo logico seria  usar el oscilador interno a 8 Mhz con o sin habilitar y luego configurar el timer 2 para generar un pulso pwm a la frecuencia que necesites, pero si no sabemos que tienes que conseguir, no sabemos como explicártelo...

El amigo Fer_TACA, tiene razon son los pines 13 y 14, clki y clko(ra6), en ra6 puedes conseguir una frecuencia igual a fosc/4. pero de todas formas explica que tienes que conseguir con tu proyecto o no podemos ayudar.
Título: Re: Frecuencia oscilacion
Publicado por: bigluis en 04 de Marzo de 2010, 11:32:02
Te recomiendo que leas esto (http://www.todopic.com.ar/foros/index.php?topic=22646.0), posiblemente te ayude  :-/.
Título: Re: Frecuencia oscilacion
Publicado por: andreaymaria en 08 de Marzo de 2010, 06:04:58
 :?...vamos a ver...podría insertar alguna imagen para poder explicaros lo que necesito...?
Título: Re: Frecuencia oscilacion
Publicado por: Suky en 08 de Marzo de 2010, 13:26:08
:?...vamos a ver...podría insertar alguna imagen para poder explicaros lo que necesito...?

Aquí (http://www.todopic.com.ar/foros/index.php?topic=8120.0) hay una guía para insertar imágenes el el foro.
Título: Re: Frecuencia oscilacion
Publicado por: andreaymaria en 08 de Marzo de 2010, 13:52:54
A ver...hablé con mi profesor y me indicó cómo formularles mi pregunta...
Finalmente trabajaré con el PIC16F84, con una configuración RC, por lo tanto tengo como salida en OSC2 la Fosc/4...pero lo que yo necesito es generar en un puerto, el que sea, una señal cuadrada de frecuencia=Fosc/48...por lo que por eso no me sirve la de el puerto OSC2..
me he explicado mejor??...
Siento no haber sabido explicarlo bien...espero que alguien pueda echarme una mano xq no encuentro ningún comando con el que pueda realizar lo q necesito.

Muchas gracias, un saludo! :)
Título: Re: Frecuencia oscilacion
Publicado por: jeremylf en 08 de Marzo de 2010, 14:06:45
Haber si entiendo... necesitas trabajar el PIC con su oscilador interno (lo maximo a 8Mhz por decirlo) y sacar por algun puerto una frecuencia mayor a esta? 12Mhz por lo que entiendo? Naa, eso es imposible, almenos solo cn el PIC. O eso, o te he entendio mal.

Exitos.
Título: Re: Frecuencia oscilacion
Publicado por: andreaymaria en 08 de Marzo de 2010, 14:30:49
Haber si entiendo... necesitas trabajar el PIC con su oscilador interno (lo maximo a 8Mhz por decirlo) y sacar por algun puerto una frecuencia mayor a esta? 12Mhz por lo que entiendo? Naa, eso es imposible, almenos solo cn el PIC. O eso, o te he entendio mal.

Exitos.

No..al revés...necesito sacar una señal con una frecuencia 48 veces menor que la de oscilación...justo al contrario..
Título: Re: Frecuencia oscilacion
Publicado por: Nocturno en 08 de Marzo de 2010, 15:57:22
Si te da igual utilizar un pin u otro puedes mirar en el datasheet cómo configurar el módulo CCP/PWM para generar esa frecuencia.
También puedes generar ese pulso por software utilizando un Timer.

Y también puedes generarlo mediante un bucle y retardos con el programa, que para probar quizás sea el método más sencillo:

while (true) {
   output_high(pin);
   delay_us(retraso1);
   output_low(pin);
   delay_us(retraso2);
}
Título: Re: Frecuencia oscilacion
Publicado por: andreaymaria en 08 de Marzo de 2010, 16:10:24
Si te da igual utilizar un pin u otro puedes mirar en el datasheet cómo configurar el módulo CCP/PWM para generar esa frecuencia.
También puedes generar ese pulso por software utilizando un Timer.

Y también puedes generarlo mediante un bucle y retardos con el programa, que para probar quizás sea el método más sencillo:

while (true) {
   output_high(pin);
   delay_us(retraso1);
   output_low(pin);
   delay_us(retraso2);
}

Y en pin podría poner PORTAbits.RA0 por ejemplo??o así está mal escrito...?y en retraso1 y retraso 2 qué pongo para que me de la fosc/48??
Título: Re: Frecuencia oscilacion
Publicado por: Nocturno en 08 de Marzo de 2010, 16:37:55
Para usar el RA0 tendrías que poner PIN_A0.

Tienes que compilar el programa, mirar cuántos ciclos de reloj ocupan las instrucciones output_high y low (creo que sólo uno cada una) y cuántos ocupa el while.
Como tu micro ejecuta una instrucción cada 4 ciclos de reloj, tú necesitas una frecuencia de pulsos equivalente a Fcy / 12.
Si el while + los dos output ocupan más de 12 ciclos no sirve el método descrito.
Si ocupan justo 12, no tendrías que poner delays.
Si ocupan menos de 12, tendrás que poner delay_cycle (n) siendo n los ciclos que te faltan.

Es mejor el delay_cycle porque te da igual la frencuencia del cristal, necesitas un Fosc/48 y punto.
Título: Re: Frecuencia oscilacion
Publicado por: andreaymaria en 08 de Marzo de 2010, 17:12:15
Para usar el RA0 tendrías que poner PIN_A0.

Tienes que compilar el programa, mirar cuántos ciclos de reloj ocupan las instrucciones output_high y low (creo que sólo uno cada una) y cuántos ocupa el while.
Como tu micro ejecuta una instrucción cada 4 ciclos de reloj, tú necesitas una frecuencia de pulsos equivalente a Fcy / 12.
Si el while + los dos output ocupan más de 12 ciclos no sirve el método descrito.
Si ocupan justo 12, no tendrías que poner delays.
Si ocupan menos de 12, tendrás que poner delay_cycle (n) siendo n los ciclos que te faltan.

Es mejor el delay_cycle porque te da igual la frencuencia del cristal, necesitas un Fosc/48 y punto.

Muchas gracias, mañana lo probaré y te contaré!!
Título: Re: Frecuencia oscilacion
Publicado por: Suky en 08 de Marzo de 2010, 18:15:34
Y en pin podría poner PORTAbits.RA0 por ejemplo??o así está mal escrito...?y en retraso1 y retraso 2 qué pongo para que me de la fosc/48??

Esa sintaxis es de C18, y solo sirve para la familia PIC18, no se puede usar en un 16F84  :? Lo que te muestra nocturno es CCS, en el cual si puedes trabajar con el 16F84, pero no muchas cosas por la memoria que tiene  :mrgreen:


Saludos!
Título: Re: Frecuencia oscilacion
Publicado por: andreaymaria en 09 de Marzo de 2010, 05:44:48
Y si trabajara con un PIC18...cual me recomendais que utilice??mi profesor me da a elegir el que yo quieraa..

Y otra cosa...en el delay_us(retardo1), que valor le tengo que dar a retardo1??2,10, 100..???

Y como sería ese código en C18???Graciasss
Título: Re: Frecuencia oscilacion
Publicado por: bmfranky en 09 de Marzo de 2010, 08:51:33
Hola andreaymaria, hazlo al revés, elige un micro y a partir de ahí, empieza, necesitas una señal 48 veces menor a la de entrada con un oscilador rc,  elije un micro fácil de usar y barato, por ejemplo el 18f2550 que en rs amidata vale unos 4€, lo configuras para usar el oscilador interno y puedes usar varias opciones para con seguir lo que quieres, te recomiendo el pwm, y que programes en ccs, hay una versión gratuita para estudiantes, y es muy sencillo de usar. el data sheet de este micro lo puedes encontrar en castellano en internet , ademas de numeroso ejemplos de como configurar el oscilador y los canales pwm. busca, estudia ,aprende... y pregunta tus dudas.

Espero ver en breve una primera versión de tu código posteada pronto... ¡suerte! ;-)
Título: Re: Frecuencia oscilacion
Publicado por: andreaymaria en 09 de Marzo de 2010, 09:01:12
Hola andreaymaria, hazlo al revés, elige un micro y a partir de ahí, empieza, necesitas una señal 48 veces menor a la de entrada con un oscilador rc,  elije un micro fácil de usar y barato, por ejemplo el 18f2550 que en rs amidata vale unos 4€, lo configuras para usar el oscilador interno y puedes usar varias opciones para con seguir lo que quieres, te recomiendo el pwm, y que programes en ccs, hay una versión gratuita para estudiantes, y es muy sencillo de usar. el data sheet de este micro lo puedes encontrar en castellano en internet , ademas de numeroso ejemplos de como configurar el oscilador y los canales pwm. busca, estudia ,aprende... y pregunta tus dudas.

Espero ver en breve una primera versión de tu código posteada pronto... ¡suerte! ;-)

Muchas gracias por tus ánimos...yo tb espero poder mostraros algun codigo pronto...dices que el data sheet de ese micro lo puedo encontrar en castellano??podrias decirme donde??
Título: Re: Frecuencia oscilacion
Publicado por: bmfranky en 09 de Marzo de 2010, 09:25:49
Por cierto, se me olvidaba comentar que el pic 18f84, no dispone de puerto pwm, ni oscilador interno, aunque si solo necesitas crear en uno de sus pines una salida 48veces menor a la del oscilador, con unos 8-9 operan-dos en asm puedes conseguirlo fácilmente, y no necesitarías mas que el mplab que es gratuito en descarga directa desde microchip.

Si el pic no lo vas a usar para nada mas dilo y te digo mas o menos como quedaría el bucle. el resto lo harías tu.

Ups has contestado mientras escribia, toma aqui tieneshttp://hotfile.com/dl/31953522/6807a98/Manual_18F2455_y_18F2550.pdf.html (http://hotfile.com/dl/31953522/6807a98/Manual_18F2455_y_18F2550.pdf.html)
Título: Re: Frecuencia oscilacion
Publicado por: andreaymaria en 09 de Marzo de 2010, 09:32:50
Por cierto, se me olvidaba comentar que el pic 18f84, no dispone de puerto pwm, ni oscilador interno, aunque si solo necesitas crear en uno de sus pines una salida 48veces menor a la del oscilador, con unos 8-9 operan-dos en asm puedes conseguirlo fácilmente, y no necesitarías mas que el mplab que es gratuito en descarga directa desde microchip.

Si el pic no lo vas a usar para nada mas dilo y te digo mas o menos como quedaría el bucle. el resto lo harías tu.

Ups has contestado mientras escribia, toma aqui tieneshttp://hotfile.com/dl/31953522/6807a98/Manual_18F2455_y_18F2550.pdf.html (http://hotfile.com/dl/31953522/6807a98/Manual_18F2455_y_18F2550.pdf.html)

Tengo que programar en C...no en ensamblador..gracias por el manual!
Título: Re: Frecuencia oscilacion
Publicado por: bmfranky en 09 de Marzo de 2010, 09:47:30
Si tienes que usar el pic C18 de microchip, en la pagina web de ucontrol, tienen un estupendo manual del c18 desde cero, ojea-lo.
Título: Re: Frecuencia oscilacion
Publicado por: Suky en 09 de Marzo de 2010, 13:12:42
Pero si el programa es sencillo y pequeño, podes usar CCS y usar un PIC16F. Tenes que estudiar el tema y elegir.



Nota: En C18 no existe delay_us(), delay_ms(), están Delay10TCYx(), Delay100TCYx(), Delay1KTCYx() y Delay10KTCYx().


Saludos!
Título: Re: Frecuencia oscilacion
Publicado por: jeremylf en 09 de Marzo de 2010, 15:03:46
Te estas complicando mucho para algo tan simple.
Título: Re: Frecuencia oscilacion
Publicado por: andreaymaria en 10 de Marzo de 2010, 07:15:51
Te estas complicando mucho para algo tan simple.

Y que me recomiendas??
Título: Re: Frecuencia oscilacion
Publicado por: andreaymaria en 10 de Marzo de 2010, 07:32:30
Si te da igual utilizar un pin u otro puedes mirar en el datasheet cómo configurar el módulo CCP/PWM para generar esa frecuencia.
También puedes generar ese pulso por software utilizando un Timer.

Y también puedes generarlo mediante un bucle y retardos con el programa, que para probar quizás sea el método más sencillo:

while (true) {
   output_high(pin);
   delay_us(retraso1);
   output_low(pin);
   delay_us(retraso2);
}



Qué comandos puedo utilizar en C18 que realicen la función de output_high(pin) y output_low(pin)??
Título: Re: Frecuencia oscilacion
Publicado por: andreaymaria en 10 de Marzo de 2010, 08:59:21
Pero si el programa es sencillo y pequeño, podes usar CCS y usar un PIC16F. Tenes que estudiar el tema y elegir.



Nota: En C18 no existe delay_us(), delay_ms(), están Delay10TCYx(), Delay100TCYx(), Delay1KTCYx() y Delay10KTCYx().


Saludos!

He estado probando el programita con los delays...pero me he dado cuenta de que no me sirve.
Yo tengo conectado al pic un circuito RC, con un condensador variable.Dependiendo de ese condensador, mi frecuencia de oscilación variará...y por lo tanto la salida que necesito, señal de fosc/48, también variará...por lo tanto no puedo hacerlo con retardos ya que estos retardos son constantes, no me varían con la frecuencia de oscilación, y por lo tanto, no varía mi salida.


A ver si esta vez me he explicado mejor..
Título: Re: Frecuencia oscilacion
Publicado por: Suky en 10 de Marzo de 2010, 09:05:07
Creo yo  :rolleyes: que hagas como lo hagas si la frecuencia del oscilador externo del microcontrolador varía, la señal que generes va a variar  :? Si necesitas que sea fija, la frecuencia externa debe ser fija!  

En C18 sería:

   LATBbits.LATB0=1;
   LATBbits.LATB0=0;


Por ejemplo.

Saludos!
Título: Re: Frecuencia oscilacion
Publicado por: andreaymaria en 10 de Marzo de 2010, 09:24:15
Creo yo  :rolleyes: que hagas como lo hagas si la frecuencia del oscilador externo del microcontrolador varía, la señal que generes va a variar  :? Si necesitas que sea fija, la frecuencia externa debe ser fija!  

En C18 sería:

   LATBbits.LATB0=1;
   LATBbits.LATB0=0;


Por ejemplo.

Saludos!



Ahí esta mi problema...en que yo no quiero que mi señal sea fija...quiero q sea variable xq debe depender de la frec del RC que va a variar debido a que mi condensador es variable. Y tiene una dependencia del orden de fosc/48...eso es lo q no se hacer...
No se hacer un retardo que me dependa de la frec de oscilación... :?
Título: Re: Frecuencia oscilacion
Publicado por: jeremylf en 10 de Marzo de 2010, 13:03:05
Podrias hacerlo con delay_cycles pero nose si en C18 lo habra.

Exitos.
Título: Re: Frecuencia oscilacion
Publicado por: bigluis en 10 de Marzo de 2010, 14:36:02

He estado probando el programita con los delays...pero me he dado cuenta de que no me sirve.
Yo tengo conectado al pic un circuito RC, con un condensador variable.Dependiendo de ese condensador, mi frecuencia de oscilación variará...y por lo tanto la salida que necesito, señal de fosc/48, también variará...por lo tanto no puedo hacerlo con retardos ya que estos retardos son constantes, no me varían con la frecuencia de oscilación, y por lo tanto, no varía mi salida.

Supongo que eso que dices es imposible ya que los retardos dependen de la frecuencia de oscilacion, a menos que el micro este configurado para usar el oscilador interno, o solo lo hayas simulado en Proteus, si es este el caso la frecuencia nunca variara aunque varies el valor del RC ya que proteus no usa la frecuencia del oscilador externo sino que usa la frecuencia que le declaras en las propiedades, para comprobarlo puedes quitar el oscildor externo y observaras que proteus simulara igual el circuito.

Si quieres tener una frecuencia exacta (que puede variar mediante software) te recomiendo que utilices el modulo CCP de algun PIC, en mi caso voy a usar un codigo para MikroC V8.2, que ya tiene implementadas las rutinas de configuracion del PWM, y el PIC18F452. La frecuencia de oscilacion externa es de 8MHz.

(http://img94.imageshack.us/img94/9135/pwm.png)

Código: [Seleccionar]
void main() {
  PORTB = 0;              // Set PORTB to 0
  TRISB = 0;              // PORTB is output

  ADCON1 = 6;             // All ADC pins to digital I/O
  PORTA = 255;
  TRISA = 255;            // PORTA is input

  PORTC = 0xFF;           // Set PORTC to $FF
  TRISC = 0;              // PORTC is output
  Pwm_Init(5000);         // Initialize PWM module at 5KHz
  Pwm_Start();            // Start PWM

}//~

El esquema y el codigo provienen de la ayuda de MikroC.

Ya que tu quieres poner un oscilador externo RC, solo lo debes cambiar por el oscilador Cristal que se muestra en la figura superior, y simplemente debes calcular la frecuencia de este oscilador RC y dividirla entre 48, luego debes ingresar este valor donde dice Pwm_Init(Freq_calculada), cuando varies el valor RC la frecuencia de salida tambien variara.

No se si en CCS o C18 existan funciones similares a estas.
Título: Re: Frecuencia oscilacion
Publicado por: AngelGris en 10 de Marzo de 2010, 15:30:31
Ahí esta mi problema...en que yo no quiero que mi señal sea fija...quiero q sea variable xq debe depender de la frec del RC que va a variar debido a que mi condensador es variable. Y tiene una dependencia del orden de fosc/48...eso es lo q no se hacer...
No se hacer un retardo que me dependa de la frec de oscilación... :?

Antes que nada pido disculpas por mi intromisión....

Andreaymaria, ninguna rutina de delay es fija, siempre depende de la frecuencia de oscilación.

Supongamos que tu rutina de delay involucra 3 instrucciones de assembler "nop" (esto no hace nada, pero consume tiempo).
Si estás trabajando a 20MHz, el tiempo consumido por esos 3 "nop" es de 600ns. Pero si trabajás a 10MHz el tiempo consumido es de 1.2us.
Título: Re: Frecuencia oscilacion
Publicado por: bmfranky en 10 de Marzo de 2010, 15:33:41
Como dice AngelGris , el delay es fijo, estoy haciéndote un ejemplo de como crear el retardo, de doce instrucciones que necesitas para generar una salida 48 veces inferior a el reloj del sistema que es lo que tu quieres conseguir.
Título: Re: Frecuencia oscilacion
Publicado por: bmfranky en 10 de Marzo de 2010, 15:42:04
He probado este código con proteus y funciona, frecuencia del sistema 480khz, frecuencia de salida 10khz, frecuencia de entrada 4.8Mhz frecuencia de salida 100khz, siempre 48 veces mas pequeña que la del oscilador primario, ahora tu has de acoplarlo a tu programa.

Código: [Seleccionar]
void main()
{

   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_CLOCK_DIV_2);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);

   // TODO: USER CODE!!

while(1)
{
output_high(PIN_A0);
#asm
nop;
nop;
#endasm
output_low(PIN_A0);

}



}
Título: Re: Frecuencia oscilacion
Publicado por: andreaymaria en 10 de Marzo de 2010, 18:38:05
He probado este código con proteus y funciona, frecuencia del sistema 480khz, frecuencia de salida 10khz, frecuencia de entrada 4.8Mhz frecuencia de salida 100khz, siempre 48 veces mas pequeña que la del oscilador primario, ahora tu has de acoplarlo a tu programa.

Código: [Seleccionar]
void main()
{

   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_CLOCK_DIV_2);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);

   // TODO: USER CODE!!

while(1)
{
output_high(PIN_A0);
#asm
nop;
nop;
#endasm
output_low(PIN_A0);

}



}

Esto no es necesario que lo escriba no???Pongo mi configuracion no??

setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_CLOCK_DIV_2);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);

   // TODO: USER CODE!!

Y otra cosa...ese código en ensamblador es compatible tambien con el c18 o solamente con el css??Muchisimas gracias por este aporte...!Un saludo!
Título: Re: Frecuencia oscilacion
Publicado por: Suky en 10 de Marzo de 2010, 20:49:31
Y otra cosa...ese código en ensamblador es compatible tambien con el c18 o solamente con el css??Muchisimas gracias por este aporte...!Un saludo!

Solo para CCS. Pero esto es muy sencillo, póngale media pila que con un poquito de esfuerzo (Leyendo un poco de algún tutorial) sale. No esperen que le realicen el trabajo  :?
Título: Re: Frecuencia oscilacion
Publicado por: MarkKnopfler81 en 12 de Marzo de 2010, 19:52:39
Código: [Seleccionar]
void main()
{

   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_CLOCK_DIV_2);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);

   // TODO: USER CODE!!

while(1)
{
output_high(PIN_A0);
#asm
nop;
nop;
#endasm
output_low(PIN_A0);

}



}

bmfranky, disculpa que me meta pero si mis calculos son correctos es codigo daría una señal de fosc/24 y no de 48.
para 48 yo pondría:

Código: [Seleccionar]
while(1)
{
output_high(PIN_A0);      // 1 ciclo
delay_cycles(5);          // 5 ciclos (goto, goto, nop)
output_low(PIN_A0);       // 1 ciclo
delay_cycles(3);          // 3 ciclos (goto, nop)
}                         // 2 ciclos (goto)
                          // =============
                          // 12 ciclos * 4 = 48

saludos.
Título: Re: Frecuencia oscilacion
Publicado por: bmfranky en 13 de Marzo de 2010, 11:18:25
Código: [Seleccionar]
void main()
{

   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_CLOCK_DIV_2);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);

   // TODO: USER CODE!!

while(1)
{
output_high(PIN_A0);
#asm
nop;
nop;
#endasm
output_low(PIN_A0);

}



}

bmfranky, disculpa que me meta pero si mis calculos son correctos es codigo daría una señal de fosc/24 y no de 48.
para 48 yo pondría:

Código: [Seleccionar]
while(1)
{
output_high(PIN_A0);      // 1 ciclo
delay_cycles(5);          // 5 ciclos (goto, goto, nop)
output_low(PIN_A0);       // 1 ciclo
delay_cycles(3);          // 3 ciclos (goto, nop)
}                         // 2 ciclos (goto)
                          // =============
                          // 12 ciclos * 4 = 48

saludos.

Tranquilo MarkKnopfler81 aquí ,debemos opinar todos.

Tengo que indicarte que no has tenido en cuenta como descompone sus instrucciones el ccs y las pasa a ensamblador, recuerda que no uso la directiva fast_imput.Si compilas el programa veras que se convierte en 12 instrucciones maquina en cada interacción.

.................... while(1)
.................... {
.................... output_high(PIN_A0);
0051:  BCF    05.0
0052:  BCF    03.5->3
0053:  BSF    05.0
.................... #asm
.................... nop;
0054:  NOP          ->1
.................... nop;
0055:  NOP         ->1
.................... #endasm
.................... output_low(PIN_A0);
0056:  BSF    03.5
0057:  BCF    05.0
0058:  BCF    03.5->4
0059:  BCF    05.0
.................... 
.................... }
005A:  BSF    03.5
005B:  GOTO   051->3 (El goto vale 2 ciclos)

                            -----
                              12 ciclos maquina *4 ciclos del oscilador (por ciclo de maquina) igual a 48 ciclos del oscilador principal.
Título: Re: Frecuencia oscilacion
Publicado por: MarkKnopfler81 en 13 de Marzo de 2010, 11:30:16
Ja! tienes razon bmfranky es que yo estoy acostumbrado a trabajan con
#use fast_io(a)
 :D
asi si son 6!

saludos.
Título: Re: Frecuencia oscilacion
Publicado por: bmfranky en 13 de Marzo de 2010, 11:32:26
Tranqui, Saludos a ti también..
Título: Re: Frecuencia oscilacion
Publicado por: andreaymaria en 15 de Marzo de 2010, 10:00:39
He probado este código con proteus y funciona, frecuencia del sistema 480khz, frecuencia de salida 10khz, frecuencia de entrada 4.8Mhz frecuencia de salida 100khz, siempre 48 veces mas pequeña que la del oscilador primario, ahora tu has de acoplarlo a tu programa.

Código: [Seleccionar]
void main()
{

   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_CLOCK_DIV_2);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);

   // TODO: USER CODE!!

while(1)
{
output_high(PIN_A0);
#asm
nop;
nop;
#endasm
output_low(PIN_A0);

}



}

He leído que en C18 se puede escribir _asm y _endasm...para C18 también me funcionaría ese código para obtener a la salida f/48??Es que estoy probando con el 18f4550 que es del q dispongo ahora mismo y me da en los "nop" error de sintaxis...y no tengo ni idea de xq me pasa eso..alomejor tengo que tener algun plugin instalado o algo??

Muxisimas gracias por todos los comentarios!Me estan sirviendo de gran ayuda! :)
Título: Re: Frecuencia oscilacion
Publicado por: bmfranky en 16 de Marzo de 2010, 09:46:15
Citar
de: andreaymaria en Hoy a las 08:18:29
Hola!!He probado tu código pero en vez en CCS(#asm y #endasm), en C18 con _asm y _endasm.Tengo que añadir alguna librería o cabecera especial para que me reconozca las sentencias en ensamblador??es que al compilarlo me da error de sintaxis en el primer "nop"...y por mas que he buscado en tutoriales no encuentro nada..Si por favor me pudieras contestar...me ayudaria mucho..
A ver si consigo resolver mi problema..

Un saludo y muchas gracias por tu interés!  Smile
Hola el c18 no lo uso, pero ten en cuenta que debes comprobar en cuantos operandos convierte el c18 mi codigo, si lees los ultimos posts de tu hilo comprenderas el por que.

Que yo sepa el c18 admite ensamblador inline, comprueba que lo insertas bien.
Citar
C18 también soporta el empotrado de lenguaje ensamblador y será compilado con MPASM, para insertar lineas con ensamblador se deberá hacer uso de _asm y _endasm.  Por ejemplo:

   _asm

     MOVLW 10
     MOVWF count, 0
       start:
     DECFSZ count, 1, 0
     GOTO done
     BRA start
     done:

 _endasm
Fijate que las directivas no terminan en ";" como en css.
Título: Re: Frecuencia oscilacion
Publicado por: andreaymaria en 22 de Marzo de 2010, 06:50:33
Hola a todos!Por fin he podido probar el código,finalmente utilice el Pic18f4620,ya que este pic permite la configuración RC que es la que a mí me interesa.
Pues bien, probé el siguiente código:

#include <p18f4620.h>
#include <delays.h>
#include <stdio.h>

#pragma config DEBUG=ON
#pragma config OSC=RC
#pragma config WDT=OFF
#pragma config LVP=OFF
#pragma config PWRT=OFF
#pragma config MCLRE=ON


void main(){

while(1)
{
PORTAbits.RA0=1;
_asm
   nop
   nop
_endasm
PORTAbits.RA0=0;

}



}


Y conectando la salida RA0 a un osciloscopio, pude comprobar que no salía nada!


Está mal "incrustado" el código asm en el código C??


Espero que alguien pueda ayudarme...ya que creo q estoy muy cerca de hallar la solución!Muxisimas gracias por todo!
Título: Re: Frecuencia oscilacion
Publicado por: Nocturno en 22 de Marzo de 2010, 07:35:40
¿Puedes pegar el esquema para ver cómo has diseñado ese oscilador rc?

No necesitas ASM para perder dos ciclos, puedes poner delay_cycles(2);
Título: Re: Frecuencia oscilacion
Publicado por: Suky en 22 de Marzo de 2010, 07:45:21
Puede ser que falte configurar pines analógicos o comparadores para que el pin a utilizar sea digital. Revisar datasheet. Otro inconveniente es que debes agregar otra demora para poder ver el estado 0 lógico.

Saludos!
Título: Re: Frecuencia oscilacion
Publicado por: Nocturno en 22 de Marzo de 2010, 07:54:32
Otro inconveniente es que debes agregar otra demora para poder ver el estado 0 lógico.

En esto discrepo, querido Suky. Una nueva iteración del bucle while ocupa mucho más de dos ciclos de instrucción, por lo que el tiempo del estado 0 es incluso mayor que el del tiempo 1.
Título: Re: Frecuencia oscilacion
Publicado por: Suky en 22 de Marzo de 2010, 07:58:00
Otro inconveniente es que debes agregar otra demora para poder ver el estado 0 lógico.

En esto discrepo, querido Suky. Una nueva iteración del bucle while ocupa mucho más de dos ciclos de instrucción, por lo que el tiempo del estado 0 es incluso mayor que el del tiempo 1.

Ups, tienes mucha razón, estoy medio dormido todavía!  :D
Título: Re: Frecuencia oscilacion
Publicado por: andreaymaria en 22 de Marzo de 2010, 08:00:34
¿Puedes pegar el esquema para ver cómo has diseñado ese oscilador rc?

No necesitas ASM para perder dos ciclos, puedes poner delay_cycles(2);

Aquí tienes una imagen...ahí aparece con un PIC12f629...pero quiero intentar realizarlo con un PIC18 ya que luego tengo que añadir más utilidades al pic y quiero evitar utilizar 2 pic´s diferentes..

Pero todavía no he implementado ese circuito, simplemente todos esos condensadores los he sustituido por un único condensador equivalente, y como yo quiero comprobar que la frecuencia varía al variar el condensador, he probado con condensadores de diferentes valores(entre 22 y 33 nF)...pero en RA0 no me sale nada...y pienso que debería salirme un pulso cuadrado no??pues no me sale...

Título: Re: Frecuencia oscilacion
Publicado por: Nocturno en 22 de Marzo de 2010, 08:32:08
Creo que 10MHz es mucho para meterle por RC, revisa la datasheet, es posible que tengas que reducirlo.
Título: Re: Frecuencia oscilacion
Publicado por: andreaymaria en 22 de Marzo de 2010, 08:34:57
Creo que 10MHz es mucho para meterle por RC, revisa la datasheet, es posible que tengas que reducirlo.

Es más o menos esa frecuencia..pero vamos que yo me conformo con que me salga algo por RA0...jajaja..
Título: Re: Frecuencia oscilacion
Publicado por: Nocturno en 22 de Marzo de 2010, 08:47:18
Pues en ese caso no te comas el coco con el oscilador RC externo, utiliza el interno y estarás seguro que funciona bien y a 8MHz.
Título: Re: Frecuencia oscilacion
Publicado por: andreaymaria en 22 de Marzo de 2010, 09:05:17
Pues en ese caso no te comas el coco con el oscilador RC externo, utiliza el interno y estarás seguro que funciona bien y a 8MHz.


Pero es que necesito el RC externo, ya que el condensador variable son 2 placas que las insertaré en el suelo y según la permitividad eléctrica del suelo tendré una capacidad del condensador, y a partir de como varíe ese condensador podré calcular la humedad del suelo, que es para lo q estoy realizando esto..Por eso necesito esa configuración..entiendes?
Título: Re: Frecuencia oscilacion
Publicado por: bmfranky en 22 de Marzo de 2010, 09:10:07
Un poco complicarse la vida, para conseguir un "V.C.O", porque eso es lo que quieres, un oscilador regulable, pues tengo que informarte que con el planteamiento que estas utilizando, eso es lo que obtendrás, es decir solo podrás gastar el pic para generar el pulso de reloj y no para otra cosa, ya que esta todo el tiempo en un bucle repetitivo.

Haz caso al amigo Nocturno, lee el datasheet y configura un canal PWM, para conseguir la frecuencia que tu quieres, y así tendrás el pic desocupado para hacer muchas mas cosas.

Pd ¿he leído tu nueva respuesta, porque no usas el ADC del pic para medir la conductividad del suelo y sobre una tabla generas la salida que necesitas?
Título: Re: Frecuencia oscilacion
Publicado por: Nocturno en 22 de Marzo de 2010, 09:14:07

Pero es que necesito el RC externo, ya que el condensador variable son 2 placas que las insertaré en el suelo y según la permitividad eléctrica del suelo tendré una capacidad del condensador, y a partir de como varíe ese condensador podré calcular la humedad del suelo, que es para lo q estoy realizando esto..Por eso necesito esa configuración..entiendes?

Pero una cosa es que utilices un oscilador RC para medir la humedad, lo cual me parece correcto, y otra diferente que quieras hacer oscilar al PIC a esa frecuencia para poder medirlo.
A mí me parece más razonable hacer oscilar el PIC a una frecuencia fija y estable (con oscilador interno o cristal), y leer los pulsos que llegan desde el oscilador RC externo a través de su entrada de Timer.

Con el valor leído, haces los cálculos que necesites, y generas un PWM o cualquier otro tipo de salida, como te recuerda bmfranky.
Título: Re: Frecuencia oscilacion
Publicado por: andreaymaria en 22 de Marzo de 2010, 09:17:50
Un poco complicarse la vida, para conseguir un "V.C.O", porque eso es lo que quieres, un oscilador regulable, pues tengo que informarte que con el planteamiento que estas utilizando, eso es lo que obtendrás, es decir solo podrás gastar el pic para generar el pulso de reloj y no para otra cosa, ya que esta todo el tiempo en un bucle repetitivo.

Haz caso al amigo Nocturno, lee el datasheet y configura un canal PWM, para conseguir la frecuencia que tu quieres, y así tendrás el pic desocupado para hacer muchas mas cosas.

Pd ¿he leído tu nueva respuesta, porque no usas el ADC del pic para medir la conductividad del suelo y sobre una tabla generas la salida que necesitas?

Tengo que realizarlo asi xq mi proyecto se basa en investigar si la variación de la capacidad del condensador hará que varíe la frecuencia del oscilador.
Pienso que no puedo realizar un PWM ya que dependerá de una frecuencia interna del PIC y no de la capacidad del condensador variable, que es lo q ami me interesa..

Alomejor estoy equivocada..pero pienso q el PWM no me serviría..que piensas?
Título: Re: Frecuencia oscilacion
Publicado por: Nocturno en 22 de Marzo de 2010, 12:18:59
Puedes configurar el PWM en un rango amplísimo de frecuencias. Obviamente no alcanzarás 10MHz, pero si lo que quieres es que esté relacionada sí podrás hacerlo.
Título: Re: Frecuencia oscilacion
Publicado por: andreaymaria en 22 de Marzo de 2010, 14:16:14
Puedes configurar el PWM en un rango amplísimo de frecuencias. Obviamente no alcanzarás 10MHz, pero si lo que quieres es que esté relacionada sí podrás hacerlo.


Y no sería más sencillo con retardos??por lo que he leído los delays estan relacionados con la frecuencia interna del oscilador..lo q no entiendo es xq con mi código no me sale nada por RA0, si lo estoy poniendo continuamente a 1 y a 0..es lo único q hace mi código..
Título: Re: Frecuencia oscilacion
Publicado por: bmfranky en 22 de Marzo de 2010, 14:18:26
¿Has configurado los valores del tris y del adconf, para que este pin sea salida?
Título: Re: Frecuencia oscilacion
Publicado por: Suky en 22 de Marzo de 2010, 18:46:05
 :shock: Al final nunca se termina de enteder cual es el proyecto en si. Porque no armas un oscilador RC externo, y que el PIC mida la frecuencia de este para poder calcular la humedad? Si todavia tienes la idea de implementar un PIC para generar una frecuencia 48 veces menor no mal gastes un PIC18F, usá un 12F  :?
Título: Re: Frecuencia oscilacion
Publicado por: andreaymaria en 23 de Marzo de 2010, 08:50:44
He probado el código, intentando encender un led a esa f/48 en vea de mirarlo en el osciloscopio...y se me enciende el led, pero no se me apaga, así que pienso q lo q está mal son las sentencias _asm y _endasm..necesito añadir alguna librería más o algo para que lo acepte¿??
Aquí os pego el programa que he hecho, en este caso con el Puerto E, q es donde tengo el led:

#include <p18f4620.h>
#include <delays.h>
#include <stdio.h>

#pragma config DEBUG=ON
#pragma config OSC=XT
#pragma config WDT=OFF
#pragma config LVP=OFF
#pragma config PWRT=OFF
#pragma config MCLRE=ON


void main(){

ADCON1=0XFF;
TRISEbits.TRISE0=0;


while(1)
{
LATE=0x01;
_asm
nop
nop
_endasm
LATE=0x00;

}



}


Un saludo!!!
Título: Re: Frecuencia oscilacion
Publicado por: Nocturno en 23 de Marzo de 2010, 08:57:19
Pero ¿cómo lo sabes?, ¿a simple vista?  :shock:

Si consigues ver un led parpadeando a esa velocidad tendrás que ir al médico  :D

Si está oscilando lo verás encendido.
Título: Re: Frecuencia oscilacion
Publicado por: MGLSOFT en 23 de Marzo de 2010, 08:59:02
No lo podrias ver, por la persistencia visual...
Es muy rapido lo que intentas hacer, encima el led apagado no tiene delay, que si lo tiene encendido...
Título: Re: Frecuencia oscilacion
Publicado por: Nocturno en 23 de Marzo de 2010, 09:09:04
Me autocito, Marcos:
En esto discrepo, querido Suky. Una nueva iteración del bucle while ocupa mucho más de dos ciclos de instrucción, por lo que el tiempo del estado 0 es incluso mayor que el del tiempo 1.
Título: Re: Frecuencia oscilacion
Publicado por: bmfranky en 23 de Marzo de 2010, 09:10:00
Hola MGLSOFT, a efectos reales si tiene un delay de 2 ciclos debidos al goto del bucle while, lo que generaria un ciclo del 50% on/of,de todas formas , si con el osciloscopio, la señal es fija, la señal visualmente tambien lo sera, para apreciar si el sistema hace algo, pon entre la secuencia de encendido y apagado ,un delay elevado, de por ejemplo medio segundo y observa si ,si enciende y apaga o que. de todas formas dinos exactamente que circuito implementas y lo simularemos a ver que sucede.

Postea por ejemplo un escaneo del esquema a mano o algo asi , porque la verdad es que me pica la curiosidad. ;-)
Título: Re: Frecuencia oscilacion
Publicado por: MGLSOFT en 23 de Marzo de 2010, 09:12:48
Es cierto, olvide el goto del while.. :?
Título: Re: Frecuencia oscilacion
Publicado por: Suky en 23 de Marzo de 2010, 09:19:34
Es cierto, olvide el goto del while.. :?

Me paso lo mismo  :oops:

andreaymaria , en los fuses veo configurado que usarás cristal XT, o sea menor a 4 MHz, lo colocaste?

Título: Re: Frecuencia oscilacion
Publicado por: bmfranky en 23 de Marzo de 2010, 09:21:39
Hola Suky , creo que usa R/C, pero no se como se configura en c18, ponle la correccion y que pruebe.

Ups perdón, parecía que calculaba un filtro, en que estaría pensando...(l/c =filtro paso), jo que maneras, también te había errado el nombre(Lo siento);-)
Título: Re: Frecuencia oscilacion
Publicado por: Suky en 23 de Marzo de 2010, 09:24:38
Hola Suki , creo que usa l/c , pero no se como se configura en c18, ponle la corrección y que pruebe.

#pragma config OSC=RC  :roll:
Título: Re: Frecuencia oscilacion
Publicado por: bmfranky en 23 de Marzo de 2010, 09:34:08
Hola ANDREAYMARIA, leyendo en este post http://www.todopic.com.ar/foros/index.php?topic=17017.msg123213#msg123213, del cursillo de c18 desde cero, he visto que existe la función NOP(); que ha efectos prácticos, debe de hacer lo que su nombre indica, nada durante 1 ciclo.

Prueba y cuentanos como te va.
Título: Re: Frecuencia oscilacion
Publicado por: andreaymaria en 23 de Marzo de 2010, 10:47:25
Hola MGLSOFT, a efectos reales si tiene un delay de 2 ciclos debidos al goto del bucle while, lo que generaria un ciclo del 50% on/of,de todas formas , si con el osciloscopio, la señal es fija, la señal visualmente tambien lo sera, para apreciar si el sistema hace algo, pon entre la secuencia de encendido y apagado ,un delay elevado, de por ejemplo medio segundo y observa si ,si enciende y apaga o que. de todas formas dinos exactamente que circuito implementas y lo simularemos a ver que sucede.

Postea por ejemplo un escaneo del esquema a mano o algo asi , porque la verdad es que me pica la curiosidad. ;-)

En esta respuesta subi una imagen...descargatela..ahí aparece el circuito q tengo q utilizar..pero q aun no he implementado..

http://www.todopic.com.ar/foros/index.php?topic=29717.msg249712#msg249712

Estoy probando con delays...cuando tenga unas cuantas soluciones os iré comentando..

Ah!Y a lo que dicen del cristal..uso un RC, en lo que he copiado ahí aun no había puesto RC, pero sí..uso un RC como comprobarás en la imagen...;)
Título: Re: Frecuencia oscilacion
Publicado por: bmfranky en 24 de Marzo de 2010, 05:31:38
Hola ANDREAYMARIA, si no lo tienes implementado, ¿en que circuito estas probando el código?
Título: Re: Frecuencia oscilacion
Publicado por: andreaymaria en 24 de Marzo de 2010, 07:33:25
Hola ANDREAYMARIA, si no lo tienes implementado, ¿en que circuito estas probando el código?

Pruebo con una resistencia y con un condensador equivalente a todos los condensadores que ves ahí...y ese condensador lo voy variando para ver si me cambia la frecuencia...pero nada...por RA0 sigue sin salirme nada...pero sin embargo con la configuracion XT sí que me funciona el código cuando lo pruebo en una plaquita que tenemos aquí en el laboratorio para entrenar...
Título: Re: Frecuencia oscilacion
Publicado por: bmfranky en 24 de Marzo de 2010, 07:47:01
puedes poner mas datos de la placa , haber si no es compatible con el diseño que quieres inplementar. de todas formas , cuando conectas el r/c. comprueba con el osciloscopio , si el oscilador funciona.
Título: Re: Frecuencia oscilacion
Publicado por: andreaymaria en 24 de Marzo de 2010, 08:13:47
puedes poner mas datos de la placa , haber si no es compatible con el diseño que quieres inplementar. de todas formas , cuando conectas el r/c. comprueba con el osciloscopio , si el oscilador funciona.

Sí que funciona porque por la RA6 me sale un pulso cuadrado que se supone que es de Fosc/4 según el datasheet...y cuando cambio el condensador varía..
Otra cosa...en configuración RC, el pic18f4620, q es con el q estoy probando, a que frecuencia interna se supone q trabaja??la que entra por la pata OSC1 es la misma q sale por la RA& dividida por 4...es q tengo un lío con las frecuencias...

Ah!!Y la placa es una placa board..de estas que se usan en las prácticas para ir pinchando elementos...
Título: Re: Frecuencia oscilacion
Publicado por: bmfranky en 24 de Marzo de 2010, 09:51:38
Si no has habilitado el pll 1/4 de la frecuencia de entrada, perdona la pregunta :oops: , pero al montarlo en protoboard, has puesto el pin mclr a vcc, es que sino no arrancara.
Título: Re: Frecuencia oscilacion
Publicado por: andreaymaria en 29 de Marzo de 2010, 08:26:51
Si no has habilitado el pll 1/4 de la frecuencia de entrada, perdona la pregunta :oops: , pero al montarlo en protoboard, has puesto el pin mclr a vcc, es que sino no arrancara.



Ya me ha salido!!!Muchisimas gracias...aunque ahora que tengo la señal de f/48...tengo que usarla como entrada a otro pic...así que pronto escribiré para que me ayudeis con vuestros sabios consejos!!

Muxas gracias por todo!Un saludo
Título: Re: Frecuencia oscilacion
Publicado por: andreaymaria en 08 de Abril de 2010, 07:36:00
Hola de nuevo!!!

Estoy continuando con mi proyecto y ahora tengo que medir la duración del período del tren de pulsos que conseguí generar.
He estado leyendo por el foro, y está muy bien explicado aquí:

http://www.todopic.com.ar/foros/index.php?topic=14434.0

Mi duda es..puedo utilizar ese método si yo, en vez de usas un cristal, utilizo la configuración RC??

Supongo que sí...pero no estoy muy segura..

Muchas gracias!Un saludo
Título: Re: Frecuencia oscilacion
Publicado por: bmfranky en 08 de Abril de 2010, 07:50:26
Supongo que si, el problema es que para el calculo tienes que saber con exactitud la frecuencia de la que partes al contar, es decir la frecuencia de referencia ,que en ese caso es la del oscilador interno.
Título: Re: Frecuencia oscilacion
Publicado por: bmfranky en 08 de Abril de 2010, 08:14:01
Lee-te este post (http://www.todopic.com.ar/foros/index.php?topic=14434.msg146040#msg146040) y los sucesivos.
Título: Re: Frecuencia oscilacion
Publicado por: andreaymaria en 08 de Abril de 2010, 09:49:19
Seguramente utilice uno de la clase 12F para generar la señal y ésta vaya a un 18F con el cuál realice todo lo de los timers y esto...que te parece??si realizo esto si que lo haré como dice en el post, con un cristal.
Es que si con el mismo PIC18f genero la señal y tb kiero medir el tiempo..me han dicho que no será muy eficiente..que me dices??
Título: Re: Frecuencia oscilacion
Publicado por: Suky en 08 de Abril de 2010, 09:54:24
Hola de nuevo!!!

Estoy continuando con mi proyecto y ahora tengo que medir la duración del período del tren de pulsos que conseguí generar.
He estado leyendo por el foro, y está muy bien explicado aquí:

http://www.todopic.com.ar/foros/index.php?topic=14434.0

Mi duda es..puedo utilizar ese método si yo, en vez de usas un cristal, utilizo la configuración RC??

Supongo que sí...pero no estoy muy segura..

Muchas gracias!Un saludo

Usas configuración RC en el microcontrolador que se encarga de realizar las medidas? Tenemos claro que un microcontrolador en configuración RC lo utilizas para generar una señal de FRC/48, pero el otro microcontrolador convendría usarlo con un cristal ya que son muy estables y estas segura de las medidas que tomaras.


Saludos!
Título: Re: Frecuencia oscilacion
Publicado por: Suky en 08 de Abril de 2010, 09:56:11
Seguramente utilice uno de la clase 12F para generar la señal y ésta vaya a un 18F con el cuál realice todo lo de los timers y esto...que te parece??si realizo esto si que lo haré como dice en el post, con un cristal.
Es que si con el mismo PIC18f genero la señal y tb kiero medir el tiempo..me han dicho que no será muy eficiente..que me dices??

No podes usar el microcontrolador que genera la señal para medir su frecuencia, porque su tiempo base de referencia es la que quiere medir  :?
Título: Re: Frecuencia oscilacion
Publicado por: bmfranky en 08 de Abril de 2010, 10:05:36
Hola suky, si generara el pulso por pwm,  si el oscilador fuera un cristal, no se podría usar para corregir la frecuencia generada. O es un barbaridad lo que insinúo.

Es decir, si quiero generar una frecuencia de 10khz, pero al medirla me da 9.9khz ,ajustar los valores para afinarlo.
Título: Re: Frecuencia oscilacion
Publicado por: andreaymaria en 16 de Abril de 2010, 07:54:43
Hola!!He estado mirando el código de "Midiendo un pulso" y...sería compatible con el C18 compiler...o tendría que cambiar muchas cosas???las interrupciones funcionan igual para C18??
Y otra cosa..tiene que ser estrictamente con RB0??o puedo usar otro puerto el que yo quiera para introducir la señal generada???

Muchas gracias!!
Título: Re: Frecuencia oscilacion
Publicado por: bmfranky en 16 de Abril de 2010, 08:16:04
Cualquiera que genere una interrupción, ya sea externa o por cambio de estado como Rb4-Rb7
Título: Re: Frecuencia oscilacion
Publicado por: Suky en 16 de Abril de 2010, 08:32:13
Hola!!He estado mirando el código de "Midiendo un pulso" y...sería compatible con el C18 compiler...o tendría que cambiar muchas cosas???las interrupciones funcionan igual para C18??

La sintaxis es distinta. Lee algún tutorial al respecto.

Y otra cosa..tiene que ser estrictamente con RB0??o puedo usar otro puerto el que yo quiera para introducir la señal generada???

Lee detalladamente el post y veras si es necesario RB0 o no.  :roll: Si usa interrupción externa o no!


Saludos!
Título: Re: Frecuencia oscilacion
Publicado por: andreaymaria en 16 de Abril de 2010, 11:22:54

La sintaxis es distinta. Lee algún tutorial al respecto.

Sabes de algún tutorial que trate los timers y las interrupciones en C18???Gracias!!!
Título: Re: Frecuencia oscilacion
Publicado por: Suky en 16 de Abril de 2010, 11:56:07
Tienes Cursillo en C18 (http://www.todopic.com.ar/foros/index.php?topic=17017.0) y Tutorial C18 (http://www.infopic.comlu.com/joomla/index.php?option=com_content&view=article&id=53&Itemid=80)


Saludos!
Título: Re: Frecuencia oscilacion
Publicado por: andreaymaria en 19 de Abril de 2010, 06:22:18
Sabeis de un ejemplito de código en el que midan las duración de un pulso, o el periodo o la frecuencia...pero con C18???
Es para ver si puedo basarme en alguno que esté hecho con C18 xq por lo que he estado mirando, el que encontré con CCS cambia bastante al tratar las interrupciones...Espero vuestra respuesta!

Muchas gracias!!
Título: Re: Frecuencia oscilacion
Publicado por: andreaymaria en 21 de Abril de 2010, 05:59:07
Alguien sabe algo???'sigo buscando y no encuentro nada.... :(