www.mikrocontroller.net

Forum: Compiler & IDEs avrlib einbinden mit pn-winavr


Autor: mittwoch (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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__...

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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/mic...

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

Autor: fragen (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Hc Zimmerer (mizch)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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:
#include <avr/io.h>

int main(void)
{
  while(1);
  return 0;
}

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.

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.