¿Cómo configura los bits de configuración para un PIC 16F1829 en MPLAB X?

6

Soy nuevo en la programación de PIC (pero no C, sistemas integrados, etc.) Estoy usando MPLAB X con el PIC16F1829 especificado para el proyecto. Tengo los siguientes incluyen:

#include <htc.h>
#include <xc.h>
#include <pic16f1829.h>

__CONFIG( WDTDIS );  // No matter what I use in this macro, it won't build

Parece que no puedo encontrar y definiciones que funcionan en la macro __CONFIG. La documentación también menciona #pragma config SOMESETTING , pero tampoco puedo encontrar ninguna configuración que funcione. ¿Alguien sabe si:

  • ¿Me estoy perdiendo algún ajuste o incluir en mi proyecto? O,
  • si las configuraciones que funcionarán con este procesador están documentadas en alguna parte?

ACTUALIZACIÓN:

Para cualquier persona que encuentre esto, según la documentación, para este procesador con XC8, la forma correcta de especificar estos bits es con el #pragma config

#pragma config WDTE=OFF
#pragma config FOSC=INTOSC
    
pregunta TDL

2 respuestas

3

El sitio web de Microchip tiene un documento llamado Uso del formato correcto, sintaxis y definiciones para Bits de configuración PICmicro que explican dónde encontrar los ajustes de configuración para su dispositivo en particular.

Por ejemplo, indica para los dispositivos PIC16F1 con un compilador C:

  

Compilador C:

     

Formato: definido en el manual del usuario ubicado en:   C: \ Archivos de programa \ HI ‐ TECH Software \ PICC \\ docs \

     

Definición / Sintaxis: Se encuentra en el archivo de encabezado del producto respectivo. Utilizar   El archivo de encabezado pic16f1xxx.h en:   C: \ Archivos de programa \ HI ‐ TECH Software \ PICC \\ include \

Si buscamos en el archivo de encabezado de tu chip en particular, encontramos:

/
// Configuration mask definitions
//


// Config Register: CONFIG1
#define CONFIG1              0x8007
// Oscillator Selection
// ECH, External Clock, High Power Mode (4-32 MHz): device clock supplied to CLKIN pin
#define FOSC_ECH             0xFFFF
// ECM, External Clock, Medium Power Mode (0.5-4 MHz): device clock supplied to CLKIN pin
#define FOSC_ECM             0xFFFE
// ECL, External Clock, Low Power Mode (0-0.5 MHz): device clock supplied to CLKIN pin
#define FOSC_ECL             0xFFFD
// INTOSC oscillator: I/O function on CLKIN pin
#define FOSC_INTOSC          0xFFFC
// EXTRC oscillator: External RC circuit connected to CLKIN pin
#define FOSC_EXTRC           0xFFFB
// HS Oscillator, High-speed crystal/resonator connected between OSC1 and OSC2 pins
#define FOSC_HS              0xFFFA
// XT Oscillator, Crystal/resonator connected between OSC1 and OSC2 pins
#define FOSC_XT              0xFFF9
// LP Oscillator, Low-power crystal connected between OSC1 and OSC2 pins
#define FOSC_LP              0xFFF8
// Watchdog Timer Enable
// WDT enabled
#define WDTE_ON              0xFFFF
// WDT enabled while running and disabled in Sleep
#define WDTE_NSLEEP          0xFFF7
// WDT controlled by the SWDTEN bit in the WDTCON register
#define WDTE_SWDTEN          0xFFEF
// WDT disabled
#define WDTE_OFF             0xFFE7
// Power-up Timer Enable
// PWRT disabled
#define PWRTE_OFF            0xFFFF
// PWRT enabled
#define PWRTE_ON             0xFFDF
// MCLR Pin Function Select
// MCLR/VPP pin function is MCLR
#define MCLRE_ON             0xFFFF
// MCLR/VPP pin function is digital input
#define MCLRE_OFF            0xFFBF
// Flash Program Memory Code Protection
// Program memory code protection is disabled
#define CP_OFF               0xFFFF
// Program memory code protection is enabled
#define CP_ON                0xFF7F
// Data Memory Code Protection
// Data memory code protection is disabled
#define CPD_OFF              0xFFFF
// Data memory code protection is enabled
#define CPD_ON               0xFEFF
// Brown-out Reset Enable
// Brown-out Reset enabled
#define BOREN_ON             0xFFFF
// Brown-out Reset enabled while running and disabled in Sleep
#define BOREN_NSLEEP         0xFDFF
// Brown-out Reset controlled by the SBOREN bit in the BORCON register
#define BOREN_SBODEN         0xFBFF
// Brown-out Reset disabled
#define BOREN_OFF            0xF9FF
// Clock Out Enable
// CLKOUT function is disabled. I/O or oscillator function on the CLKOUT pin
#define CLKOUTEN_OFF         0xFFFF
// CLKOUT function is enabled on the CLKOUT pin
#define CLKOUTEN_ON          0xF7FF
// Internal/External Switchover
// Internal/External Switchover mode is enabled
#define IESO_ON              0xFFFF
// Internal/External Switchover mode is disabled
#define IESO_OFF             0xEFFF
// Fail-Safe Clock Monitor Enable
// Fail-Safe Clock Monitor is enabled
#define FCMEN_ON             0xFFFF
// Fail-Safe Clock Monitor is disabled
#define FCMEN_OFF            0xDFFF


// Config Register: CONFIG2
#define CONFIG2              0x8008
// Flash Memory Self-Write Protection
// Write protection off
#define WRT_OFF              0xFFFF
// 000h to 1FFh write protected, 200h to 1FFFh may be modified by EECON control
#define WRT_BOOT             0xFFFE
// 000h to FFFh write protected, 1000h to 1FFFh may be modified by EECON control
#define WRT_HALF             0xFFFD
// 000h to 1FFFh write protected, no addresses may be modified by EECON control
#define WRT_ALL              0xFFFC
// PLL Enable
// 4x PLL enabled
#define PLLEN_ON             0xFFFF
// 4x PLL disabled
#define PLLEN_OFF            0xFEFF
// Stack Overflow/Underflow Reset Enable
// Stack Overflow or Underflow will cause a Reset
#define STVREN_ON            0xFFFF
// Stack Overflow or Underflow will not cause a Reset
#define STVREN_OFF           0xFDFF
// Brown-out Reset Voltage Selection
// Brown-out Reset Voltage (VBOR) set to 1.9V
#define BORV_LO              0xFFFF
// Brown-out Reset Voltage (VBOR) set to 2.7V
#define BORV_HI              0xFBFF
// Low-Voltage Programming Enable
// Low-voltage programming enabled
#define LVP_ON               0xFFFF
// High-voltage on MCLR/VPP must be used for programming
#define LVP_OFF              0xDFFF

Un ejemplo en el documento citado anteriormente es:

__CONFIG(FOSC_INTOSC &WDTE_OFF &  PWRTE_OFF & MCLRE_ON& CP_OFF & BOREN_OFF & CLKOUTEN_ON & IESO_OFF & FCMEN_OFF); 
__CONFIG(WRT_OFF & VCAPEN_OFF & PLLEN_OFF & STVREN_OFF & LVP_OFF);

Comparando esto con el archivo de encabezado anterior, puede ver qué habilitará / inhabilitará cada macro de configuración.

    
respondido por el justing
13

En MPLABX hay otra gran opción, existe una herramienta de generación de código interactiva que produce código para copiar y pegar. Se puede acceder a esta herramienta a través de la barra de menú: Vistas de la ventana / memoria PIC / bits de configuración. desde allí se ve similar a la de abajo.

Dirección | Nombre __ _ | Valor | Campo | Opción | Categoría__ _ _ _ < _ _ | Configuración        _
300001 _ | CONFIG1H _ | 07 _ _ | OSC_ | RCIO6_ | Bits de selección de oscilador | Oscilador RC externo

simplemente seleccione sus opciones en los cuadros desplegables de opciones y vea los cambios en la columna de configuración. Cuando todos estén configurados, haga clic en "Generar código fuente para generar", luego copie y pegue

El método de

justing es mejor para aprender la pieza, este método permite a los usuarios nuevos ponerse en marcha más rápidamente. Haz tu elección.

    
respondido por el jimmytony3

Lea otras preguntas en las etiquetas