Verwendung von plibs in xc8

OP #4605816
Lesenswert?

Hallo,

ich plage mich zurzeit mit den plibs in MPLABX herum und brauche von 
daher eure Hilfe... Im Voraus schon mal Danke.

Also ich habe mir vor einigen Tagen auf dem Notebook die neue
MPLAB X IDE v3.30, den xc8 v1.37 und die plibs v2.0 installiert.

Ich habe dann vergeblich versucht ein altes Projekt zu kompilieren. Der 
Compiler hat die #include <usart.h> nicht gefunden. Um das zu fixen hab 
ich den .../include/plib Pfad zu den "Include directories" hinzugefügt.
Nun hat hat der Linker ein Problem und ich weiß nicht mehr weiter.

Mein minimal Code (aus der plib doc):

1
#pragma config FOSC = INTIO67, PLLCFG = OFF, IESO = OFF
2
#pragma config BOREN = OFF, BORV = 250
3
#pragma config WDTEN = OFF, WDTPS = 1
4
#pragma config MCLRE = EXTMCLR  MCLR, HFOFST = OFF, PBADEN = OFF
5
#pragma config CCP2MX = PORTB3, STVREN = OFF, LVP = OFF, XINST = OFF, DEBUG = OFF
6
#pragma config CP0 = OFF, CP1 = OFF, CP2 = OFF, CP3 = OFF
7
#pragma config CPB = OFF, CPD = OFF
8
#pragma config EBTR0 = OFF
9
#pragma config EBTR1 = OFF
10
#pragma config EBTR2 = OFF
11
#pragma config EBTR3 = OFF
12

13
#define _XTAL_FREQ 8000000
14
#define USE_OR_MASKS
15

16
#include <xc.h>
17
#include <usart.h>
18

19
void main(void) {
20
    
21
    unsigned char Txdata[] = "MICROCHIP_USART";
22
    unsigned char config=0, spbrg=0, baudconfig=0, i=0;
23
        
24
    OSCCONbits.IRCF2 = 1;
25
    OSCCONbits.IRCF1 = 1;   // 8MHz
26
    OSCCONbits.IRCF0 = 0;
27

28
    ANSELC = 0x00;          // enable digital input buffers
29
    TRISCbits.TRISC6 = 0;   // Tx
30
    TRISCbits.TRISC7 = 1;   // Rx
31
        
32
    
33
    Close1USART();   
34
    config = USART_TX_INT_OFF | USART_RX_INT_OFF | USART_ASYNCH_MODE | USART_EIGHT_BIT | USART_CONT_RX | USART_BRGH_LOW;
35
    spbrg = 51;     //At 8Mhz of oscillator frequency & baud rate of 2400.
36
    Open1USART(config, spbrg);
37
    baudconfig = BAUD_8_BIT_RATE | BAUD_AUTO_OFF;
38
    baud1USART(baudconfig);
39

40
    //------USART Transmission ----
41
    while(Busy1USART());
42
    puts1USART((char *)Txdata);
43

44

45
    while(1);
46
}

Die Fehlermeldung:
1
:: warning: (1273) Omniscient Code Generation not available in Free mode
2
:0: error: (500) undefined symbols:
3
  _baud1USART(dist/default/production/USARTconfig.X.production.obj) _Open1USART(dist/default/production/USARTconfig.X.production.obj) _puts1USART(dist/default/production/USARTconfig.X.production.obj) 
4
(908) exit status = 1
5
nbproject/Makefile-default.mk:125: recipe for target 'dist/default/production/USARTconfig.X.production.hex' failed
6
make[2]: Leaving directory '/home/alexander/projects/MPLABXprojects/USARTconfig.X'
7
nbproject/Makefile-default.mk:84: recipe for target '.build-conf' failed
8
make[1]: Leaving directory '/home/alexander/projects/MPLABXprojects/USARTconfig.X'
9
nbproject/Makefile-impl.mk:39: recipe for target '.build-impl' failed
10
make[2]: *** [dist/default/production/USARTconfig.X.production.hex] Error 1
11
make[1]: *** [.build-conf] Error 2
12
make: *** [.build-impl] Error 2
13

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

Ich verwende Gentoo Linux, sollte aber nicht von Belang sei, da ich es 
auch unter win10 getestet habe.

Ich wäre euch sehr dankbar, wenn Ihr mir weiterhelfen könntet.
OP #4607244
Lesenswert?

Vielen Dank wit für deine schnelle Antwort :)

Habs getestet, aber der Linker ist immer noch nicht zufrieden.
Code:
1
#pragma config FOSC = INTIO67, PLLCFG = OFF, IESO = OFF
2
#pragma config BOREN = OFF, BORV = 250
3
#pragma config WDTEN = OFF, WDTPS = 1
4
#pragma config MCLRE = EXTMCLR  MCLR, HFOFST = OFF, PBADEN = OFF
5
#pragma config CCP2MX = PORTB3, STVREN = OFF, LVP = OFF, XINST = OFF, DEBUG = OFF
6
#pragma config CP0 = OFF, CP1 = OFF, CP2 = OFF, CP3 = OFF
7
#pragma config CPB = OFF, CPD = OFF
8
#pragma config EBTR0 = OFF
9
#pragma config EBTR1 = OFF
10
#pragma config EBTR2 = OFF
11
#pragma config EBTR3 = OFF
12

13
#define _XTAL_FREQ 8000000
14
#define USE_OR_MASKS
15
#define EAUSART_V11         // pic18f46k22
16

17
#include <xc.h>
18
#include <plib.h>
19

20
void INIT_uC(void);
21

22
void main(void) {
23
    
24
    unsigned char Txdata[] = "MICROCHIP_USART";
25
    unsigned char config=0, baudconfig=0, i=0;
26
    unsigned int spbrg=0;
27
        
28
    OSCCONbits.IRCF2 = 1;
29
    OSCCONbits.IRCF1 = 1;   // 8MHz
30
    OSCCONbits.IRCF0 = 0;
31

32
    ANSELC = 0x00;          // enable digital input buffers
33
    TRISCbits.TRISC6 = 0;   // Tx
34
    TRISCbits.TRISC7 = 1;   // Rx
35
        
36
    Close1USART();   
37
    config = USART_TX_INT_OFF | USART_RX_INT_OFF | USART_ASYNCH_MODE | USART_EIGHT_BIT | USART_CONT_RX | USART_BRGH_LOW;
38
    spbrg = 51;     //At 8Mhz of oscillator frequency & baud rate of 2400.
39
    Open1USART(config, spbrg);
40
    baudconfig = BAUD_8_BIT_RATE | BAUD_AUTO_OFF;
41
    baud1USART(baudconfig);
42

43
    //------USART Transmission ----
44
    while(Busy1USART());
45
    puts1USART((char *)Txdata);
46

47
    while(1);
48
}

Fehlerlmeldung:
1
:: warning: (1273) Omniscient Code Generation not available in Free mode
2
:0: error: (500) undefined symbols:
3
  _baud1USART(dist/default/production/USARTconfig.X.production.obj) _Open1USART(dist/default/production/USARTconfig.X.production.obj) _puts1USART(dist/default/production/USARTconfig.X.production.obj) 
4
(908) exit status = 1
5
nbproject/Makefile-default.mk:125: recipe for target 'dist/default/production/USARTconfig.X.production.hex' failed
6
make[2]: Leaving directory '/home/alexander/projects/MPLABXprojects/USARTconfig.X'
7
nbproject/Makefile-default.mk:84: recipe for target '.build-conf' failed
8
make[1]: Leaving directory '/home/alexander/projects/MPLABXprojects/USARTconfig.X'
9
nbproject/Makefile-impl.mk:39: recipe for target '.build-impl' failed
10
make[2]: *** [dist/default/production/USARTconfig.X.production.hex] Error 1
11
make[1]: *** [.build-conf] Error 2
12
make: *** [.build-impl] Error 2
13

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

Hat jemand ein Beispielprojekt, wo eine der plibs verwendet wird (xc8)?
Wäre sehr hilfreich.

Vielen Dank für jegliche Hilfe!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren