TODOPIC
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.
¿Perdiste tu email de activación?
28 de Agosto de 2014, 10:04:30

Ingresar con nombre de usuario, contraseña y duración de la sesión
Buscar:     Búsqueda Avanzada
347727 Mensajes en 39013 Temas por 40624 Usuarios
Último usuario: joseito
* Inicio Ayuda Buscar Calendario Ingresar Registrarse
Buscar en TodoPIC
+  TODOPIC
|-+  Microcontroladores PIC
| |-+  Lenguaje C para microcontroladores PIC (Moderadores: Modulay, pikman, pocher, vszener, Suky)
| | |-+  Configuracion del oscilador interno en CCS
0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: [1] 2 Marcar como favorito Imprimir
Autor Tema: Configuracion del oscilador interno en CCS  (Leído 7608 veces)
aitorsp
PIC18
****
Desconectado Desconectado

España España

Mensajes: 283


« : 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
En línea
samshiel_pic
Colaborador
PIC24F
*****
Desconectado Desconectado

Sexo: Masculino
España España

Mensajes: 744



WWW
« Respuesta #1 : 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().
En línea

rivale
Colaborador
PIC24H
*****
Desconectado Desconectado

Sexo: Masculino
Mexico Mexico

Mensajes: 1661


Rivale


« Respuesta #2 : 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.
En línea

"Nada es imposible, no si puedes imaginarlo"
Suky
Moderador Local
DsPIC33
*****
Desconectado Desconectado

Sexo: Masculino
Argentina Argentina

Mensajes: 6761


Con Qt...


WWW
« Respuesta #3 : 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!
En línea

aitorsp
PIC18
****
Desconectado Desconectado

España España

Mensajes: 283


« Respuesta #4 : 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
En línea
bmb
PIC18
****
Desconectado Desconectado

Sexo: Masculino
Colombia Colombia

Mensajes: 423


« Respuesta #5 : 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!
En línea
rivale
Colaborador
PIC24H
*****
Desconectado Desconectado

Sexo: Masculino
Mexico Mexico

Mensajes: 1661


Rivale


« Respuesta #6 : 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
En línea

"Nada es imposible, no si puedes imaginarlo"
aitorsp
PIC18
****
Desconectado Desconectado

España España

Mensajes: 283


« Respuesta #7 : 05 de Junio de 2011, 12:05:59 »

Hola:

Pongo en codigo completo porque no me funciona.

Código:
#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
En línea
MLO__
Colaborador
DsPIC33
*****
Desconectado Desconectado

Sexo: Masculino
Colombia Colombia

Mensajes: 4495

MLO


« Respuesta #8 : 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
En línea

El papel lo aguanta todo
rivale
Colaborador
PIC24H
*****
Desconectado Desconectado

Sexo: Masculino
Mexico Mexico

Mensajes: 1661


Rivale


« Respuesta #9 : 05 de Junio de 2011, 12:14:13 »

que es lo que no te funciona, si lo compila bien?, cual es el error?
En línea

"Nada es imposible, no si puedes imaginarlo"
aitorsp
PIC18
****
Desconectado Desconectado

España España

Mensajes: 283


« Respuesta #10 : 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
En línea
rivale
Colaborador
PIC24H
*****
Desconectado Desconectado

Sexo: Masculino
Mexico Mexico

Mensajes: 1661


Rivale


« Respuesta #11 : 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:
#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
En línea

"Nada es imposible, no si puedes imaginarlo"
aitorsp
PIC18
****
Desconectado Desconectado

España España

Mensajes: 283


« Respuesta #12 : 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:
#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:
#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 » En línea
rivale
Colaborador
PIC24H
*****
Desconectado Desconectado

Sexo: Masculino
Mexico Mexico

Mensajes: 1661


Rivale


« Respuesta #13 : 05 de Junio de 2011, 12:44:33 »

como estas probando tu programa para saber si esta corriendo a la velocidad correcta?
En línea

"Nada es imposible, no si puedes imaginarlo"
Suky
Moderador Local
DsPIC33
*****
Desconectado Desconectado

Sexo: Masculino
Argentina Argentina

Mensajes: 6761


Con Qt...


WWW
« Respuesta #14 : 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  Loco



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()  Confused  Creería que colocando setup_oscillator(OSC_8MHZ|OSC_INTRC) debería de funcionar. Se podria revisar si CCS lo configura adecuadamente.


Saludos!

En línea

aitorsp
PIC18
****
Desconectado Desconectado

España España

Mensajes: 283


« Respuesta #15 : 05 de Junio de 2011, 13:05:17 »


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  Loco



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()  Confused  Creería que colocando setup_oscillator(OSC_8MHZ|OSC_INTRC) debería de funcionar. Se podria revisar si CCS lo configura adecuadamente.


Saludos!



Hola Suky:

Lo que quiero es usar el oscilador interno a 8 Mhz en el PIC18f4550 pero de momento solo lo consigo en C18 pero no en CCS.

Un saludo

Aitor
En línea
rivale
Colaborador
PIC24H
*****
Desconectado Desconectado

Sexo: Masculino
Mexico Mexico

Mensajes: 1661


Rivale


« Respuesta #16 : 05 de Junio de 2011, 13:07:28 »

tienes razon Suky, la configuracion que puse es para un reloj externo,  Embarassed espero no haberte causado conflicto aitor, los 18 casi no los ocupo con el cristal interno, para poder llegar a su maxima velocidad de 48MHz. Mr. Green

deberia funcionar con solo porner intrc_io y el delay con oxc de 8MHz.

segun el manual del ccs no se necesitaria el setup_osc. pero habria que ver si esto es cierto Shocked

En línea

"Nada es imposible, no si puedes imaginarlo"
bmb
PIC18
****
Desconectado Desconectado

Sexo: Masculino
Colombia Colombia

Mensajes: 423


« Respuesta #17 : 05 de Junio de 2011, 13:08:52 »

Hola, como dice Suky, si vas a usar el oscilador interno con #fuses HSPLL no te va a funcionar, porque ese fuse es para cristal o resonador externo con el PLL habilitado.  Si usas el oscilador interno, te sugiero esta configuración:

Código
GeSHi (c):
  1. #include <18F4550.h>
  2.  
  3. #FUSES NOWDT                    //No Watch Dog Timer
  4. #FUSES WDT128                   //Watch Dog Timer uses 1:128 Postscale
  5. #FUSES PLL1                     //No PLL PreScaler
  6. #FUSES CPUDIV1                  //No System Clock Postscaler
  7. #FUSES NOUSBDIV                 //USB clock source comes from primary oscillator
  8. #FUSES INTEC_IO                 //Internal Clock, EC used by USB, I/O on RA6
  9. #FUSES NOFCMEN                  //Fail-safe clock monitor disabled
  10. #FUSES NOIESO                   //Internal External Switch Over mode disabled
  11. #FUSES NOBROWNOUT               //No brownout reset
  12. #FUSES NOVREGEN                 //USB voltage regulator disabled
  13. #FUSES NOPBADEN                 //PORTB pins are configured as digital I/O on RESET
  14. #FUSES NOLPT1OSC                //Timer1 configured for higher power operation
  15. #FUSES NOMCLR                   //Master Clear pin used for I/O
  16. #FUSES NOSTVREN                 //Stack full/underflow will not cause reset
  17. #FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
  18. #FUSES NOXINST                  //Extended set extension and Indexed Addressing mode disabled (Legacy mode)
  19.  
  20. #use delay(clock=8000000)
  21.  
  22.  
  23. void main()
  24. {
  25.  
  26.   setup_oscillator(OSC_8MHZ|OSC_INTRC|OSC_PLL_OFF);
  27.  
  28.  
  29. }

Saludos!

En línea
aitorsp
PIC18
****
Desconectado Desconectado

España España

Mensajes: 283


« Respuesta #18 : 05 de Junio de 2011, 18:20:55 »

Hola:

Muchas gracias a todos. ya funciona   rebotando   rebotando   rebotando

Un saludo

Aitor
En línea
bmb
PIC18
****
Desconectado Desconectado

Sexo: Masculino
Colombia Colombia

Mensajes: 423


« Respuesta #19 : 05 de Junio de 2011, 18:50:17 »

Hola aitorsp, me alegra mucho que puedas seguir adelante con tu programa!

Saludos!
En línea
TODOPIC
   

 En línea
Páginas: [1] 2 Imprimir 
« anterior próximo »
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.19 | SMF © 2006-2008, Simple Machines XHTML 1.0 válido! CSS válido!
Página creada en 0.142 segundos con 24 consultas.
anything