Configuración de la velocidad del oscilador interno en PIC12F1822

4

Estoy intentando obtener un PIC12F1822 para ejecutar a 32 MHz. Aquí están los bits relevantes de código:

__CONFIG _CONFIG1, _FOSC_INTOSC & _WDTE_OFF & _PWRTE_OFF & _MCLRE_ON & _CP_OFF & _CPD_OFF & _BOREN_OFF & _CLKOUTEN_OFF & _IESO_OFF & _FCMEN_OFF
__CONFIG _CONFIG2, _WRT_OFF & _PLLEN_ON & _STVREN_OFF & _BORV_19 & _LVP_OFF



MOVLW   b'11110000' ; 32MHz HFINTOSC

BANKSEL OSCCON
MOVWF   OSCCON


BANKSEL OSCSTAT
btfss OSCSTAT, HFIOFR      ; Is internal oscillator running?
goto $-1
btfss OSCSTAT, HFIOFL      ; Is internal oscillator locked?
goto $-1


BANKSEL TRISA
CLRF    TRISA


BANKSEL PORTA

ON
    BSF      PORTA,2          ; 1 cycle
    GOTO    OFF               ; 2 cycles

OFF 
    BCF      PORTA,2          ; 1 cycle
    GOTO     ON               ; 2 cycles

Estoy obteniendo una onda cuadrada de 1,33 MHz de PORTA, 2, lo que significa que el reloj funciona a 8MHz ... Sin embargo, el PLL definitivamente funciona, como si lo apagara, la frecuencia cae a 333KHz (2MHz)

Según el depurador (PicKit3), OSCCON está obteniendo el valor correcto.

El chip se ejecuta a 5 V.

¿Alguna idea?

    
pregunta tsiflana

1 respuesta

4

El reloj de instrucciones en esta parte (y la mayoría de los PIC en general) se ejecuta en \ $ \ frac {F_ {OSC}} {4} \ $.

Cada ciclo de instrucción es \ $ \ frac {4} {32 MHz} = 125ns \ $

que tiene mucho sentido cuando describe una onda cuadrada de salida de 1.33 MHz

(6 relojes totales = \ $ 750ns \ $ = 1.33 MHz)

    
respondido por el Adam Lawrence

Lea otras preguntas en las etiquetas