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

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

Desconectado aitorsp

  • PIC18
  • ****
  • Mensajes: 296
Re: Configuracion del oscilador interno en CCS
« Respuesta #15 en: 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  :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!



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

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: Configuracion del oscilador interno en CCS
« Respuesta #16 en: 05 de Junio de 2011, 13:07:28 »
tienes razon Suky, la configuracion que puse es para un reloj externo,  :oops: 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. :mrgreen:

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 :shock:

"Nada es imposible, no si puedes imaginarlo"

Desconectado bmb

  • PIC18
  • ****
  • Mensajes: 423
Re: Configuracion del oscilador interno en CCS
« Respuesta #17 en: 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: 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!


Desconectado aitorsp

  • PIC18
  • ****
  • Mensajes: 296
Re: Configuracion del oscilador interno en CCS
« Respuesta #18 en: 05 de Junio de 2011, 18:20:55 »
Hola:

Muchas gracias a todos. ya funciona   :-/   :-/   :-/

Un saludo

Aitor

Desconectado bmb

  • PIC18
  • ****
  • Mensajes: 423
Re: Configuracion del oscilador interno en CCS
« Respuesta #19 en: 05 de Junio de 2011, 18:50:17 »
Hola aitorsp, me alegra mucho que puedas seguir adelante con tu programa!

Saludos!

Desconectado shadow721

  • PIC10
  • *
  • Mensajes: 1
ayuda con interrupciones
« Respuesta #20 en: 27 de Junio de 2013, 03:42:40 »
hola compile este codigo en ccs:

#include <16f876a.h>
#include <math.h>
//, NOPROTECT, PUT, NOWRT
#use delay(clock=4000000)
#fuses XT, NOWDT
#BYTE TRISA = 0x85
#BYTE PORTA = 0x05
//#use standard_io(B)
//long int cont = 0;
#int_TIMER1
void TIMER1_ISR(void)
{
   bit_set(PORTA,3);
   //output_toggle(PIN_A3);
   set_timer1(7036);
   

}

void main()
{
   bit_clear(TRISA,3);
   bit_clear(PORTA,3);
//   bit_set(PORTA,3);
   setup_timer_1(T1_INTERNAL | T1_DIV_BY_2);
   set_timer1(28035);
   enable_interrupts(INT_TIMER1);
   enable_interrupts(global);
   while(1);

}


pues resulta que lo simulo en proteus y funciona de maravilla pero cuando lo hago fisicamente no funciona, si solo prendo un led en la funcion main() si prende, pero si lo hago dentro de la interrupcion no prende

pueden ayudarme a solucionar este probelama y si uso osc de cristal no se declara en el codigo

Desconectado isfan

  • PIC16
  • ***
  • Mensajes: 145
Re: Configuracion del oscilador interno en CCS
« Respuesta #21 en: 27 de Junio de 2013, 04:53:36 »
cuando grabaste el pic le diste a las opciones del fuses?

o si no inserta las opciones manualmente en su codigo

#fuses NOWDT         //Deshabilita Watchdog
//#fuses INTXT            //Cristal Externo
//#fuses RC                //Oscilador RC (Resistencia Capacitor Externos)
//#fuses HS                //Modo Full Power de alta Velocidad, hasta 10MHZ, más depende el micro
//#fuses LP                //Modo Bajo Consumo hasta 200KHZ
#fuses INTRC         //Cristal Interno RC
#use delay(clock=4000000)

Si usas un cristal de cuarzo, tienes la opción de no declararlo en el codigo, pero a la hora de grabarlo tiene que decirlo en el programa.
« Última modificación: 27 de Junio de 2013, 07:49:12 por isfan »

Desconectado vicsestrada

  • PIC10
  • *
  • Mensajes: 2
Re: Configuracion del oscilador interno en CCS
« Respuesta #22 en: 12 de Septiembre de 2013, 00:08:55 »
hola,
Como le hiciste amigo a mi tampoco me queda :(

Desconectado mdvymdv

  • PIC10
  • *
  • Mensajes: 2
Re: Configuracion del oscilador interno en CCS
« Respuesta #23 en: 14 de Diciembre de 2014, 21:59:54 »
Estuve renegando con el oscilador interno de un PIC 18F2550, pero logre solucionarlo.
este es el código para un oscilador a 8MHz

Código: [Seleccionar]
// VERSION SOFT: " PCWHD CCS C Compiler 5.010 "

#include <18F2550.h>
#FUSES NOWDT                 //No Watch Dog Timer
#FUSES INTRC_IO              //OSCILADOR INTERNO SIN SALIDA DE CLOCK OUT
#FUSES NOPUT                 //No Power Up Timer
#FUSES NOMCLR                //Master Clear pin Un-enabled
#FUSES PROTECT               //Code not protected from reading
#FUSES CPD                   //No EE protection
#FUSES NOBROWNOUT            //Reset when brownout detected
#FUSES NOLVP                 //No Low Voltage Programming
#FUSES NODEBUG               //No Debug mode for ICD

#use delay (clock=8000000)

//#define OSC_8MHZ    0x70    // no es necesario definirlo, esta incluido en la cabecera del pic.

#include <D:\MARIO\- ELECTRONICA -\- PROYECTOS EN CCS TERMINADOS -\PROYECTOS CON TONES\Melodias TONES completo\XTONES.c>  // buzzer=RB3
#include <D:\MARIO\- ELECTRONICA -\- PROYECTOS EN CCS TERMINADOS -\PROYECTOS CON TONES\Melodias TONES completo\XLCD.c>    //RC0=E,RC1=RS,RC3=RW; data=RB4,RB5,RB6,RB7.

//------------------- INTRO SE HA TOMADO TODO EL VINO  -----------------------
void MONA()
      {
      generate_tone(A_NOTE[1], 185.2); 
      generate_tone(C_NOTE[2], 185.2); 
      generate_tone(E_NOTE[2], 375); 
      generate_tone(A_NOTE[1], 185.2); 
      generate_tone(C_NOTE[2], 185.2); 
      generate_tone(E_NOTE[2], 375);   
      generate_tone(A_NOTE[1], 185.2); 
      generate_tone(C_NOTE[2], 185.2); 
      generate_tone(E_NOTE[2], 185.2); 
      generate_tone(D_NOTE[2], 185.2); 
      generate_tone(C_NOTE[2], 185.2); 
      generate_tone(B_NOTE[1], 185.2); 
      generate_tone(A_NOTE[1], 185.2); 
      generate_tone(G_NOTE[1], 185.2);
      generate_tone(G_NOTE[1], 185.2);
      generate_tone(B_NOTE[1], 185.2); 
      generate_tone(D_NOTE[2], 375);   
      generate_tone(G_NOTE[1], 185.2); 
      generate_tone(B_NOTE[1], 185.2); 
      generate_tone(D_NOTE[2], 375);
      }   
void F1()      // FIN 1 MONA
      {
      generate_tone(G_NOTE[1], 185.2); 
      generate_tone(B_NOTE[1], 185.2); 
      generate_tone(D_NOTE[2], 185.2); 
      generate_tone(C_NOTE[2], 185.2); 
      generate_tone(D_NOTE[2], 375);   
      generate_tone(E_NOTE[2], 1000);   
      delay_ms(185);
      }                   
void F2()    //  FIN 2 MONA
      {       
      generate_tone(G_NOTE[1], 185.2); 
      generate_tone(B_NOTE[1], 185.2); 
      generate_tone(D_NOTE[2], 185.2); 
      generate_tone(C_NOTE[2], 185.2); 
      generate_tone(B_NOTE[1], 375);   
      generate_tone(A_NOTE[1], 990);   
      }
///////////////////////  FIN INTRO LA MONA  /////////////////////////////

void main()
{
   setup_oscillator (OSC_8MHZ|OSC_INTRC);  // Lo "PRIMERO QUE HAGO" en el Main es configurar el oscilador, salvo la declaración de variables si hubiese.
   lcd_init();
     
   printf (lcd_putc, "\f  SE HA TOMADO  ");
   printf (lcd_putc, "\n  TODO EL VINO  ");
     
   while(true)
         {
          MONA();
          F1();
          MONA();
          F2();
          }
}

Desconectado Mago_Opamp

  • PIC10
  • *
  • Mensajes: 2
Re:Configuracion del oscilador interno en CCS
« Respuesta #24 en: 15 de Abril de 2016, 20:44:40 »
Sabiendo que INTXT permite que usemos el crystal externo para el modulo usb y oscilador interno  para el resto de los perifericos del pic, como seria la configuracion de los fuses o del setup_oscilador().. me pueden ayudar??
Es Suerte aquel momento cuando la preparación se encuentra con la oportunidad..

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Configuracion del oscilador interno en CCS
« Respuesta #25 en: 15 de Abril de 2016, 21:44:56 »
Sabiendo que INTXT permite que usemos el crystal externo para el modulo usb y oscilador interno  para el resto de los perifericos del pic, como seria la configuracion de los fuses o del setup_oscilador().. me pueden ayudar??

Primera busqueda por internet:


Citar
The syntax to use the external oscillator for USB, and the internal for the CPU, is just:

INTRC,PLL1,USBDIV

The external oscillator block, is _not_ turned off by selecting the internal oscillator for the CPU. Look at the oscillator diagram for the chip, and the names against the oscillator paths in this.

Best Wishes