Utilizar el oscilador interno del pic 18F4550 con SDCC

Ver el tema anterior Ver el tema siguiente Ir abajo

Utilizar el oscilador interno del pic 18F4550 con SDCC

Mensaje por JosePablo el Sáb 9 Oct 2010 - 5:12

Hola a Tod@s
Estoy tratando de poner a funcionar un pic 18F4550 y quiero utilizar el oscilador interno y estoy haciendo una prueba activando un led (al principio era hacer un blinking pero no me funciona asi que lo cambie a solo encenderlo), el led lo enciendo con lógica negativa, o sea se activa con cero voltios a la salida del pic.

No sé si las configuraciones de los CONFIGs están bien.
Este es el código
Código:

#include <pic18f4550.h>

code char at __CONFIG1L CONFIG1L = _PLLDIV_NO_DIVIDE__4MHZ_INPUT__1L & _CPUDIV__OSC1_OSC2_SRC___1__96MHZ_PLL_SRC___2__1L & _USBPLL_CLOCK_SRC_FROM_OSC1_OSC2_1L;
code char at __CONFIG1H CONFIG1H = _OSC_INTOSC__INTOSC_RA6__USB_EC_1H & _FCMEN_OFF_1H & _IESO_OFF_1H;
code char at __CONFIG2L CONFIG2L = _PUT_OFF_2L & _BODEN_ON_2L & _BODENV_2_0V_2L & _VREGEN_OFF_2L;
code char at __CONFIG2H CONFIG2H = _WDT_ON_2H & _WDTPS_1_32768_2H;
code char at __CONFIG3H CONFIG3H = _CCP2MUX_RC1_3H & _PBADEN_PORTB_4_0__CONFIGURED_AS_DIGITAL_I_O_ON_RESET_3H & _LPT1OSC_OFF_3H & _MCLRE_MCLR_ON_RE3_OFF_3H;
code char at __CONFIG4L CONFIG4L = _STVR_ON_4L & _LVP_ON_4L & _ENICPORT_OFF_4L & _ENHCPU_OFF_4L & _BACKBUG_OFF_4L;
code char at __CONFIG5L CONFIG5L = _CP_0_OFF_5L & _CP_1_OFF_5L & _CP_2_OFF_5L & _CP_3_OFF_5L;
code char at __CONFIG5H CONFIG5H = _CPB_OFF_5H;
code char at __CONFIG6L CONFIG6L = _WRT_0_OFF_6L & _WRT_1_OFF_6L & _WRT_2_OFF_6L & _WRT_3_OFF_6L;
code char at __CONFIG6H CONFIG6H = _WRTC_OFF_6H & _WRTB_OFF_6H;
code char at __CONFIG7L CONFIG7L = _EBTR_0_OFF_7L & _EBTR_1_OFF_7L & _EBTR_2_OFF_7L & _EBTR_3_OFF_7L;
code char at __CONFIG7H CONFIG7H = _EBTRB_OFF_7H;

void main()
{
    ADCON1=0x0F;
    TRISAbits.TRISA1=0;
    PORTAbits.RA1=0;
   
}

Alguna ayuda por favor.
avatar
JosePablo
Participante
Participante

Mensajes : 22
Fecha de inscripción : 10/01/2009
Edad : 36
Localización : Costa Rica

Volver arriba Ir abajo

Re: Utilizar el oscilador interno del pic 18F4550 con SDCC

Mensaje por maigke el Lun 18 Oct 2010 - 12:48

Hola espero que no sea muy tarde para responder, mira de momento no he usado el oscilador interno del 18f4550, pero si el interno de un 16f819, y por lo que acabo de leer del data sheet, es muy similar para "configurar" el interno del 16f81 y el interno del 18f4550.

Por lo que vi en tu config word, si esta bien, pero de acuerdo a la pagina 33 del datasheet del Micro que usas, esta el registro OSCCON

en el cual tienes los siguientes bits

IRCF2:IRCF0 son los bits para configurar la velocidad desde 32kHz hasta 8MHz del oscilador
SCS1:SCS0 son los bits para seleccion del sistema de reloj, de acuerdo al datasheet

1x es para seleccionar el oscilador interno

Por lo que creo que tu código quedaría mas o menos así
Código:

#include <pic18f4550.h>

code char at __CONFIG1L CONFIG1L = _PLLDIV_NO_DIVIDE__4MHZ_INPUT__1L & _CPUDIV__OSC1_OSC2_SRC___1__96MHZ_PLL_SRC___2__1L & _USBPLL_CLOCK_SRC_FROM_OSC1_OSC2_1L;
//Aguas con esta, ¿vas a usar el PLL?

code char at __CONFIG1H CONFIG1H = _OSC_INTOSC__INTOSC_RA6__USB_EC_1H & _FCMEN_OFF_1H & _IESO_OFF_1H;

//Aqui defines el oscilador interno, ok
code char at __CONFIG2L CONFIG2L = _PUT_OFF_2L & _BODEN_ON_2L & _BODENV_2_0V_2L & _VREGEN_OFF_2L;
code char at __CONFIG2H CONFIG2H = _WDT_ON_2H & _WDTPS_1_32768_2H;
code char at __CONFIG3H CONFIG3H = _CCP2MUX_RC1_3H & _PBADEN_PORTB_4_0__CONFIGURED_AS_DIGITAL_I_O_ON_RESET_3H & _LPT1OSC_OFF_3H & _MCLRE_MCLR_ON_RE3_OFF_3H;
code char at __CONFIG4L CONFIG4L = _STVR_ON_4L & _LVP_ON_4L & _ENICPORT_OFF_4L & _ENHCPU_OFF_4L & _BACKBUG_OFF_4L;
code char at __CONFIG5L CONFIG5L = _CP_0_OFF_5L & _CP_1_OFF_5L & _CP_2_OFF_5L & _CP_3_OFF_5L;
code char at __CONFIG5H CONFIG5H = _CPB_OFF_5H;
code char at __CONFIG6L CONFIG6L = _WRT_0_OFF_6L & _WRT_1_OFF_6L & _WRT_2_OFF_6L & _WRT_3_OFF_6L;
code char at __CONFIG6H CONFIG6H = _WRTC_OFF_6H & _WRTB_OFF_6H;
code char at __CONFIG7L CONFIG7L = _EBTR_0_OFF_7L & _EBTR_1_OFF_7L & _EBTR_2_OFF_7L & _EBTR_3_OFF_7L;
code char at __CONFIG7H CONFIG7H = _EBTRB_OFF_7H;

void main()
{
    ADCON1=0x0F;
    TRISAbits.TRISA1=0;
    PORTAbits.RA1=0;
    //Esto si quieres que el oscilador trabaje a 8MHz
    IRCF2=1;
    IRCF1=1;
    IRCF0=1;
    //Seleccion de sistema de clock
    SCS1=1;
  /*En caso de que no funque prueba
  OSCCONbits.IRCF2=1;
  no te digo si funciona, puesto que no lo he probado, pero
  haber si mas al rato, ya con certeza te digo si funca o no
*/
}

Saludos
Cool
avatar
maigke
Asiduo del Foro
Asiduo del Foro

Mensajes : 210
Fecha de inscripción : 12/04/2009
Edad : 40
Localización : Mexico

Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.