PWM mit XC8-Compiler und Peripheriebibliotheken

Ich versuche, das einfachste Beispiel für PWM mit einem PIC18F4550 , XC8-Compiler und den Bibliotheken plib/timers.h und plib/pwm.h auszuführen

Mein Code ist der nächste:

#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);
    }
}

Und das Diagramm meines PIC ist:

Geben Sie hier die Bildbeschreibung ein

Aber ich bekomme eine Fehlermeldung beim Kompilieren:

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)

Ich habe die peripheren Bibliotheken bereits von hier heruntergeladen und installiert: http://www.microchip.com/mymicrochip/filehandler.aspx?ddocname=en574973 und auch in meinem Code verlinkt, wie ich im folgenden Bild zeige:

Geben Sie hier die Bildbeschreibung ein

Also, warum wird nicht kompiliert? Wenn ich die Zeile kommentiere:

OpenPWM1(0x95);

funktioniert gut. Ich würde mich über Anregungen freuen. Danke

Antworten (1)

Ich habe meine Frage gelöst.

Das Problem ist, dass ich die Version 1.40 des XC8-Compilers verwendet habe . Die peripheren Bibliotheken werden nicht mehr unterstützt und wurden mit Version 1.34 von MPLAB XC8 kompiliert . Alle Änderungen, die seit der Erstellung dieser Bibliotheken an Header-Dateien vorgenommen wurden, könnten möglicherweise zu einem Deklarationskonflikt führen.

Ich habe die frühere Version 1.34 von XC8 ( http://ww1.microchip.com/downloads/en/DeviceDoc/xc8-v1.34-full-install-windows-installer.exe ) heruntergeladen und installiert. Danach habe ich mich entschieden, mit dieser Version des Compilers zu arbeiten, und mein Code funktioniert jetzt einwandfrei

+1, aber dies ist eine große Aufgabe von Microchip für Benutzer
Einverstanden, ich habe eine Reihe von Projekten, die 18F4550 verwenden, eine perfekt gute MCU, und mein neues Harmony- und MCC-Zeug NICHT unterstützt, plib macht die Dinge einfach so viel einfacher, als mit direkter Registermanipulation herumprahlen zu müssen. Alles, woran MCP interessiert ist, ist, die Leute zur nächsten neuen Schönheit zu bringen, damit sie weiterhin von ihnen profitieren können.