Hola! Estoy usando el compilador MPLABX y quiero usar un cristal de 3.58MHz como oscilador externo para mi PIC. He leído la hoja de especificaciones y tengo entendido que debo modificar los bits OSCCON, además de que el compilador me pide especificar el valor de la frecuencia en una constante _XTAL_FREQ. Mi programa es un "hola mundo", solo quiero leer el valor en un pin (usando un push button) y escribirlo en otro pin para verlo en un LED. Este es mi código:
#include <stdio.h>
#include <stdlib.h>
#include <xc.h>
#include <pic16f887.h>
#define _XTAL_FREQ 3579545
// CONFIG1
#pragma config FOSC = XT
#pragma config WDTE = OFF
#pragma config PWRTE = OFF
#pragma config MCLRE = OFF
#pragma config CP = OFF
#pragma config CPD = OFF
#pragma config BOREN = OFF
#pragma config IESO = OFF
#pragma config FCMEN = OFF
#pragma config LVP = OFF
// CONFIG 2
#pragma config BOR4V = BOR40V
#pragma config WRT = OFF
int main(int argc, char** argv) {
ANSEL = 0;
ANSELH = 0;
TRISA = 0xFF;
TRISC = 0x00;
OSCCONbits.OSTS = 0b1;
OSCCONbits.HTS = 0b1;
OSCCONbits.LTS = 0b1;
OSCCONbits.SCS = 0b0;
while (1) {
RC6 = RA0;
}
return (EXIT_SUCCESS);
}
Esto funciona perfectamente si uso el oscilador externo que trabaja a 4MHz (para esto quito las lineas de OSCCON y _XTAL_FREQ =4000000), el problema es que cuando intento usar mi oscilador externo mi PIC se vuelve muuuy lento. El ciclo while tarda unos 8 segundos en ejecutarse por primera vez y el tiempo que tarda en leer el valor en RC6 y escribirlo en RA0 es de unos 3 segundos, pero no veo razón por la que esto suceda!! Alguien me podría ayudar, por favor?
La resistencia que uso entre las patitas de mi cristal es de 10Mohms y los capacitores son de 33pF.