Autor Tema: Ayuda con la serie 18F  (Leído 1730 veces)

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

Desconectado otxoasound

  • PIC10
  • *
  • Mensajes: 3
Ayuda con la serie 18F
« en: 07 de Mayo de 2013, 07:28:36 »
Hola a todos.

         Este es mi primer mensaje. Quiero dar las gracias de antemano a toda la gente que ayuda desinteresadamente. Aquí va mi problema. Es la primera vez que tilizo un 18F26J53 (en realidad es la primera vez que programo un 18F). Para empezar, quería hacer que se apagara y encendiera un led. Quiero utilizar el oscilador interno, junto al PLL para generar una frecuencia de 48 MHz sin cristal externo. Proteus lo simula y funciona, pero en el montaje real no funciona. No sé qué hago mal. Os pongo el código, a ver si alguien me puede ayudar.

#include <18f26j53.h>
#fuses PLL2                //8MHz del INTERNAL OSCILLATOR BLOCK. Hay que dividir por 2 para obtener 4 MHz para atacar el PLL.
#fuses PLLEN              //Habilita el PLL. Es en realidad el bit /CFGPLLEN del registro de configuración CONFIG1L.
#fuses NOCPUDIV       //Al CPU Divider (Figure 3-1 datasheet) llegan 48 MHz del PLL. Esa es la frecuencia que nos interesa, así que la dividimos por 1.
#fuses NOPROTECT     //Código no protegido.
#fuses NOWDT            //Perro guardián desactivado.
#fuses INTRC_PLL_IO  //Usamos el oscilador interno, sin salida de reloj en RA6 y con el PLL activado.
#fuses SOSC_DIG       //Para poder usar RC0 y RC1 como IO digitales en vez de para el oscilador secundario.
#fuses NOCLOCKOUT  //No queremos salida de reloj en RA6.
#fuses NOFCMEN        //Desactivamos Fail-Safe Clock Monitor, ya que no tiene sentido puesto que usamos el oscilador interno sólo.
#fuses NOIESO           //Deshabilita el cambio entre el reloj interno o externo.
#fuses NODSWDT       //Perro guardián desactivado en Deep Sleep Mode.
#fuses IOL1WAY          //No permite múltiples reconfiguraciones de periféricos en los pines.   
#fuses NOWPCFG         //Configuration Words no protegidas contra borrado/escritura.
#fuses LS48MHZ      //En caso de usar USB de baja velocidad lo ajustamos así porque del PLL llegan 48 MHz.
#fuses RTCOSC_INT //El RTCC usa el oscilador interno.
#use delay (clock=48000000)      //El uC trabajará a 48 MHz.
//----------------------------------------------------------------------------------------------------------------------------------
void main (void)
{
setup_adc(adc_off);
setup_adc_ports(NO_ANALOGS);
while(TRUE)
   {
   output_a(0xFF);
   delay_ms(1000);
   output_a(0x00);
   delay_ms(1000);
   }
}


                              Gracias de antemano por la ayuda!!!

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Ayuda con la serie 18F
« Respuesta #1 en: 07 de Mayo de 2013, 08:28:31 »
Creo que tu problema radica en que le estas diciendo al compilador que usaras el cristal externo y no lo tiene.
Mira la ayuda de CCS:

Citar
Syntax:
 #USE DELAY (options))

 
 
Elements:
 Options may be any of the following separated by commas:

 

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.   

 

Creo que deberas ponerlo asi:

Código: C
  1. #USE DELAY (oscillator = 48MHZ)

Lo de Proteus nunca lo creas, ya que no simula realmente el oscilador, solo usa la frecuencia declarada... :mrgreen:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado otxoasound

  • PIC10
  • *
  • Mensajes: 3
Re: Ayuda con la serie 18F
« Respuesta #2 en: 07 de Mayo de 2013, 10:55:25 »
Hola.

          Gracias por la ayuda. Si elijo esa opción en el   #use_delay   , me cambia la configuración. En todo caso, creo que habría que poner #use_delay(internall=48MHZ). Así no cambia los bits de configuración. También me olvidé de habilitar el PLL en el código, por lo que he añadido    setup_oscillator(OSC_PLL_ON). De todas formas, no se ha resuelto el problema. También he puesto el set_tris_b(0x00), para configurar como salidas. No consigo solucionar el problema...¿alguna idea más?. Aquí pongo el código tal y como está ahora:


#include <18f26j53.h>
#fuses PLL2       
#fuses PLLEN   
#fuses NOCPUDIV     
#fuses NOPROTECT     
#fuses NOWDT       
#fuses INTRC_PLL_IO
#fuses SOSC_DIG   
#fuses NOCLOCKOUT 
#fuses NOFCMEN     
#fuses NOIESO       
#use delay(internal=48MHZ)
//********************************************************************************
void main (void)
{
setup_oscillator(OSC_PLL_ON);
set_tris_b(0x00);
while(TRUE)
   {
   output_b(0xFF);
   delay_ms(1000);
   output_b(0x00);
   delay_ms(1000);
   }
}

   

                         Gracias!!!

Desconectado Miquel_S

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1251
Re: Ayuda con la serie 18F
« Respuesta #3 en: 07 de Mayo de 2013, 16:42:30 »
Hola otxoasound creo te falta el #include <delays.h>

Saludos!
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Ayuda con la serie 18F
« Respuesta #4 en: 07 de Mayo de 2013, 18:04:01 »
No lo ha dicho, pero la sintaxis es de CCS, y en ese caso la libreria esta incluida...
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado otxoasound

  • PIC10
  • *
  • Mensajes: 3
Re: Ayuda con la serie 18F
« Respuesta #5 en: 08 de Mayo de 2013, 04:48:04 »
Hola.

          Gracias por las respuestas. Sí, no lo he dicho, pero estoy utilizando CCS, así que no es necesario incluir nada.


 

anything