PWM usando el compilador XC8 y las bibliotecas periféricas

2

Estoy intentando ejecutar el ejemplo más simple de PWM usando un PIC18F4550 , XC8 compiler y el bibliotecas plib/timers.h y plib/pwm.h

Mi código es el siguiente:

#include <xc.h>
#include <plib/timers.h>
#include <plib/pwm.h>

//CONFIGURATION BITS...
#pragma config PLLDIV = 5, CPUDIV = OSC1_PLL2, USBDIV = 2
#pragma config FOSC = HSPLL_HS, FCMEN = OFF, IESO = OFF
#pragma config PWRT = OFF, BOR = OFF, VREGEN = OFF
#pragma config WDT = OFF, WDTPS = 32768
#pragma config MCLRE = ON, LPT1OSC = OFF, PBADEN = OFF
#pragma config STVREN = ON, LVP = OFF, ICPRT = OFF, XINST = OFF

#define _XTAL_FREQ 48000000

void main(){
    TRISCbits.TRISC2 = 0;
    unsigned char prescaler = T2_PS_1_16;
    OpenTimer2(prescaler);
    OpenPWM1(0x95);
    while(1){
        SetDCPWM1(300);
    }
}

Y el diagrama de mi PIC es:

Peromeapareceunmensajedeerroralintentarcompilar:

C:\ProgramFiles(x86)\Microchip\xc8\v1.40\include\pic18f4550.h:4426:error:(1098)conflictingdeclarationsforvariable"_TRISCbits" (C:\Program Files   (x86)\Microchip\xc8\v1.40\include\pic18f4550.h:3829)
(908) exit status = 1
nbproject/Makefile-default.mk:125: recipe for target   'dist/default/production/PWM_code.X.production.hex' failed
make[2]: Leaving directory 'C:/Users/Delfin/Pictures/PIC18F4550   Basics/PWM_code.X'
nbproject/Makefile-default.mk:84: recipe for target '.build-conf' failed
make[1]: Leaving directory 'C:/Users/Delfin/Pictures/PIC18F4550   Basics/PWM_code.X'
make[2]: *** [dist/default/production/PWM_code.X.production.hex] Error 1
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2
nbproject/Makefile-impl.mk:39: recipe for target '.build-impl' failed

BUILD FAILED (exit value 2, total time: 1s)

Ya descargué e instalé las bibliotecas periperiales desde aquí: enlace y también las vinculé en mi código como muestro en la siguiente imagen:

Entonces, ¿por qué no está compilando? Cuando comento la línea:

OpenPWM1(0x95);

funciona bien. Apreciaria cualquier sugerencia. Gracias

    
pregunta Delfin

1 respuesta

4

He resuelto mi pregunta.

El problema es que estaba usando la versión 1.40 del compilador XC8 . Las bibliotecas periperiales ya no son compatibles y se compilaron con la versión 1.34 de MPLAB XC8 . Cualquier cambio realizado en los archivos de encabezado desde que se crearon esas bibliotecas podría crear una discrepancia en la declaración.

Lo que hice fue descargar la versión anterior 1.34 de XC8 ( enlace ) y lo instalé. Después de eso, elegí trabajar con esa versión del compilador y mi código ahora funciona bien

    
respondido por el Delfin

Lea otras preguntas en las etiquetas