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
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.
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.
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.
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".
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.
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
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 :-(
> 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?"
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.
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.