Hallo Leute
Ich bin gerade daran, eines meiner gerade angekommenen
HD44780-kompatiblen LC-Displays anzusteuern. Dafür wollte ich die
lcd-routines.h und .c hier von
wwww.mikrocontroller.net/articles/AVR-GCC-Tutorial/LCD-Ansteuerung
nehmen.
Wenn ich im Programm schreibe:
...
#include <lcd.routines.h>
...
kommt die Fehlermeldung:
Error 1 lcd-routines.c: No such file or directory
Ich denke mal das heißt, dass Atmel Studio nicht weiß, wo der header
ist.
Meine Fragen:
1. Stimmt es, dass ich im Programm
#include <lcd.routines.h>
schriben muss?
2. Wohin muss ich den header reinkopieren, dass Atmel Studio weiß, wo er
ist?
Valentin S. schrieb:> #include <lcd.routines.h>
Es gibt einen Unterschied zwischen
1
#include<lcd-routines.h>
und
1
#include"lcd-routines.h"
spitze Klammern bedeuten, dass es sich um einen sog. System-header
handelt. Also einen, der zum C System gehört. Dementsprechend sucht der
Compiler diese Header in den Systemverzeichnissen.
Gänsefüsschen bedeutet, dass es ein projektspezifischer Header ist. D.h.
der Compiler sucht den in den Verzeichnissen, die ihm als zum Projekt
zugehörig bekannt sind. Das beinhaltet normalerweise auf jeden Fall das
Verzeichnis, auf dem das benutzende C-File ist.
Danke Für die Info
Ich habe die spitzen Klammern wie du gesagt hast ersetzt und den header
in Das Projektverzeichnis Also Dokumente\Atmel
Studio\6.1\Uhr(=Projektname)reingezogen und kompiliert aber ich bekomme
immer noch die gleiche Fehlermeldung. wenn ich auf den Header
rechtsklick und dann goto implementation klicke öffnet den Header aber.
Also der Header ist dort wo er sein soll und Atmel Studio Findet ihn
auch aber die oben genannte Fehlermeldung zeigt es immer noch an.
> ... Dokumente\Atmel Studio\6.1\Uhr(=Projektname) ...
Ich verweigere ehrlich gesagt auch für mich diesen (in meinen Augen)
Blödsinn mit benutzerbezogenem Dokumentenverzeichnis und mach das so,
wie ich das immer gemacht habe.
Auf C: im Rootverzeichnis (oder auf der D: Platte, je nachdem) gibt es
ein Projektverzeichnis. Dort ein Subverzeichnis für AVR und dort dann
wieder Subverzeichnisse für die einzelnen Projekte. Wobei ich mich an
die einfache Vorgabe halte: keine Leerzeichen in Pfadnamen, keine
Umlaute, Sonderzeichen nur wenns nicht anders geht und wenn das
Sonderzeichen ein _ ist.
Solange man auf ältere Tools angewiesen ist, hat sich das bei mir
bewährt, da nichts drauf zu bauen, dass alle mit diesem
'BWLer-Schnickschnack' klar kommen. Ich brauch keinen Pfad "Powerpoint
Mänager Schulung #2, Dezember 2013". Ich finde meine Sachen auch mit
einfacheren und kürzeren Pfadnamen problemlos wieder :-)
Valentin S. schrieb:> ich hab jetzt noch mal ein bisschen probiert aber es geht einfach nicht.> kann mir niemand helfen?
ich denke die Antwort hat K.H. schon geschrieben.
Probiere mal "vernünftige" Pfad und Dateinamen.
Sorry. ich hab den Post von Karl Heinz nicht gesehen.
Wie meint ihr das mit kürzeren namen? Als ich Atmel Studio installiert
hab, hat es automatisch den Ordner Atmel Studio im Verzeichnis
Bibliotheken\Dokumente angelegt mit dem Unterordner 6.1, in dem meine
Projekte direkt gespeichert werden.
Also:
Bibliotheken\Dokumente wurde von Win7 angelegt
und
Atmel Studio\6.1\ wurde von Atmel Studio angelegt
Aber was hat das damit zu tun, dass es den header nicht Findet?
Valentin S. schrieb:> Sorry. ich hab den Post von Karl Heinz nicht gesehen.> Wie meint ihr das mit kürzeren namen? Als ich Atmel Studio installiert> hab, hat es automatisch den Ordner Atmel Studio im Verzeichnis> Bibliotheken\Dokumente angelegt mit dem Unterordner 6.1, in dem meine> Projekte direkt gespeichert werden.
Ja schön.
Deswegen muss man das aber noch lange nicht mitmachen.
> Also:> Bibliotheken\Dokumente wurde von Win7 angelegt
Das Problem ist, dass es diesen Pfad so in Wirklichkeit gar nicht gibt.
Das ist so eine Art Pseudopfad, der vom Windows 'on the Fly' theoretisch
immer auf den richtigen Pfad umgemappt wird. Theoretisch.
Versuch einfach mal mit dem Explorer über den normalen Weg auf der
Platte C: diesen Pfad zu finden. Du wirst dich wundern, der heisst in
Wirklichkeit ganz anders. Und das beginnt damit, dass es auf C: gar kein
Verzeichnis "Benutzer" gibt. Das heisst nämlich in Wirklichkeit "user"
(oder "users", weiss nicht mehr genau)
> Aber was hat das damit zu tun, dass es den header nicht Findet und was> kann ich tun, dass er ihn benutzen kann?
Es muss nichts damit zu tun haben. Aber es kann.
Und darum riskiere ich das erst gar nicht. Das sind Dinge mit denen will
ich mich nicht rumärgern. Meine AVR-Projekte kommen auf
C:\Projekte\AVR\Frequency
C:\Projekte\AVR\Uhr_01
C:\Projekte\AVR\Test
C:\Projekte\AVR\Forum_01
C:\Projekte\AVR\Lib\LCD
C:\Projekte\AVR\Lib\USART
....
und damit hat sich für mich die Sache.
Ist auch wesentlich einfacher, die zum Archivieren im Explorer zu finden
und zu zippen :-)
Es zwingt dich ja niemand, das Projekt in diesem Ornder anzulegen. Vor
allem solltest Du keine Sonderzeichen wie '+' im Pfad benutzen.
Probier mal statt:
C:\Users\Valentin\Documents\Atmel
Sutdio\6.1\ATmega8+LCD\Atmega8+LCD\ATmega8+LCD.c
einen einfachen Pfad wie:
C:\Projekt\ATmega8_LCD\main.c
Jetzt hat's funktioniert.
Erst falsche Klammern, Dann die falsche Datei und der eigentliche
Fehler:
eine dumme Idee der Microsoft-Programmierer, die helfen soll und ohne
die Hilfe von euch auch mein Projekt blockiert hätte.
Danke
Valentin S. schrieb:> eine dumme Idee der Microsoft-Programmierer, die helfen soll
Das musst du verstehen.
BWL Studenten und Manager finden doch sonst ihre Dateien nicht mehr! Wer
ahnt denn schon das die Datei "Stbtrg_2013.doc" wichtige Informationen
enthält? Nein, die muss natürlich "ungerechtfertigte
Steuerhinterziehungen und Schmiergeldzahlungen 2013, vertraulich.DOC"
heissen. Excel und Word kommen damit klar. Aber viele alte oder ältere
Entwicklertools, die zum Teil noch auf altem DOS Code basieren, und wo
ein Werkzeug den Dateinamen an weitere Werkzeuge weitergibt, eben nicht.
Und genau deshalb lass ich mich auf so einen (in meinen Augen)
Schwachsinn nicht ein. Da ist mir jede Sekunde zu viel ärgern schon eine
Sekunde zuviel. Ich bin Software-Entwickler. Ich kann eine
Dateibezeichnung auch dann lesen, wenn sie keine Umlaute und/oder
Sonderzeichen enthält und nicht über 2 Zeilen geht :-) Ich bevorzuge
lieber kurze, dafür aber prägnante Dateinamen. gerne auch schon mal mit
Abkürzungen für bestimmte Begriffe. Die dafür aber dann durchgängig.
Ich dachte halt das wären direkte, nicht sehbare verzeichnisse auf der
Festplatte und fand es desshalb auch ganz praktisch aber jetzt mach ich
mir einfach selber ein Paar Ordner.
DAnke für den Tipp.