3 votos

PWM utilizando el compilador XC8 y las librerías de periféricos

Estoy tratando de ejecutar el ejemplo más simple de PWM utilizando un PIC18F4550 , Compilador XC8 y las 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:

enter image description here

Pero me sale un mensaje de error al intentar compilar:

C:\Program Files (x86)\Microchip\xc8\v1.40\include\pic18f4550.h:4426: error:    (1098) conflicting declarations for variable "_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 he descargado e instalado las librerías periféricas desde aquí: http://www.microchip.com/mymicrochip/filehandler.aspx?ddocname=en574973 y también los he enlazado en mi código como muestro en la siguiente imagen:

enter image description here

Entonces, ¿por qué no se compila? Cuando comento la línea

OpenPWM1(0x95);

funciona bien. Agradecería cualquier sugerencia. Gracias

5voto

carok Puntos 627

He resuelto mi pregunta.

El problema es que estaba usando el Versión 1.40 del compilador XC8 . Las bibliotecas periféricas ya no son compatibles y se compilaron con la versión 1.34 de MPLAB XC8 . Cualquier cambio realizado en los archivos de cabecera desde que se crearon esas bibliotecas podría crear un desajuste en las declaraciones.

Lo que hice fue descargar la antigua versión 1.34 de XC8 ( http://ww1.microchip.com/downloads/en/DeviceDoc/xc8-v1.34-full-install-windows-installer.exe ) y lo instaló. Después de eso elegí trabajar con esa versión del compilador y mi código ahora funciona bien

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X