Also, habe ein myAVR-Board, und will es mit WinAVR programmieren, doch leider ist mir nach bislang 10-maligem lesen des Tutorials noch immer nicht klar, wie man damit jetzt was wo und wie macht...hab folgendes gemacht (so in der Art hätte ich mir eine Beschreibung im Tutorial auch gewünscht...) 1. WinAVR installiert 2. Programm "Mfile" gestartet 3. MCU = ATmega8 eingestellt 4. Output format = IHEX 5. Programmer = SP12 6. Port = LPT1 die restlichen Einstellungen habe ich so gelassen. Dann habe ich mir aus dem Netz eine .c-Datei und eine .h-Datei gezogen, diese dienen zur Ansteuerung eines Display, habe die Dateien schon auf meine Hardware "abgeändert" (im "Original" war das Display an Port C, bei mir ist es an Port B).... Also, ich hab die Dateien lcd.c und lcd_tools.h, die in der lcd.c "included" wird... Wie mache ich jetzt weiter? Programmieren selber kann ich auch mit dem myAVR-Workpad, aber ich brauche ja erstmal eine HEX-Datei... Wenn ich auf "Makefile ALL" gehe im WinAVR "Programmers-Notepad", kommt der Fehler: "> "make.exe" all makefile:5: *** missing separator. Stop. > Process Exit Code: 2 " Au man, warum kann man es nicht ganz einfach machen, und muss über 7 verschiedene Programme gehen?!?!?! Also, wäre für jede Hilfe dankbar!
Ich habe zwar keine Ahnung von C, glaube aber mal gelesen zu haben, dass Programmcode in einer Headerdatei nix zu suchen hat. Dort gehören nur Definitionen rein. Aber dazu können dir die "großen Meister" vielleicht mehr sagen. ...
Mmmmmmh...hat sich eh erledigt, Bascom funzt jetzt, also progge ich jetzt da mit... ;-)
Versuchs doch mal mit Assembler (AVR-Studio von www.atmel.com), damit lernt man die Architektur der AVRs bedeutend besser kennen. Das ist übrigens viel einfacher als Viele hier meinen. Da genügt als Informationsquelle das Datenblatt des AVRs und das Befehlsverzeichnis (auch bei ATMEL zu finden). ...
Ja, Assembler wäre auch eine Möglichkeit, aber habe mich jetzt so langsam an das Bascom gewöhnt...*ggg* Gibt's da eigentlich "Listen" mit den Befehlen zur Ansteuerung des ADCs?
Für die Ansteuerung eines ADCs braucht man keine speziellen Befehle. Man schaut sich im Datenblatt die I/O-Register des ADC an und setzt die betreffenden Bits, mit dem OUT-Befehl. Mit dem IN-Befehl kann man dann das Ergebnis der Wandlung aus den ADC-Registern auslesen. Listen für die I/O-Register und die unterstützten ASM-Befehle enthält das Datenblatt des AVRs. Aber darauf achten, dass das vollständige Datenblatt benutzt wird, nicht die "Marketing-Kurzfassung". Viel Erfolg... ...
Also, Bascom läuft, das Display und der ADC auch, aber ich möchte es trotzdem mit C/C++ versuchen, habe jetzt nochmal WinAVR installiert, und möchte nochmal die genaue Reihenfolge geklärt haben... Also, meiner "Meinung" nach müsste es wie folgt funktionieren: 1. Schreiben des Programmes im "Programmers Notepad", als .c-Datei speichern 2. Aufrufen von "Mfile", einstellen aller Parameter, inklusive der richtigen in 1. geschriebenen Datei 3. "Make All" auswählen 4. Hex-Datei auf Controller brennen Ist diese "grobe" Reihenfolge soweit richtig?
Also, habe es jetzt mal wieder mit WinAVR versucht, bin auch ein Stück weiter, er fängt an mit -----begin-------- bla bla bla make.exe: ***No rule to make target 'main.o', needed by 'main.elf'. stop. Process Exit Code: 2 Was ist denn jetzt noch falsch?!?!
Hallo! das hört sich ganz danach an, dass da mit dem Makefile was nicht passt. Hast du im Makefile deine main.c eingetragen? Gruß, Christian
Hallo, Hast du vielleicht vergessen im Makefile TARGET = lcd anstatt dem Standardwert TARGET = main anzugeben?
Mmmmh...ich werde das nochmal genau prüfen...aber ich habe immer noch nicht genau verstanden, welche Datei sich in welchem Verzeichnis befinden muss... Also, ich schreibe das Programm mit dem "Editor", speichere es als "lcd.c" ab, die .h-Datei ist im selben Verzeichnis, dann mit Mfile das Makefile erstellen, auch "Save As" in das gleiche Verzeichnis wo auch schon lcd.c und die .h-Datei ist, dann im "Editor" auf Make Clear, dann auf Make All??!!?
Wenn Du den Code in lcd.c schreibst, und dieses dann als solches abspeicherst, dann must Du in MFile unter Menü "Makefile" -> "Main file name..." eintragen "lcd" anstatt "main". MFile geht davon aus, das sich die Hauptroutine main() in einer Datei befindet die main.c heist. /Michael
Hallo! Ich werde das nochmal versuchen, ich denke ich habe es soweit "fertig", aber der Compiler haut trotzdem jede Menge Fehler raus. Welche Include-Dateien muss ich denn wie vorher "includen"? Also welche Dateien müssen Standardmäßig enthalten sein?
> Ich werde das nochmal versuchen, ich denke ich habe es soweit > "fertig", aber der Compiler haut trotzdem jede Menge Fehler raus. Welche denn? > Welche Include-Dateien muss ich denn wie vorher "includen"? > Also welche Dateien müssen Standardmäßig enthalten sein? "Standardmäßig" müssen gar keine enthalten sein. Du brauchst halt die Header, die die von dir benutzen Funktionen deklarieren.
Also Standardmäßig muss keine drin sein? Keine stdio.h oder so?!?! Habe nur immer was von "avr/io.h" gelesen... Mmmh...ich teste nachher direkt mal, und schreibe dann rein was für Fehler er anzeigt. Man könnte doch auch die Funktionen, die in der .h-Datei stehen, vor die main-funktion setzen, und hätte ja somit das gleiche "Gebilde", richtig?
> Habe nur immer was von "avr/io.h" gelesen... Die brauchst du halt, wenn du irgendwelche I/O-Registernamen oder Funktionen aus diesem Header benutzt. > Man könnte doch auch die Funktionen, die in der .h-Datei stehen, > vor die main-funktion setzen, und hätte ja somit das gleiche > "Gebilde", richtig? Ja, aber Header sind ja gerade dazu da, daß man sich das sparen kann.
Ja, aber um eine "Fehlerquelle" auszuschließen werde ich das mal versuchen...das dass der Sinn ist war mir auch klar... ;-) Habe aber nochmal geschaut, es kommt diese Meldung/Fehler: Compiling: main.c avr-gcc - -mmcu=atmega8 ... main.c8: warning: function declaration isn't a prototype main.c:34: " " " " " main.c:74: " " " " " main.c:97: error: parse error before "Main" main.c: In function 'Main': main.c:99: warning: implicit declaration of function 'lcd_init' main.c:101: warning: " " " 'lcd_writechar' . . . . . make.exe*** [main.o] Error 1 Process Exit Code: 2
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.