jueves, 20 de junio de 2013

Uso de pragma config en SDCC 3.3 Fedora 18 x86_64

Bien en F18 las actualizaciones me han dejado fuera a SDCC, ya que la version 3.2 que tiene, no me permite programar los bits de configuración.

#include 
#define FOSC 48000000
#include "simple_delay.h"
#include "fLCD3bSDCC.h"
#include "cabecera.h"

/**
 * 20/jun/2013
 * Actualizacion a SDCC 3.3 donde se definen los bits de configuracion
 * mediante la directiva pragma, debido a que la version existente en
 * F18 no permite compilar PIC16 con pragma ni con __code char __at ...
 */
#pragma config PLLDIV = 5, CPUDIV = OSC1_PLL2, USBDIV = 2
#pragma config FOSC = HSPLL_HS, FCMEN = ON, IESO = ON
#pragma config PWRT = ON, BOR = ON, BORV = 0, VREGEN = OFF
#pragma config WDT = OFF, MCLRE = ON, LPT1OSC = ON
#pragma config PBADEN = OFF, CCP2MX = ON
#pragma config STVREN = ON, LVP = OFF
#pragma config XINST = OFF, DEBUG = OFF

/*
__code char __at __CONFIG1L CONFIG1L = _PLLDIV_DIVIDE_BY_5__20MHZ_INPUT__1L & _CPUDIV__OSC1_OSC2_SRC___1__96MHZ_PLL_SRC___2__1L & _USBPLL_CLOCK_SRC_FROM_96MHZ_PLL_2_1L;
__code char __at __CONFIG1H CONFIG1H = _OSC_HS__HS_PLL__USB_HS_1H & _FCMEN_ON_1H & _IESO_ON_1H;
__code char __at __CONFIG2L CONFIG2L = _PUT_ON_2L & _BODEN_ON_2L & _BODENV_4_2V_2L & _VREGEN_ON_2L;
__code char __at __CONFIG2H CONFIG2H = _WDT_DISABLED_CONTROLLED_2H & _WDTPS_1_32768_2H;
__code char __at __CONFIG3H CONFIG3H = _CCP2MUX_RC1_3H & _PBADEN_PORTB_4_0__CONFIGURED_AS_DIGITAL_I_O_ON_RESET_3H & _LPT1OSC_ON_3H & _MCLRE_MCLR_ON_RE3_OFF_3H;
__code char __at __CONFIG4L CONFIG4L = _STVR_ON_4L & _LVP_OFF_4L & _ENHCPU_OFF_4L & _BACKBUG_OFF_4L;
__code char __at __CONFIG5L CONFIG5L = _CP_0_OFF_5L & _CP_1_OFF_5L & _CP_2_OFF_5L & _CP_3_OFF_5L;
__code char __at __CONFIG5H CONFIG5H = _CPB_OFF_5H;
__code char __at __CONFIG6L CONFIG6L = _WRT_0_OFF_6L & _WRT_1_OFF_6L & _WRT_2_OFF_6L & _WRT_3_OFF_6L;
__code char __at __CONFIG6H CONFIG6H = _WRTC_OFF_6H & _WRTB_OFF_6H;
__code char __at __CONFIG7L CONFIG7L = _EBTR_0_OFF_7L & _EBTR_1_OFF_7L & _EBTR_2_OFF_7L & _EBTR_3_OFF_7L;
__code char __at __CONFIG7H CONFIG7H = _EBTRB_OFF_7H;
*/
Como se verá en el código se encuentra comentada la forma obsoleta que se utilizaba antes de SDCC 3.2 y la actual.