Forum: Compiler & IDEs avrlib einbinden mit pn-winavr


von mittwoch (Gast)


Lesenswert?

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

von Stefan B. (stefan) Benutzerseite


Lesenswert?

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.

von Stefan B. (stefan) Benutzerseite


Lesenswert?

> 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

von Oliver (Gast)


Lesenswert?

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

von fragen (Gast)


Lesenswert?

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

von Hc Z. (mizch)


Lesenswert?

> 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.

von Stefan B. (stefan) Benutzerseite


Lesenswert?

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
int main(void)
4
{
5
  while(1);
6
  return 0;
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.

von Oliver (Gast)


Lesenswert?

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

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.