PIC18F26K20 no puede configurar el oscilador interno a alta velocidad

0

Tengo un proyecto que usa un PIC18F26K20 y estoy tratando de usar el Oscilador interno a 16 MHz. Pero no importa lo que haga, siempre corre a 32 kHz. Mi configuración es:

#pragma config FOSC = INTIO67               // Internal Oscilaor RA6 RA7 ports
#pragma config WDTEN = OFF                  // Watchdog Timeer disabled  
#pragma config HFOFST = ON                  // HFINTOSC Fast Start-up:
#pragma config PWRT = OFF                   // Power-up Timer Enable bit: OFF
#pragma config FCMEN = OFF                  // Fail-Safe Clock Monitor Enable bit:
#pragma config IESO = ON                    // Internal/External Oscillator Switchover bit ON

en el código:

OSCCON=0xf7;                    // Internal Oscillator Hi 
OSCTUNE=0x00;

¿Puede alguien decirme lo que me falta para configurar el oscilador interno a 16 MHz?

    
pregunta Dennis_k85

3 respuestas

1

Aquí es cómo configuro el oscilador interno a 8 MHz en el 18F24K22:

#include <p18cxxx.h>
#include "timers.h"

#define USE_AND_MASKS

#pragma config FOSC = INTIO67
#pragma config WDTEN = OFF
#pragma config XINST = OFF
#pragma config MCLRE = EXTMCLR
#pragma config LVP = OFF

void main (void)
{
    // set internal oscillator to 8 MHz
    OSCCON = 0b01100010;
    
respondido por el Leon Heller
0

Según la Sección 2.5.2 de la hoja de datos (página 32), HFINTOSC se habilita cuando:

• SCS1 = 1 and IRCF<2:0> 000
• SCS1 = 1 and IRCF<2:0> = 000 and INTSRC = 1
• IESO bit of CONFIG1H = 1 enabling Two-Speed Start-up.
• FCMEM bit of CONFIG1H = 1 enabling Two-Speed Start-up and Fail-Safe mode.
• FOSC<3:0> of CONFIG1H selects the internal oscillator as the primary clock

El bit del oscilador interno HF (IOFS) del registro OSCCON indica si el HFINTOSC es estable o no

No tengo claro por qué SCS1 = 1 e IRCF < 2: 0 > aparece dos veces.

#pragma config FOSC = INTIO67       // Internal Oscilaor RA6 RA7 ports
#pragma config WDTEN = OFF          // Watchdog Timeer disabled  
#pragma config HFOFST = ON          // HFINTOSC Fast Start-up:
#pragma config PWRT = OFF           // Power-up Timer Enable bit: OFF
#pragma config FCMEN = OFF          // Fail-Safe Clock Monitor Enable bit:
#pragma config IESO = ON            // Internal/External Oscillator Switchover
#pragma config SCS1 = 1             // select internal oscillator as system clock
#pragma config IRCF = 0             // 31 kHz device clock derived directly from LFINTOSC

main()
{
    OSCTUNE=0x00;
    OSCCON=0xf3;                    // Internal Oscillator Hi 
    while(HFOFST==0);               // wait for HFINTOSC to be stable

Así que he agregado un par de pragmas adicionales según las instrucciones en la Sección 2.5.2. También cambié la primera línea de main para establecer OSCCON en 0xf3 en lugar de 0xf7, por lo que sobrescribe el bit HFOFST. Luego espera que ese bit se aclare antes de hacer cualquier otra cosa.

Creo que la configuración de SCS1 puede ser el problema. El valor predeterminado es 0 y las instrucciones anteriores indican que debería ser 1.

    
respondido por el tcrosley
0

No he intentado hacer esto en MPLABX después de haber usado MPLAB1DE 8.82 principalmente. Sin embargo, tenga cuidado de que no haya un conflicto entre los bits de configuración que puede configurar en un menú IDE y los pragmas que ha establecido en la parte superior del código, ya que no tengo claro cuál de los dos sería el predeterminado.

De leer la hoja de datos disponible aquí: ww1.microchip.com/downloads/en/DeviceDoc/41303G.pdf

La página 3 dice que "las frecuencias seleccionables por software varían de 31kHz a 16MHz" La página 11 habla sobre estas dos características - > 1) "Un bloque de oscilador interno que contiene un oscilador HFINTOSC de 16MHz y un oscilador LFINTOSC de 31kHZ que en conjunto proporcionan 8 frecuencias de reloj seleccionables por el usuario, de 31KHz a 16Mhz. 2) "Un multiplicador de frecuencia de Phase Lock Loop (PLL) disponible para los modos de cristal de alta velocidad y oscialltor interno, que permite velocidades de reloj de hasta 64 MHz. Utilizado con el oscialltor interno, el PLL ofrece a los usuarios una selección completa de velocidades de reloj de 31KHz a 64Mhz: todo sin utilizar un circuito externo de cristal o reloj "

Entonces si miras la página 27, detalla los diferentes modos. particularmente HS High-Speed Crystal / Resonator y HSPLL High-Speed Crystal Resonator con PLL habilitado.

Los modos de reloj primarios se seleccionan mediante FOSC < 3: 0 > bits del registro de configuración CONFIG1H.

Creo que esto debería ayudarte; ¡buena suerte!

p.s. (La Figura 27 en la página 39 contiene un buen diagrama de temporización que muestra una transición de temporización de cambio de reloj de baja velocidad a alta velocidad)

    
respondido por el AugustCrawl

Lea otras preguntas en las etiquetas