Hallo,
Ich habe winavr installiert, und möchte von avr-lib
einige Funktionen verwenden.
avr-lib habe ich als zip rutnergeladen, und in c:\avrlib entpackt.
Mit Programmers Notpads von WINAVR habe ich ein Projekt erstellt.
Im main.h habe ich folgende anweisung:
#include <i2C.h>
Im Tools\[WinAVR] Make All bekomme folgende Fehlermeldung:
main.h:45:17: i2C.h: No such file or directory
Wo und wie kann ich avrlib einbinden.
soll in Make oder in Umgebungsvariable irgend eine Eintrag gemacht
werden?, wo genau ???
Dnake
Welche avr-lib, avrlib genau?
Wenn es die avr-libc ist (http://www.nongnu.org/avr-libc/), dann ist die
bereits im WinAVR integriert. Eine zusätzliche "Installation" waäre nur
nötig, wenn man die Quelltexte der Libraryfunktionen betrachten oder
ändern will.
Die Includefiles werden im Verzeichnis avr\include des
WinAVR-Installationsverzeichnisses gefunden, WENN der systemweite Pfad
(PATH) auf das WinAVR-Installationsverzeichnis\bin zeigt. Diese
Einstellung des PATH kann normalerweise bei der Installation des WINAVR
automatisch gemacht werden. Näheres im Abschnitt Layout des Usermanuals
http://winavr.sourceforge.net/WinAVR-user-manual.html
Dort steht auch:
IMPORTANT: On Windows NT/2K/XP you must have Administrator priviledges
for the installer to automatically put these directories in your PATH
environment variable.
Möglichrweise hat das bei deiner Installation den automatischen Eintrag
in PATH verhindert.
> Im main.h habe ich folgende anweisung:>> #include <i2C.h>>> Im Tools\[WinAVR] Make All bekomme folgende Fehlermeldung:> main.h:45:17: i2C.h: No such file or directory
main.h gehört zu keiner Library sondern zu einem Anwendungsprogramm.
Vielleicht hat der Programmierer dieses Anwendungsprogramms auch ein
i2c.h (Wirklich i2C.h also gemischte Gross-/Kleinschreibung?) erstellt
oder von sonstwo verwendet und der (irrigen, falschen) Einfachheit
halber in den großen Includeodner geschmissen und später vergessen diese
Datei mitzuliefern.
Normalerweise hält man Includedateien, die nicht zur Toolchain gehören
in anderen Ordnern, also beispielsweise beim Projekt selber und macht
das #include mit einem Suchpfad ab Projekt:
#include "i2c.h"
Vielleicht hefen dir auch die Bitmasken aus dem avr/twi.h Includefile
der Avr-libc weiter:
http://www.nongnu.org/avr-libc/user-manual/group__util__twi.html
mittwoch schrieb:> avr-lib habe ich als zip rutnergeladen, und in c:\avrlib entpackt
Wenn es (z.B.) um diese hier geht:
http://www.mil.ufl.edu/~chrisarnold/components/microcontrollerBoard/AVR/avrlib/
dann musst du, wie bei allen libs, dem Compiler auch noch die
dazugehörigen Pfade zu den Includeverzeichnissen mitteilen.
Wie da geht, steht alles in der Doku zu dieser lib, oder in der Hilfe
zum Compilerflag -I.
Oliver
Vielen dank für die schnelle Antworten.
Ich habe AVR-LIB von hier gezogen:
http://www.nongnu.org/avr-libc/
und avrlib.zip in c:\avrlib entpackt
ABER, WIE und WO kann ich dem Compiler mitteilen, daß es avrlib gibt.
In der Umgebungsvariblen\Systemvariable PATH steht:
C:\WinAVR\bin;C:\WinAVR\utils\bin;
MUß im Programmer Notpad irgend ein Path definiert werden?
Und was ist mit Make, soll dort irgend was hinzugefügt werden?
danke
> Ich habe AVR-LIB von hier gezogen:> http://www.nongnu.org/avr-libc/
Die hast Du bereits mitinstalliert, als Du WinAVR installiert hast.
Mach' Dir nicht die Mühe, die ein zweites Mal zu installieren - die ist
bereits so eingebunden, dass Dein Compiler sie findet.
Der WinAVR weiss schon, dass es die AVR-LIBC gibt.
WinAVR sucht die Includefiles der Library auch, allerdings nicht in
deinem Verzeichnis sondern in dem Verzeichnis C:\WinAVR\avr\include. Der
Suchpfad <WinAVR-Installationsverzeichnis>\avr\include ist in WinAVR
einkompiliert.
Wenn du dies ohne Fehlermeldungen übersetzen kannst, stimmt die
Installation:
1
#include<avr/io.h>
2
3
intmain(void)
4
{
5
while(1);
6
return0;
7
}
Wenn du eine andere Version der AVR-LIBC installieren möchtest, dann
hast du zwei Wege:
1/ die vorhandene Version überschreiben (nicht empfehlenswert)
2/ anderes Verzeichnis anlegen, Libarydateien erzeugen und Include- und
Librarypfade mit Compileroptionen in der Projektdatei oder Makefile
anpassen.
Das Includefile i2C.h gehört nicht zur offziellen AVR-LIBC. Es kommt
von irgendwo anders her. Genaueres müsste derjenige wissen, der die
main.h geschrieben hat.
fragen schrieb:> Ich habe AVR-LIB von hier gezogen:> http://www.nongnu.org/avr-libc/>> und avrlib.zip in c:\avrlib entpackt
Nett, aber sinnlos.
Wie schon geschrieben wurde, ist die avr-libc (jawoll, das Dings nennt
sich avr-libc) Teil des WinAVR-Pakets, und wenn du dieses richtig
installiert hast (was anscheinend der Fall ist), findet der Compiler
auch alles, was er daraus benötigt.
mittwoch schrieb:> Im main.h habe ich folgende anweisung:>> #include <i2C.h>
Auch das ist nett, dein Problem hat aber mit der avr-libc nichts zu tun.
In der gibt es kein i2C.h. (und auch kein I2C.h, auch kein i2c.h, nur so
als Hinweis, das das durchaus verschiedene Files wären, wenn es sie den
gäbe).
Mit der avr-libc kommt "<util/twi.h>: TWI bit mask definitions", aber ob
das das ist, was du benötigst, musst du (oder derjenige, der das
Programm geschrieben hat) schon selber herausfinden.
Also bleibt die Frage zu:
mittwoch schrieb:> Im main.h habe ich folgende anweisung:>> #include <i2C.h>
Warum hast du da diese Anweisung?
Es gibt tatsächlich auch (mindestens) eine avrlib, zu finden hier:
http://hubbard.engr.scu.edu/embedded/avr/avrlib/
Da drin gibt es auch eine i2c.h (aber keine i2C.h). Vielleicht brauchst
du ja diese. Installtaion geht einfach mit dem Installer.
Oliver