PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Anfängerfrage WinAVR. Wo hin mit der Headerdatei?



Sergetg
05.02.2010, 10:04
Ich weiss dank den Tutorials was die Headerdatei ist, wozu sie Gebraucht wird und dass sie mit dem Befehl #include in ein Programm eingebunden wird.
Was ich aber trotz den Tutorials nicht begriffen habe ist wo ich die Headerdatei abspeichern oder muss dass der Compiler sie dan auch findet.
Ich würde dies gerne mit dem http://www.rn-wissen.de/index.php/RN-Control_Demoprogramm_in_C als Beispiel ausprobieren. Was muss ich mit der C Header-Datei mache (wo rein Kopieren oder abspeichern oder so) damit es schlussendlich auf dem RN-Control1.4 läuft?

oberallgeier
05.02.2010, 10:31
Hi Sergetg.


... trotz den Tutorials nicht begriffen habe ist wo ich die Headerdatei abspeichern ...Hier habe ich (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=484279&sid=5b8aae21e635ed3319192e2d1b20e19b#484279) mal kurz beschrieben, wie ich ( ! ) ein Projekt anfange. Steht ab
... Wenn ich ein neues Projekt eröffne ...Und in diese Projektdirektory kommt/kommen die Headerdatei(en). Beachte bitte beim Includen den Unterschied zwischen

#include <avr/io.h> //
... also eine Datei die "irgendwo" am Computer liegt - AVRStudio weiß schon wo und

#include "PCR_80_com_x51.h"
... das definiert eine Datei die im aktuellen Verzeichnis liegt.

Ich sehe den Vorteil bei diesem Vorgehen, dass JEDE Änderung an den Quellcodes im entsprechenden Projektdirectory zusammengefasst ist. Damit kann man sauber verschiedene Versionen trennen.

Viel Erfolg.

Sergetg
05.02.2010, 13:11
Danke für die schnelle Antwort.

Habe ich richtig verstanden, dass man bei Location den Pfad eingibt wo die Headerdatei ist?

oberallgeier
05.02.2010, 13:31
... verstanden, dass man bei Location den Pfad eingibt wo die Headerdatei ist?Im Prinzip ja - es ist der Pfad, in dem (bei meiner Verfahrensweise) das gesamte Projekt >>als directory<< mit allen Dateien, auch den Headerdateien ist. Möglicherweise hast Du also bei ähnlichen Projekten die gleiche Headerdatei mehrmals auf Deinem Rechner - was solls. 10 oder 20 KB - mehr oder weniger - dafür habe ich ALLES beisammen und kann ändern bzw. anpassen ohne Auswirkungen auf ein anderes Projekt. (Wobei letzteres natürlich nicht immer von Vorteil sein muss.)

Im nachfolgenden Beispiel heißt daher die Projektdirectory: D\D_pro-fils\compu+MC\C2\beispiel. Ok?

................http://oberallgeier.ob.funpic.de/location_AVRStudio.jpg

Sergetg
05.02.2010, 13:51
Also muss ich die Headerdatei ( als C Datei ? ) abspeichern und dann in Location den Pfad dort hin führen.
Probier ich gleich mal aus.

Sergetg
05.02.2010, 14:08
Ich habs jetzt ausprobiert.
Jetzt ist das so rausgekommen, dass jetzt die Headerdatei wenn ich das angelegte Projekt öffne im Editorfenster wo normalerweise das Hauptprogramm ist erscheint. Ich nehme mal an dass da etwas nicht stimmt.

oberallgeier
05.02.2010, 14:09
Also muss ich die Headerdatei ( als C Datei ? ) abspeichern und dann in Location den Pfad dort hin führen.
Probier ich gleich mal aus.Hmmmmm - ich glaube, ich hab das noch nicht verständlich ausgedrückt.

Einmal werden Headerdateien nicht als *.c sondern als *.h abgespeichert.

DANN:
1) überlege ich mir, wie das Projekt heisst.
2) erstelle ich (wie im weiter oben gegebenen Link) eine Projektdatei.
3) mit "location" kann ich die auf meinem verfügbaren Plattenbereich IRGENDWO abspeichern.
4) AVRStudio erstellt dann die oben genannte Subdirectory beispiel
5) AVRStudio erstellt dann im genannten Beispiel einen leeren File, den Initial file beispiel.c - der ist mein main.
6) im Ausschnitt [Initial file] könnte ich diesen "Anfangsfile" statt beispiel.c auch eumel.c nennen oder wie auch immer.
7) Nachdem dieses Directory ..\beispiel erstellt wurde, kann ich die haderdatei dahinein schieben. Wenn die headerdatei dann existiert. Oder ich erstelle sie in diesem Projektdirectory - natürlich auch gleich im AVRStudio.
8 ) Die "beispiel.c" oder "eumel.c" ist dann die main.

Mein Projekt PCR_80 sieht beispielsweise so aus. (http://oberallgeier.ob.funpic.de/beispiel_PCR_80.jpg)

Ok?

BurningWave
05.02.2010, 14:16
Also muss ich die Headerdatei ( als C Datei ? ) abspeichern und dann in Location den Pfad dort hin führen.

Nein, du speicherst alle Dateien, die zu deinem Projekt gehören in dem entsprechenden Projektverzeichniss, das du im AVR Studio angegeben hast ab. In diesem Beispiel wäre das: D:\D_pro-fils\compu+MC\C2\

Nehemn wir mal an, du hast eine Headerdatei lcd.h. Die legst du in das entsprechende Verzeichniss und bindest sie mit #include "lcd.h" ein. Da eine Header-Datei nur Funktionsdefinitionen und solche Sachen enthalten sollte und der eigentliche Quelltext zu den Funktionen in einer gleichnamigen Datei mit der Endung .c steht (in diesem Fall lcd.c), muss man die dazugehörige .c Datei in das entsprechende Projekt zu de Source-Dateien hinzufügen (Bei AVR STudio muss man dazu auf den links bei den Projektdateien liegenden Ordner "Source" mit der rechten Maustaste klicken, den EIntrag Projektdateien hinzufügen (oder so ähnlich) auswählen und die .c Datei hinzufügen (sie sollte auch im Projektverzeichniss liegen.

Wenn du mit AVR Studio ein Projekt erstellst, wird automatisch eine .c Datei, die den Projektnamen trägt erstellt, sie ist von vorneherein in das Projekt eingebunden, in ihr sollte sich die main() Funktion befinden.

Die headerdateien, die du mit #include <...> (z.B. #include <avr/io.h> einbindest befinden sich in einem Unterverzeichniss, das sich in dem Verzeichniss befindet, in dem du den Compiler installiert hast (der Compiler findet diese Dateien automatisch).

mfg

oberallgeier
05.02.2010, 14:24
... Nein, du speicherst alle Dateien, die zu deinem Projekt gehören in dem entsprechenden Projektverzeichniss, das du im AVR Studio angegeben hast ab. In diesem Beispiel wäre das: D:\D_pro-fils\compu+MC\C2\ ...Nein, das Projektverzeichnis heißt wirklich D:\D_pro-fils\compu+MC\C2\beispiel\

Es sei denn, es gibt andere AVRStudioversionen, die es anders als meine machen.

BurningWave
05.02.2010, 14:28
Nein, das Projektverzeichnis heißt wirklich D:\D_pro-fils\compu+MC\C2\beispiel\

Sry ich hab das mit Copy&Paste kopiert und dann wohl das "beispiel\" einfach übersehen.

Sergetg
05.02.2010, 17:31
Nochmals danke für eure Antworten.
Jetzt habe ich nur noch die Frage wie ich aus dem Text der Headerdatei, den ich von hir http://www.rn-wissen.de/index.php/RN-Control_Demoprogramm_in_C kopiere, eine *.h datei machen kann statt eine *.c Datei?

BurningWave
05.02.2010, 17:37
Einfach in eine Datei xyz.h speichern und mittels #include in dein Projekt einbinden (1. Abschnitt, wo c-header steht).

Den 2. Abschnitt des Quelltextes kannst du in deine von AVR Studio erstellte Projektdatei kopieren.

oberallgeier
05.02.2010, 17:41
... Jetzt habe ich nur noch die Frage wie ich aus dem Text der Headerdatei ... eine *.h datei machen ... eine *.c Datei?Die Frage ist jetzt aber nicht wirklich ernst gemeint, oder?

Lesen (http://www.rn-wissen.de/index.php/C-Tutorial) und nochmals lesen. (http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#ADC_.28Analog_Digital_Converter.29)