Hallo
Folgendes zu Hard: und Software:
Schreibe meine Programme mit AVR Studio 4.18 und verwende den C Compiler
WinAVR 20090313.
Besize Das Board RN-CONTROL mit ATmega32 von der Homepage
http://www.shop.robotikhardware.de/shop/catalog/product_info.php?cPath=64&products_id=10
und das LCD Display AC-202A.
Nun zu meiner Frage:
Da ich Anfänger bin habe ich mir den C Code vom GCC Tutorial
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/LCD-Ansteuerung
ins AVR Studio kopiert. Beim Compilieren kommt die Fehlermeldung
../LCD.c:49:26: error: lcd-routines.h: No such file or directory
Der Compiler kann mit den "..." nichts anfangen.
Habe mir schon sämtliche Beiträge durchgelesen, aber irgendwie verstehe
ich die Zusammenhänge nicht.
Bin für alle Beiträge dankbar.
Naja, "..." ist auch nen Punkt zuviel ;-)
Kopier doch der einfachheit halber mal die lcd.h und die lcd.c mit in
das aktuelle Verzeichnis.
Im AVR Studio bindest du dann die lcd.c bei den Source files mit ein.
In deiner C-Datei schreibst du dann einfach include lcd.h
Den Rest erledigt dann das Studio
Ich glaube, die ... hat er nicht im Quelltext stehen?
Das war nur, um Gänsefüßchen mit irgendwas drin zu schreiben,
denke ich. Sonst sähe die Fehlermeldung anders aus.
Genau das ist der springende Punkt. Ich hab mir ein eigenes Verzeichnis
angelegt und dies beim Projekterstellen ausgewählt. Jetzt weiß ich
nicht, wo sich die lch.h bzw. lcd.c befinden?
Wo muss ich dann im AVR Studio die lcd.c einbinden?
Ich bräuchte da eine Anleitung für DUMMIS.
"Explorer" -> Dateisuchen, dann in dein Projektverzeichnis kopieren. In
der Projektverwaltung von AVRStudio, rechte Maustaste -> *.h und *.c
hinzufügen
Unter Source Files befindet sich schon seit der Projeterstellung die
lcd.c.
Was ist mit der lcd.h Datei bzw. wo befindet sich diese?
Hab den Explorer durchsucht, aber nichts brauchbares gefunden.
Befindet sich diese etwa im WinAVR Verzeichnis?
lcd.c und lcd.h gehören zum Code für das LCD, also zum Ansteuern. Dies
werden im quellcode mit "#include" eingebunden, diese Zeilen müßten ganz
oben im Quellcode stehen.
Poste doch mal deinen Code
Verwende den Code aus dem Wiki
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/LCD-Ansteuerung
Habe einfach den Code ins AVR Studio hineinkopiert.
LCD.c befand sich automatisch in den Source Files.
Welche Schritte muss ich noch machen, nachdem ich unter den Header Files
eine Datei erstelle?
also nur mit den lcd.h und lcd.c bkommst du nichts auf´s display. in dem
Wiki sind noch 2 mal die main.c aufgeführt die mit den beiden LCD datein
zusammen arbeitet. Such dir eine aus!!! erstelle erstmal deine main.c.
Du sollstest dir erstmal ein kleineres Projekt zusammen stellen.
Blinkende LED zum Beispiel. Findest du auch im Wiki. Auch einführende
Beispiele im C-Code, was ist eine Main.c usw.
Hi
nur zur Info die LCD.c ist sicher nicht automatisch erstellt worden. Die
hast du beim Erstellen eines neues Projekts als "Initial file:" den
Namen dort eingegeben. Besser wäre es du nennst sie "main" oder oder was
auch immer. Zumindest so, dass du erkennst das sich dort deine main
Funktion befindet.
Gruß MISZOU
Mittlerweile habe ein neues Projekt erstellt, damit es zu keinen
Verwechslungen mit lcd.c kommt.
Der Name des neuen Projektes lautet Erster_Versuch--LCD.c
Beim Compelieren erscheint noch immer der gleiche Fehler.
Von welchem Verzeichnis bekomme ich jetzt die lcd.c bzw. die lcd.h oder
brauche ich diese gar nicht, da der Fehler auf dieses #include
"lcd-routines.h" verweist?
Übrigens, Lauflichtprogramme bzw. Blinklichter funktionieren
einwandfrei.
Hier brauche ich aun nichts einzubinden.
Es muss also an dem #include "lcd-routines.h" liegen.
Diese Datei sollte deine main.c werden. wie du siehst ist dort per
#include die lcd-routines.h eingefügt. Die " " sagen nichts anderes das
die Datei sich im Projekt Verzeichnis befindet. Die < und > sagen den
Compiler das die Datein in seinem Verzeichnis (in deinem Fall WINAVR)
liegen. Also kopiere aus dem Wiki die Datein, und füge Sie in deinem
Projekt dazu, wie oben schon beschrieben. Ansonsten gilt für dich:
erstmal die einführenden Schritte aus dem Wiki lernen, und nicht mitten
drin anfangen, das gibt nur Frust.
//
// Anpassungen im makefile:
// ATMega8 => MCU=atmega8 im makefile einstellen
// lcd-routines.c in SRC = ... Zeile anhängen
//
#include <avr/io.h>
#include <stdlib.h>
#include "lcd-routines.h"
// Beispiel
int variable = 42;
int main(void)
{
lcd_init();
// Ausgabe des Zeichens dessen ASCII-Code gleich dem Variablenwert
ist
// (Im Beispiel entspricht der ASCII-Code 42 dem Zeichen *)
// http://www.code-knacker.de/ascii.htm
lcd_data(variable);
set_cursor(0,2);
// Ausgabe der Variable als Text in dezimaler Schreibweise
{
// ... umwandeln siehe FAQ Artikel bei www.mikrocontroller.net
// WinAVR hat eine itoa()-Funktion, das erfordert obiges #include
<stdlib.h>
char Buffer[20]; // in diesem {} lokal
itoa( variable, Buffer, 10 );
// ... ausgeben
lcd_string( Buffer );
}
while(1)
{
}
return 0;
}
Jetzt bin ich aber langsam doch verwirrt...
In deinem Original-Beitrag ganz oben hast du doch schon einen Link
auf das Tutorial geschrieben:
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/LCD-Ansteuerung
Wenn du darin etwas nach unten blätterst (bis zur Überschrift
Programmierung), dann sind dort Quelltexte abgedruckt.
Gleich der erste davon heisst lcd-rotines.h.
Diesen Quelltext rahmt man mit der Maus ein, drückt auf Strg-C
bzw. Ctrl-C, öffnet einen Editor der freien Wahl (z.B.
gibt es im AVR-Studio wahrscheinlich so etwas wie "Neue Datei"
im Menü, sonst halt Notepad starten oder jeden anderen Editor).
In dem leeren Textfenster drückt man auf Strg-V oder Ctrl-V
und sollte jetzt den Quelltext aus dem Tutorial sehen.
Dann abspeichern als lcd-routines.h, und zwar in dem Verzeichnis,
in dem auch schon dein erster Quelltext LCD.c steht, von dem die
obigen Fehlermeldungen stammen bzgl. "../LCD.c:49:26: error:
lcd-routines.h: No such file or directory".
Analog dann aus dem Tutorial lcd-routines.c kopieren und
auf der Festplatte im selben Verzeichnis als lcd-routines.c
speichern.
Dann wie oben beschrieben zusehen, daß diese Dateien
im AVR-Studio auch zum Projekt gehören, sonst hinzufügen.
Zu dem Projekt sollten deine LCD.c gehören (falls sie noch so
heisst) sowie die beiden lcd-routines.c und lcd-routines.h.
Nachtrag: sehe jetzt erst, daß die letzte Frage von jemand anderem
kommt als die erste.
Da hat Viktor einfach einen Thread gekapert...
Ansonsten stimmt meine Antwort hoffentlich trotzdem.
Viktor, betrachte dich kurz als Christian P. und mache
bitte in Zukunft für neue Fragen einen neuen Thread auf!
Das gleiche Problem wie von Christian P. angesprochen habe ich auch. Hab
auch den ganzen Code von der Mikrocontroller.net Seite ins AVR Studio
kopiert und erhalte auch bei der lcd - routine immer eine Fehlermeldung.
Hab schon die ganzen Foren nach möglichen Ursachen durchsucht, aber ohne
Erfog. Kann vielleicht jemand eine Anleitung hier hineinstellen wie die
einzelnen Schritte zu bewerkstelligen sind, damit das Programm endlich
läuft.
Die lcd.h Datei hab ich auch schon in die Header - Files eingebunden,
jedoch ohne Erfolg. Vielleicht liegt das Problem an dem lcd.h File von
Peter Fleury, da dieses File für win avr 3.3 geschrieben wurde?
Danke
Du erstellst ein neues Projekt.
Nenn es meinetwegen lcd_test
AVR Studio erzeugt das Projekt und auch eine lcd_test.c
Diese lcd_test wird deine Hauptdatei. Dort schreibst du deinen Code.
Jetzt brauchst du noch die eigentlichen lcd Funktionen. Die, die die
Arbeit machen.
So wie das aussieht, hast du dir von P. Fleury die LCD Library geholt.
Im Zip-File findest du eine lcd.c und eine lcd.h
Beide Dateien kopierst du auf das Verzeichnis in dem AVR Studio das
Projekt angelegt hat und wo es auch die lcd_test.c erzeugt hat.
Damit hast du in deinem Projektverzeichnis:
lcd_test.c
lcd.c
lcd.h
Bisher ist nur die lcd_test.c im Projekt enthalten. Die anderen beiden
sind nur auf dem Verzeichnis aber deswegen sind sie noch lange nicht
Teil des Projektes. Also fügst du im AVR-Studio die beiden Dateien
hinzu: Im Source-Tree Baum, rechte Maustaste, add existing Source Files
und jeweils die lcd.c bzw. die lcd.h zum Projekt hinzufügen.
In deinem lcd_test.c kannst du jetzt schreiben