Forum: Mikrocontroller und Digitale Elektronik C18 Compiler XLCD.h


von Gebert M. (gebert)


Lesenswert?

Morgens

Mein Problem --> die Änderungen in der xlcd.h bleiben unwirksam.

Ich habe die xlcd.h angepasst auf PORTD und 4Bit lower nibble. Den 
Header gespeichert und compiliert...

Setze ich händisch zb. den E_PIN = 1, so funktioniert dies. Aber über 
die Funktionen zb. openxlcd(....) wird immer noch der PORTB 
angesprochen.

Weiss jemand in welchem Detail der Hund versteckt ist??
(Bin noch Anfänger mit MPLAB und C18) :-)

MfG MICHI

von Gebert M. (gebert)


Lesenswert?

So etwas umständliches und schlecht dokumentiertes!

Ich schreib das Zeug selber!!

von Sascha F. (sascha_focus) Benutzerseite


Lesenswert?

Daran gedacht??

extern void DelayFor18TCY(void);
extern void DelayPORXLCD(void);
extern void DelayXLCD(void);

Diese mußt du selber definieren.

Gruß Sascha

PS. bei mir funktioniert es

von Gebert M. (gebert)


Lesenswert?

Na logo!

Ich konnte einfach nicht richtig recompilieren und in die LIB einbinden.
Hatte trotz Veränderungen die Leitungen immer auf PortB.

Ich habe die benötigen Funktionen übernommen und arbeite jetzt ohne 
diesen lästigen Header. :-)

Trotzdem Danke

Gruss Misch

von Dida N. (quader)


Lesenswert?

Ich glaube ich hatte da ähnliche Probleme.
Wenn ich mich nicht täusche, musst du jeweils die Librarys noch 
"aktualisieren".

Dies machst du über die zuständige Bat-Datei. Mit folgender sollten 
eigentlich alle neu gebildet werden [...]\mcc18\src\makeall.bat

Ansonsten kannst du auch die C-Funktionen kopieren und dir damit deine 
eigene Source-Datei machen. Du findest alle Funktionen in diesem Ordner:
[...]\mcc18\src\traditional\pmc\XLCD\ (Kenne den Unterschied zwischen 
tradtitional und extended gerade nicht, die XLCD-Funktionen 
unterscheiden sich glaube nicht).

Dann kannst du dir in den Projekten selbst die C- und Header-Datei 
hinzufügen und hast absolute Transparenz ;)

// Mhhh... da kam ich wohl zu spät ;)

von Juan (Gast)


Lesenswert?

Hi,


start, ausführen, cmd.

in der Komanozeile in den Ordner:

c:|MCC18/src>dir

und man sieht die unterschiedlichen bat. dateien.

da tipt man make_device_t P18FXYXY    (oder wie auch immer die funktion 
heisst)

und fertig ist es.

t steht für traditional.
P18FXYXY ist dein uController.
Sonst macht er alles für alle controller und es dauert lange...

Gruß,

J

von Daniel (Gast)


Lesenswert?

hallo zusammen.
ich habe ebenfalls probleme mit der lcd-ansteuerung.
bis jetzt habe ich den PIC 16F873A eingesetzt und es hat immer geklappt.
neu verwende ich den PIC 18LF4620. ich werde in 3 monaten ein projekt 
mit diesem realisieren.
desshalb bin ich im momment daran, ihn ein wenig kennen zu lernen und 
auszutesten. somit auch die ansteuerung eines lcd moduls.

als erstes, bin ich mir schon einmal im unklaren, welchen treiber ich 
verwenden soll. da gibt es den xlcd vom c18-compiler, den xlcd von mplab 
und und und...

welchen empfehlt ihr.
ich habe es bis jetzt mit dem vom c18 erfolglos probiert.

Meine Pinbelegung:

DB7  -  RC7
DB6  -  RC6
DB5  -  RC5
DB4  -  RC4
E    -  RC3
RW   -  gnd
RS   -  RC0

Ich habe es im header xlcd.h auf meine pins geändert..
wie soll ich das am besten tun? die dateien in den aktuellen 
verzeichnissen lassen und da ändern, oder sie in den projektordner 
nehmen?

funktionen C:\Programme\MCC18_StudentEdition\src\pmc_common\XLCD
header     C:\Programme\MCC18_StudentEdition\h

Ich bin völlig irritiert wo mein fehler liegt...

von Gebert M. (gebert)


Lesenswert?

hallo daniel

bei mir ist es zwar schon ein weilchen her...

den xlcd header abändern und neu kompilieren reicht in der regel nicht.
man müsste die entsprechende library des prozessors mit dem geänderten 
header frisch kompilieren. Dies habe ich leider nie hinbekommen.

falls du die pinbelegung nicht auf die vorgabe des headers ändern 
willst, kannst du die funktionen, welche der header verwendet (stehlen), 
anpassen und in dein programm einbinden.

mfg mischa

von Daniel (Gast)


Lesenswert?

hallo gerbert.
merci für die hilfe.
ich bin jetzt ein wenig weiter.
die änderungen im header werden beachtet. ich kann belibige definitionen 
im xlcd.h programmieren und sie in meinen funktionen verwenden. Aber:
wenn ich die initialisierungsfunktion aufrufe (openxlcd.c) blieb er 
"hängen". Mit den .bat dateien, habe ich wohl alles versaut^^ nach 
reinstallation des compilers ist mein programm auf dem pic schön 
gelaufen. jedoch wurde die funktion openxlcd.c nicht ausgeführt, sondern 
irgendwie übersprungen. es werden alle befehle vor und nach des 
funktionsaufrufes ausgeführt. Jedoch wird die funktion compiliert --> 
wenn ich fehler in openxlcd.c schreibe wird dies auch angezeigt.

gruss
Daniel

von Sascha F. (sascha_focus) Benutzerseite


Lesenswert?

Hi Daniel,

mit dem Microchip Application Maestro kannst du dir einen Treiber für 
LCD erstellen. Einzigst die delay's muß du selbst schreiben.

Gruß Sascha

von Daniel (Gast)


Lesenswert?

Das verstehe ich jetzt nicht ganz.
Treiber?
Sind nicht alle C-files oder das C-File + das Header-file der Treiber?

Gruss Daniel

von Sascha F. (sascha_focus) Benutzerseite


Lesenswert?

Daniel wrote:
> Das verstehe ich jetzt nicht ganz.
> Treiber?
> Sind nicht alle C-files oder das C-File + das Header-file der Treiber?
>
> Gruss Daniel


Richtig :)

und diese Files generiert Microchip Application Maestro anhand deiner 
Einstellungen, wie Port usw.

Gruß Sascha

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.