Autor Tema: Configuracion del oscilador interno en CCS  (Leído 42780 veces)

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

Desconectado aitorsp

  • PIC18
  • ****
  • Mensajes: 296
Configuracion del oscilador interno en CCS
« en: 05 de Junio de 2011, 08:45:53 »
Hola:

Una duda acerca de la configuracion del oscilador interno en CCS.

Segun el manual si ponemos #use delay(internal=8M) dice que configura el INTOSC_IO para funcionar a 8 Mhz. Entonces la pregunta es:

Seria necesario configurar el fuse INTRC_IO y el setup_oscillator(OSC_8MHZ|OSC_INTRC|OSC_31250|OSC_PLL_OFF); ?

Un saludo

Aitor

Desconectado samshiel_pic

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 777
    • Electrónica·Ingenia
Re: Configuracion del oscilador interno en CCS
« Respuesta #1 en: 05 de Junio de 2011, 10:18:44 »
Hola buenas! Hombre yo siempre lo he hecho de la segunda forma primero declarando el fuse luego poniendo el #use_delay(clock=8000000) y luego configurando el setup en el main().

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: Configuracion del oscilador interno en CCS
« Respuesta #2 en: 05 de Junio de 2011, 10:32:02 »
yo lo declaro asi:

Fuses intrc_io

#use delay(clock=8000000)

y con eso queda, si ya le dijiste en los fuses que es con osc interno no necesitas decircelo por software, ose, no necesitar poner el setup_oscollator.
"Nada es imposible, no si puedes imaginarlo"

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Configuracion del oscilador interno en CCS
« Respuesta #3 en: 05 de Junio de 2011, 11:24:10 »
Dependiendo del microcontrolador con declarar mediante fuses la utilización del oscilador interno no alcanza, ya que se pueden seleccionar varias opciones de velocidad (PIC18F). Para configurarlo se utiliza setup_oscillator(), por lo menos en CCS.


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado aitorsp

  • PIC18
  • ****
  • Mensajes: 296
Re: Configuracion del oscilador interno en CCS
« Respuesta #4 en: 05 de Junio de 2011, 11:40:19 »
Dependiendo del microcontrolador con declarar mediante fuses la utilización del oscilador interno no alcanza, ya que se pueden seleccionar varias opciones de velocidad (PIC18F). Para configurarlo se utiliza setup_oscillator(), por lo menos en CCS.


Saludos!

Hola suky:

utilizo el PIC18F4550 a 8 Mhz de oscilador interno con lo que segun dices habria que hacer:

#fuses INTRC_IO

#use delay(internal=8M)

setup_oscillator(OSC_8MHZ|OSC_INTRC|OSC_31250|OSC_PLL_OFF);

Es asi?

un saludo

Aitor

Desconectado bmb

  • PIC18
  • ****
  • Mensajes: 423
Re: Configuracion del oscilador interno en CCS
« Respuesta #5 en: 05 de Junio de 2011, 11:42:43 »
Hola, en realidad como dice rivale tambien es correcto.  Del manual de CCS para setup_oscillator():

Citar
Note that if INTRC or INTRC_IO is specified in #fuses and a #USE DELAY is
used for a valid speed option, then the compiler will do this setup automatically
at the start of main().

Es suficiente con declarar el fuse y una velocidad válida en #use delay()

Saludos!

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: Configuracion del oscilador interno en CCS
« Respuesta #6 en: 05 de Junio de 2011, 11:52:35 »

#fuses INTRC_IO

#use delay(internal=8M)

setup_oscillator(OSC_8MHZ|OSC_INTRC|OSC_31250|OSC_PLL_OFF);

Es asi?

un saludo

Aitor


ponlo asi:

setup_oscillator(OSC_8MHZ|OSC_INTRC|OSC_PLL_OFF);

la parte en rojo no va
"Nada es imposible, no si puedes imaginarlo"

Desconectado aitorsp

  • PIC18
  • ****
  • Mensajes: 296
Re: Configuracion del oscilador interno en CCS
« Respuesta #7 en: 05 de Junio de 2011, 12:05:59 »
Hola:

Pongo en codigo completo porque no me funciona.

Código: [Seleccionar]
#include <18F4550.h>

#fuses NOWDT,INTRC_IO,NOPROTECT,NOBROWNOUT,NOPUT,NOCPD,NOSTVREN,NODEBUG
#fuses NOLVP,NOWRT,NOWRTD,NOFCMEN,NOPBADEN,NOWRTC,NOWRTB,NOEBTR,NOCPB
#fuses NOMCLR
#use delay(internal=8M)
#define LCD_DB4   PIN_A3
#define LCD_DB5   PIN_A5
#define LCD_DB6   PIN_E0
#define LCD_DB7   PIN_E1

#define LCD_RS    PIN_A0
#define LCD_RW    PIN_A1
#define LCD_E     PIN_A2

#define  sig         6     //0x06
#define  clear       1     //0x01
#define  cursor_no   12    //0x0C
#define  cursor_si   14    //0x0E
#define  cur_blink   15    //0x0F
#define  desp_izq    24   //comandos de desplazamiento
#define  desp_der    28
#define  gen_car     64
#define  lin1        133   //0x85
#define  ren1        128   //0x80
#define  ren2        192   //0xC0


#include   "flex_lcd.c"

int pos;

void main()
{
   setup_adc_Ports(NO_ANALOGS);
   setup_oscillator(OSC_8MHZ|OSC_INTRC|OSC_PLL_OFF);
   set_tris_a(0x00);
   set_tris_e(0x00);
   set_tris_d(0x00);
   lcd_init();
   pos=16;
   lcd_init();
     while(true){
     output_high(PIN_D2);
     delay_ms(1000);
     output_low(PIN_D2);
     if(pos!=1){
     lcd_gotoxy(pos,1);
     lcd_putc("Hola");
     lcd_gotoxy(pos,2);
     lcd_putc("Todopic");
     delay_ms(300);
     lcd_send_byte(0,desp_der);
     }
     pos=16;
}
}


Un saludo

Aitor

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Configuracion del oscilador interno en CCS
« Respuesta #8 en: 05 de Junio de 2011, 12:10:53 »
Hola

Verifica que tu programador soporte el NOMCLR y INTRC_IO al mismo tiempo .... el ICD2, por ejemplo, no deja programar con esa configuración en los #fuses.

Saludos
El papel lo aguanta todo

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: Configuracion del oscilador interno en CCS
« Respuesta #9 en: 05 de Junio de 2011, 12:14:13 »
que es lo que no te funciona, si lo compila bien?, cual es el error?
"Nada es imposible, no si puedes imaginarlo"

Desconectado aitorsp

  • PIC18
  • ****
  • Mensajes: 296
Re: Configuracion del oscilador interno en CCS
« Respuesta #10 en: 05 de Junio de 2011, 12:16:13 »
que es lo que no te funciona, si lo compila bien?, cual es el error?

Hola:

Compilar si que compila pero al probar el hardware no funciona. revisaré por si es fallo de hardware.

un saludo

Aitor

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: Configuracion del oscilador interno en CCS
« Respuesta #11 en: 05 de Junio de 2011, 12:23:28 »

en tus fuses te falta ponerle que PLL y que postescalkador usas, tal vez por eso no te funciona



Código: [Seleccionar]
#include <18f4550.h>//pic a utilizar

#include <stdlib.h>

#fuses HSPLL,NOWDT,NOPROTECT,BROWNOUT,PUT,NOLVP,NOCPD,NOMCLR,PLL1,CPUDIV1,NOVREGEN//configuraciones del pic
#use DELAY(clock=8000000)//frecuencia del oscilador en Hz



yo uso esta configuracion para el 4550, y funciona bien, pruebalo y me dices
"Nada es imposible, no si puedes imaginarlo"

Desconectado aitorsp

  • PIC18
  • ****
  • Mensajes: 296
Re: Configuracion del oscilador interno en CCS
« Respuesta #12 en: 05 de Junio de 2011, 12:43:16 »

en tus fuses te falta ponerle que PLL y que postescalkador usas, tal vez por eso no te funciona



Código: [Seleccionar]
#include <18f4550.h>//pic a utilizar

#include <stdlib.h>

#fuses HSPLL,NOWDT,NOPROTECT,BROWNOUT,PUT,NOLVP,NOCPD,NOMCLR,PLL1,CPUDIV1,NOVREGEN//configuraciones del pic
#use DELAY(clock=8000000)//frecuencia del oscilador en Hz



yo uso esta configuracion para el 4550, y funciona bien, pruebalo y me dices


Hola:

Con los cambios que comentas no me funciona:

Código: [Seleccionar]
#include <18F4550.h>
#include <stdlib.h>

#fuses HSPLL,NOWDT,NOPROTECT,BROWNOUT,PUT,NOLVP,NOCPD,NOMCLR,PLL1,CPUDIV1,NOVREGEN
#use delay(clock=8M)
#define LCD_DB4   PIN_A3
#define LCD_DB5   PIN_A5
#define LCD_DB6   PIN_E0
#define LCD_DB7   PIN_E1

#define LCD_RS    PIN_A0
#define LCD_RW    PIN_A1
#define LCD_E     PIN_A2

#define  sig         6     //0x06
#define  clear       1     //0x01
#define  cursor_no   12    //0x0C
#define  cursor_si   14    //0x0E
#define  cur_blink   15    //0x0F
#define  desp_izq    24   //comandos de desplazamiento
#define  desp_der    28
#define  gen_car     64
#define  lin1        133   //0x85
#define  ren1        128   //0x80
#define  ren2        192   //0xC0


#include   "flex_lcd.c"

int pos;

void main()
{
   setup_adc_Ports(NO_ANALOGS);
   setup_oscillator(OSC_8MHZ|OSC_INTRC|OSC_PLL_OFF);
   set_tris_a(0x00);
   set_tris_e(0x00);
   set_tris_d(0x00);
   lcd_init();
   pos=16;
   lcd_init();
     while(true){
     output_high(PIN_D2);
     delay_ms(1000);
     output_low(PIN_D2);
     if(pos!=1){
     lcd_gotoxy(pos,1);
     lcd_putc("Hola");
     lcd_gotoxy(pos,2);
     lcd_putc("Todopic");
     delay_ms(300);
     lcd_send_byte(0,desp_der);
     }
     pos=16;
}
}


Tiene que ser problema del codigo porque en C18 he hecho una prueba y funciona bien.

Un saludo

Aitor
« Última modificación: 05 de Junio de 2011, 12:53:23 por aitorsp »

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: Configuracion del oscilador interno en CCS
« Respuesta #13 en: 05 de Junio de 2011, 12:44:33 »
como estas probando tu programa para saber si esta corriendo a la velocidad correcta?
"Nada es imposible, no si puedes imaginarlo"

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Configuracion del oscilador interno en CCS
« Respuesta #14 en: 05 de Junio de 2011, 13:00:34 »

en tus fuses te falta ponerle que PLL y que postescalkador usas, tal vez por eso no te funciona

#fuses HSPLL,NOWDT,NOPROTECT,BROWNOUT,PUT,NOLVP,NOCPD,NOMCLR,PLL1,CPUDIV1,NOVREGEN//configuraciones del pic
#use DELAY(clock=8000000)//frecuencia del oscilador en Hz

yo uso esta configuracion para el 4550, y funciona bien, pruebalo y me dices

Pero al final va usar oscilador interno o cristal externo? Esa configuración no cierra por ningún lado  :z)



Entre las opciones de fuses para oscilador interno se tiene INTHS, INTXT, INTRC_IO,INTRC. Ello corresponde según a datasheet a:

Citar
9. INTHS Internal Oscillator used as
microcontroller clock source, HS
Oscillator used as USB clock source
10. INTXT Internal Oscillator used as
microcontroller clock source, XT
Oscillator used as USB clock source
11. INTIO Internal Oscillator used as
microcontroller clock source, EC
Oscillator used as USB clock source,
digital I/O on RA6
12. INTCKO Internal Oscillator used as
microcontroller clock source, EC
Oscillator used as USB clock source,
FOSC/4 output on RA6

Después hay que trabajar sobre el registro OSCCON para seleccionar correctamente la frecuencia, que en CCS en teoría se haría con setup_oscillator()  :?  Creería que colocando setup_oscillator(OSC_8MHZ|OSC_INTRC) debería de funcionar. Se podria revisar si CCS lo configura adecuadamente.


Saludos!

No contesto mensajes privados, las consultas en el foro