Estoy tratando de trabajar con 32Mhz 4-SMD Crystal. (ASX3F-32M-FA100A4) con dos condensadores: 10 pF (hoja de datos adjunta) El IC que elegí es el PIC16f1575. Y usando MPLABX-IDE MCC Realicé la conexión como en las imágenes de abajo.
Cuando selecciono INTOSC en MCC todo funciona bien, pero si cambio la selección INTOSC a ECH en MCC como en la imagen de abajo el IC no funciona.
Sólo el código de parpadeo del LED en el bucle principal.
void main(void){
SYSTEM_Initialize();
INTCONbits.GIE = 1;INTCONbits.PEIE = 1;
while (1)
{
LED_Toggle();
__delay_ms(500);
}
}
-
¿Existe una conexión errónea entre el pic y el cristal?
-
¿Ese cristal no es adecuado para este uso?
-
¿Falta algo en el código?
Resto de la configuración Código:
// CONFIG1
#pragma config FOSC = ECH // Oscillator Selection Bits->ECH, External Clock, High Power Mode (4-32 MHz); device clock supplied to CLKIN pin
#pragma config WDTE = OFF // Watchdog Timer Enable->WDT disabled
#pragma config PWRTE = OFF // Power-up Timer Enable->PWRT disabled
#pragma config MCLRE = ON // MCLR Pin Function Select->MCLR/VPP pin function is MCLR
#pragma config CP = ON // Flash Program Memory Code Protection->Program memory code protection is enabled
#pragma config BOREN = ON // Brown-out Reset Enable->Brown-out Reset enabled
#pragma config CLKOUTEN = ON // Clock Out Enable->CLKOUT function is enabled on the CLKOUT pin
// CONFIG2
#pragma config WRT = OFF // Flash Memory Self-Write Protection->Write protection off
#pragma config PPS1WAY = ON // PPSLOCK bit One-Way Set Enable bit->PPSLOCKED Bit Can Be Cleared & Set Once
#pragma config PLLEN = OFF // PLL Enable->4x PLL disabled
#pragma config STVREN = ON // Stack Overflow/Underflow Reset Enable->Stack Overflow or Underflow will cause a Reset
#pragma config BORV = LO // Brown-out Reset Voltage Selection->Brown-out Reset Voltage (Vbor), low trip point selected.
#pragma config LPBOREN = OFF // Low Power Brown-out Reset enable bit->LPBOR is disabled
#pragma config LVP = OFF // Low-Voltage Programming Enable->High-voltage on MCLR/VPP must be used for programming
Y la inicialización;
void OSCILLATOR_Initialize(void)
{
// SCS FOSC; SPLLEN disabled; IRCF 8MHz_HF;
OSCCON = 0x70;
// TUN 0;
OSCTUNE = 0x00;
// SBOREN disabled; BORFS disabled;
BORCON = 0x00;
}