Forum: Mikrocontroller und Digitale Elektronik Problem bei Verwendung der XLCD lib


von Alex X. (behindi)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe nun die bereits vorhandenen Beiträge bezüglich der XLCD lib 
gelesen und bin leider nicht weitergekommen.

Ich möchte die XLCD lib vom xc8 compiler verwenden.
Folgende Beschreibung habe ich mir zur Hilfe genommen.
http://pic-projekte.de/wordpress/?p=908


Die xlcd.h hab ich in meinem Projectordner kopiert und eingebunden.
Sie wurde nicht abgeändert, da das Display vorerst im 4bit Modus an den 
bereits voreingestellten Pins von PORTB angeschlossen wird.

Die C-Dateien aus dem Ordner
...\Microchip\xc8\v1.30\sources\pic18\plib\XLCD

busyxlcd.c
openxlcd.c
putrxlcd.c
...
wurden als Source-Dateien eingebunden

die Delay-Funktionen wurden ebenfalls erstellt.

Das Problem ist dass, beim Compilieren des Projekts die obige (siehe 
Anhang)Fehlermeldung ausgegeben wird.



Ich verwende den cx8 v1.32 Compiler und MPLABX v2.15.
1
#pragma config FOSC = INTIO67, FCMEN = OFF, IESO = OFF
2
#pragma config PWRT = ON, BOREN = OFF, BORV = 18
3
#pragma config WDTEN = OFF, WDTPS = 1
4
#pragma config MCLRE = ON, HFOFST = OFF, LPT1OSC = OFF, PBADEN = OFF
5
#pragma config CCP2MX = PORTBE, 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 16000000
14
#define USE_OR_MASKS
15
16
#include "p18f46k20.h"
17
#include "xc.h"
18
#include "stdio.h"
19
#include "xlcd.h"
20
21
22
void INIT_uC(void);
23
void DelayFor18TCY(void);
24
void DelayPORXLCD(void);
25
void DelayXLCD(void);
26
27
28
void main(void)
29
{   
30
31
    unsigned char str[] = "abc";
32
        
33
        INIT_uC();
34
 
35
        OpenXLCD(FOUR_BIT & LINES_5X7);
36
37
  while(1);
38
}
39
40
41
void INIT_uC(void)
42
{
43
    OSCCONbits.IRCF2 = 1;
44
    OSCCONbits.IRCF1 = 1;           // 16MHz
45
    OSCCONbits.IRCF0 = 1;
46
47
    TRISA = 0xff;
48
49
    LATD = 0x00;
50
    TRISD = 0x00;
51
52
}
53
54
void DelayFor18TCY(void)
55
{
56
    unsigned char x;
57
58
    for(x=0;x<18;x++)
59
    {Nop();}
60
}
61
62
void DelayPORXLCD(void)
63
{
64
  __delay_ms(15);
65
  return;
66
}
67
68
void DelayXLCD(void)
69
{
70
  __delay_ms(5);
71
  return;
72
}

Wäre super, wenn von euch jemand sagen könnte, was ich falsch oder 
vergessen habe.

Vielen Dank im Voraus!

mgf

von holger (Gast)


Lesenswert?

>Die C-Dateien aus dem Ordner
>...\Microchip\xc8\v1.30\sources\pic18\plib\XLCD

Oben möchte er v1.32 und nicht v1.30

von Alex X. (behindi)


Lesenswert?

Danke für die Antwort,

Sorry habs falsch hingeschrieben.
So wärs richtig.

...\Microchip\xc8\v1.32\sources\pic18\plib\XLCD

Ich hab nur den xc8 v1.32 installiert.

Trotzdem danke

sieht jemand einen Fehler in der Vorgehensweise?

von Chris B. (dekatz)


Lesenswert?

simon hoen. schrieb:
> Die xlcd.h hab ich in meinem Projectordner kopiert und eingebunden.
> Sie wurde nicht abgeändert, da das Display vorerst im 4bit Modus an den
> bereits voreingestellten Pins von PORTB angeschlossen wird.
>
> Die C-Dateien aus dem Ordner
> ...\Microchip\xc8\v1.30\sources\pic18\plib\XLCD
>
> busyxlcd.c
> openxlcd.c
> putrxlcd.c
> ...
> wurden als Source-Dateien eingebunden

Da ja "plib" verwendet wird ist die Einbindung dieser Dateien unnötig 
bzw, falsch.
Bei korrekt installierten Compiler braucht man keine Dateien irgendwohin 
kopieren, wie auch die Angabe von #include "p18f46k20.h" unnötig ist da 
das richtige Headerfile über "xc.h" eingebunden wird.

Durch Eingabe von "include <" landet automatisch im richtigen Pfad und 
braucht dann nur noch die entsprechenden Headerdateien auswählen (bzw. 
in den darunterliegende Verzeichnisse wie "plib" ).

Also die eingebunden .c entfernen.
Dein:
#include "p18f46k20.h"
#include "xc.h"
#include "stdio.h"
#include "xlcd.h"
ersetzt du durch:

#include <xc.h>
#include <stdio.h>
#include <plib/xlcd.h>

und das ganze wird fehlerfrei Compiliert (MPLABX 2.10 XC8 1.31).
Ob es dann auf deine Hardware fehelerfrei läuft kann ich natürlich nicht 
sagen. Jedenfalls werden laut .LST/.MAP/....etc Files die entsprechenden 
PLIB Routinen korrekt eingebunden.

von Alex X. (behindi)


Lesenswert?

Hallo Chris,

Vielen Dank für deine Hilfe:), jetzt fuzts.
Hab jedoch noch ein paar Fragen

ich möchte nun den PORT abändern, an dem das Display angeschlossen 
werden soll. Hab dafür die xlcd.h datei (die ich in meinen Order kopiert 
und includiert habe) abgeändert.
Wie kann ich diese compilieren, damit die Änderungen wirksam werden?


Chris B. schrieb:
> Durch Eingabe von "include <" landet automatisch im richtigen Pfad und
> braucht dann nur noch die entsprechenden Headerdateien auswählen (bzw.
> in den darunterliegende Verzeichnisse wie "plib" ).

Wie wähle ich die entsprechende Headerdatei aus?


Danke für jede Hilfe!

mgf

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.