Forum: Mikrocontroller und Digitale Elektronik was genau ist eine library


von Heidi (Gast)


Lesenswert?

Guten abend,
ich programmiere einen PIC mit MPLAB X. Dazu möchte ich gerne für mein 
display funktionen schreiben, sodass ich dieses einfach benutzen kann. 
aber nun zu meiner frage. Was versteht man genau unter einer library? 
ich hätte jetzt von 
https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/LCD-Ansteuerung 
die .h und .c file für pics umgeschrieben und hätte gesagt, dass das 
eine library ist. allerdings sehe ich project-window mehrere ordner 
(header files, source files) aber auch Libraries.
also meine frage ist nun, was ist genau eine library und wie kann ich 
die erzeugen?

Heidi

von Noch einer (Gast)


Lesenswert?

Das Thema kannst du am Anfang erst mal komplett ignorieren.

Einfach .h und .c Dateien schreiben/kopieren/umschreiben. Wenn deine 
Projekte später mal so kompliziert sind, dass man Libraries braucht, 
kannst du dich immer noch drum kümmern.

P.S. Bei der MPLAB X finden sich auch ein paar .h und .c Dateien für 
LCDs. Am besten du kopierst diese in dein Projekt und passt sie an die 
von dir benutzten Pins an.

von Stefan F. (Gast)


Lesenswert?

Ich glaube, Libraries sind wiederverwendbare Codes, die compilierter 
Form bereitgestellt werden und (im Falle von C) mit Hilfe von Header 
Dateien vom Linker in das Programm eingebunden werden. Bei Java 
entfallen die Header Dateien.

Ich habe aber auch schon einige Projekte gesehen, wo der Begriff 
allgemeiner für Quellcode-Sammlungen verwendet wurde, die dazu gedacht 
sind, in Projekte eingebunden zu werden.

von Heidi (Gast)


Lesenswert?

ja, es gibt eine xlcd.h, die ist aber nur zu gebrauchen wenn man einen 
pic mit min. 64pins hat (wenn ich das richtig verstanden habe) und den 
habe ich nicht. So konnte ich einfach noch ein bisschen selber 
programmieren und nicht alles einfach nur einfügen. und es funktioniert 
ja schon.
Dann werde ich es auch dabei belassen. gibt es denn trotzdem irgendwo 
etwas zu lesen, was eine library ist und wie diese aufgebaut, bzw. 
erstellt werden kann? Einfach nur interesse halber.

von Marc (Gast)


Lesenswert?

Stefan Us schrieb:
> Ich glaube, Libraries sind wiederverwendbare Codes, die
> compilierter
> Form bereitgestellt werden und (im Falle von C) mit Hilfe von Header
> Dateien vom Linker in das Programm eingebunden werden. Bei Java
> entfallen die Header Dateien.

Der Linker interessiert sich nicht für Header. Die sieht nur der 
Compiler. Der sieht dafür die Library an sich nicht.

Ansonsten hast du im Prinzip recht. Eine griffigere Definition wäre wohl 
"Objektcode, der linkfähig ist".

von Heidi (Gast)


Lesenswert?

ok,
danke euch

von Noch einer (Gast)


Lesenswert?

Soweit ich mich erinnere, ist die LCD-Library für alle Pics, aber für 
eine spezielle Portbelegung kompiliert.

Du kannst aber die xlcd.h und sources/pic18/plib/XLCD/*c in dein Projekt 
kopieren und dann die xlcd.h an deinen Pic anpassen.

(Weiß nicht mehr, ob man die Funkionen in den *.c umbenennen musste.)

>  gibt es denn trotzdem irgendwo etwas zu lesen, was eine library ist

Dummerweise wird bei Mikrocontrollern der Begriff Library für 
unterschiedliche Sachen benutzt.

Es gibt zwar kompilierte Libraries, wie bei PCs, aber wie du im obigen 
Beispiel siehst, klappt das bei Mikrocontrollern nicht. Den LCD-Port 
z.B. kannst du nach dem kompilieren nicht mehr ändern.

Man gewöhnt sich einfach dran, dass jeder mit "Library" was anderes 
meint.

von Teo D. (teoderix)


Lesenswert?

Noch einer schrieb:
> Soweit ich mich erinnere, ist die LCD-Library für alle Pics, aber für
> eine spezielle Portbelegung kompiliert.

Das sind nur sogenannte "Exempels", uncompilierte C-Sorces.

http://www.microchip.com/CodeExamplesByFunc.aspx
http://ww1.microchip.com/downloads/en/DeviceDoc/External_LCD.zip

von Ottmar K. (wil1)


Angehängte Dateien:

Lesenswert?

Hallo Heidi (Gast)

Für mich ist ein Library eine Ansammlung wiederverwendbarer 
Unterprogramme, welche man wie im angesprochenen Fall z.B. zum Ansteuern 
eines LCDs verwenden kann. Für die bisherigen Anwendungen hat die als 
Beispiel beigefügte HD44780.INC bisher stets ausgereicht die Ausgaben im 
LCD zeilen- und spaltengerecht formatiert auszugeben.
Anmerkung: Ich behaupte keinesfalls dass die beigefügte Datei fehlerfrei 
ist oder nicht noch verbessert werden könnte... :-)

mfG Ottmar

von vloki (Gast)


Lesenswert?

Teo Derix schrieb:
> Das sind nur sogenannte "Exempels", uncompilierte C-Sorces.

Schön wär's. Idiotischerweise sind die Funktionen vor-kompiliert in 
vielen Prozessorbibliotheken (*.lib) enthalten :-(

von Noch einer (Gast)


Lesenswert?

> Idiotischerweise sind die Funktionen vor-kompiliert

Ja, wirklich idiotisch. Für Userspace Programme unter einem 
Betriebssystem sind vor-kompilierte Libraries eine tolle Sache. 
Anscheinend haben die nur gelesen "Libraries sind wiederverwendbare 
Codes, die compilierter Form bereitgestellt werden". Nicht weiter 
nachgedacht, ob so etwas auf Mikrocontrollern überhaupt sinnvoll ist.

Vielleicht sollten die Entwickler dieser IDEs erst mal fragen: "Was 
genau ist eine Library?"

von Peter R. (Gast)


Lesenswert?

Aber Hallo!

library ist zuerst einmal eine Bibliothek! Also ein Haus mit vielen 
Büchern drin. Oder Vieles andre, was ähnlich ist.

Wenn innerhalb einer Programmiersprache dieser Begriff benutzt wird, 
hängt das ganz von der Willkür des Erdichters der Programmiersprache 
oder des Programms ab.

In EAGLE ist die Ansammlung vorgefertigter Zeichnungselemente eine lib.
In Programmiersprachen ist meist die Ansammlung von Programmschnipseln 
als lib bezeichnet.
In Schreibprogrammen kann lib. eine Ansammlung von Textbausteinen sein.

Für eine sinnvolle Antwort braucht man doch genau den Kontext, in dem 
diese lib erzeugt bzw benutzt wird. Also, welche IDE, welche 
Programmiersprache,  welches Programm. Erst dann kann man mit einem 
Antwortversuch losnebeln.

von Toxic (Gast)


Angehängte Dateien:

Lesenswert?

Noch einer schrieb:
>> Idiotischerweise sind die Funktionen vor-kompiliert
>
> Ja, wirklich idiotisch.

Das ist ueberhaupt nicht idiotisch.
Man hat dadurch einen funktionsfaehigen Code,den man sofort einbinden 
kann.Natuerlich muss man dazu kurz einen Blick auf die Dokumentation der 
Lib werfen,damit man weiss an welche Pins das Display fuer diesen 
compilierten Code angeschlossen werden muss.
Wem die Pinbelegung nicht passt,der kann dann auch ganz einfach den 
mitgelieferten Sourcecode benutzen ,die Pins neu deklarieren und danach 
den Code ganz einfach als Unterprogramm in das eigene Programm 
einbetten.
Oder man geht noch einen Schritt weiter und kompiliert den veraenderten 
Sourcecode fuer eine neue eigene Library.

C18-Library Dokumentation
http://www.google.ie/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CCEQFjAA&url=http%3A%2F%2Fww1.microchip.com%2Fdownloads%2Fen%2FDeviceDoc%2FMPLAB_C18_Libraries_51297f.pdf&ei=sY1gVaupE8HxUNG5gbAL&usg=AFQjCNGwh6e-oqBjRp2KMfZK-qXD3FNnCA&bvm=bv.93990622,d.d24&cad=rja

Sourcecode fuer LCDdisplay-Pic : siehe Anhang

von vloki (Gast)


Lesenswert?

Toxic schrieb:
> Wem die Pinbelegung nicht passt,der kann dann auch ganz einfach

Mir hat die Pinbelegung noch nie gepasst ;-)

Wenn man die Menge von Threads im MCHP Forum sieht scheint es such nicht 
sooo einfach zu sein.

Die allermeisten Anfänger lesen nun mail keine Doku oder  denken es ist 
mit den Anpassen des Headers getan.

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.