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:
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:
Also, warum wird nicht kompiliert? Wenn ich die Zeile kommentiere:
OpenPWM1(0x95);
funktioniert gut. Ich würde mich über Anregungen freuen. Danke
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
Hermann Eche
schäbig