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!!!