Hallo zusammen, bei meinem Einstieg in die spannende Welt der Mikrocontroller habe ich folgendes Problem: Ich habe jeweils die aktuellste Version des AVR Studio und WinAVR installier (zu erst WinAVR mit geänderten Installationspfad und anschließend AVR Studio). WinAVR wird anscheind auch erkannt, denn in dem Projekt-Fenster kann ich es auswählen. Nachdem ich nun meinen Quellcode geschrieben haben (Beispieldatei zu meinem Evaboard) 6_usb.c), möchte ich nun den Code compilieren. Dabei bekomme ich nun folgende Fehlermeldung: make: *** No rule to make target `..//G/AVR/Evaboard/demo/AVR-P40-USB/mega16_usb.c', needed by `mega16_usb.o'. Stop. Was mache ich falsch bzw. welche Einstellungen bzgl. des make-Files muss ich noch vornehmen ? Vielen Dank für Eure Hilfe. Gruß Peter
Unter "Project | Configuration Options" Controller-Typ eingestellt?
Habe ich bereits getan. Es hat allerdings noch die Frequenz gefehlt. Nach deren Angabe und anschließenden Build erscheint folgende Meldung: rm -rf mega16_usb.o test.elf dep/* test.hex test.eep test.lss test.map Build succeeded with 0 Warnings... make: *** No rule to make target `..//G/AVR/Evaboard/demo/AVR-P40-USB/mega16_usb.c', needed by `mega16_usb.o'. Stop. Irgendetwas stimmt doch mit dem Make-File nicht oder kann ich diese Meldung ignorieren. Welche Rolle spielt das Make-File in Verbindung mit dem AVR-Studio ? Braucht man es ?
Hallo Peter,
> (zu erst WinAVR mit geänderten Installationspfad .....
also ich habe bei der Installation keine Pfade geändert und es läuft.
Gruß
Udo
Das Makefile sagt dem Compiler, was er zu tun hat. Ohne Makefile geht gar nichts. AVRStudio erzeugt mit den Angaben aus der Project Configuration automatisch ein Makefile. Und die Meldung kann man nicht ignorieren, weil eben kein Output erzeugt wird, weil irgendwas beim Build schiefgelaufen ist. Da Du aber weder Code noch weitere Infos zu Deiner Konfiguration preisgibst, kann man da nur über die Ursache spekulieren...
Nachtrag: welche Version der WINAVR hast du denn installiert? Die Allerneueste hat, glaube ich, noch ß-Status?
da ich immer noch Probleme habe und keine Ahnung habe, wie ich das probleme lösen kann, wende ich mich nochmals an Euch und bitte um Hilfe (sorry, bin halt Einsteiger....) Hier noch ein paar Angaben: - ich benutze AVR studio 4.13 mit SP2 - ich benutze WinAVR-20080402-install.exe Zum Einstieg habe ich mir überlegt, ein Test-Projekt im AVR-Studio anzulegen und eine Beispiel-QuellcodeDatei meines Evaboards (AVR-P40-USB von Olimex) in das Projekt einzubinden (findet ihr im Anhang). Die Beispieldatei habe ich in main.c umbenannt. Anschließend wollte ich alles kompilieren (mit F7). Dabei tritt oben beschriebene Fehlermeldung auf. Welchen Fehler mache ich ? In den Projekt-Einstellungen habe ich den Controller ausgewählt und die Taktfrequenz eingestelt. Ich hoffe, Ihr könnt mir helfen. Vielen Dank im Voraus Peter
Hab mal eine Vermutung: Im makefile steht drin, dass du main.c compilieren willst. Deine "main" datei heißt aber "mega16_usb.c". Also musst du im makefile "mega16_usb.c" angeben, anstatt "main.c". "main.c" wird defaultmässig verwendet.Das machst du, indem du auf Options gehtst, und bei General mega16_usb.elf einträgst.
1 | #define BUT PINB.4
|
2 | #define LED PORTB.0
|
3 | #define BUT1 PINC.7
|
4 | #define BUT2 PINC.6
|
Damit kannst Du im WINAVR gar nix anfangen! Lies Dir bitte das AVR-GCC-Tutorial durch und benutze keinen "Code", der vom Code Generation Wizard der CodeVision-IDE zusammengepuzzelt wurde. Der ist nicht ANSI-konform und schwer wartbar. Entweder Du benutzt generell CodeVision oder Du machst alles in WINAVR-kompatibler (und im Tutorial beschriebener) Syntax, aber keinen Kuddelmuddel aus allem Möglichen. Die Sachen da oben führen im WINAVR nämlich bereits mit Sicherheit zu Fehlermeldungen, die dafür sorgen, dass kein Object erzeugt wird und der Linker sich dementsprechend beschwert. Abgesehen davon steht die "delay.h" beim WINAVR im Unterverzeichnis util und eine "mega16.h" gibt es überhaupt nicht! Da müsste ein Riesenhaufen Fehlermeldungen kommen! Ach ja, noch was: Die WINAVR-20080402 ist wegen einiger Bugs zurückgezogen worden. Lad Dir, bevor Du richtig loslegst, besser die aktuelle 20080411 runter.
Peter wrote: > da ich immer noch Probleme habe und keine Ahnung habe, wie ich das > probleme lösen kann, wende ich mich nochmals an Euch und bitte um Hilfe > (sorry, bin halt Einsteiger....) Wie Johannes schon sagte: Vergiss die Codevision Beispiele. Zumindest in dem Sinn, daß du sie nicht direkt nach WinAVR übernehmen kannst. Mach folgendes: Im AVR Studio legst du ein neues Projekt an. Als Typ wählst du AVR GCC, Projektname eintragen, der Name der Hauptdatei füllt sich automatisch. Druck auf "Next>>" und auf der nächsten Seite deinen Prozessor ('Device') auswählen. Wenn ich das richtig sehe, ist dein Device ein ATMega16 Danach 'Finish' drücken. AVR Studio initialisiert jetzt alles und macht auch gleich noch das Fenster in dem du deinen Source Code schreiben kannst auf. In dieses Fenster schreibst du
1 | #define F_CPU 10000000
|
2 | |
3 | #include <avr/io.h> |
4 | #include <util/delay.h> |
5 | |
6 | int main() |
7 | {
|
8 | unsigned char i; |
9 | |
10 | PORTB = 0x00; |
11 | DDRB = 0x01; |
12 | |
13 | while( 1 ) { |
14 | PORTB ^= 0x01; |
15 | for( i = 0; i < 50; ++ i ) |
16 | _delay_ms( 10 ); |
17 | }
|
18 | }
|
Das sollte für einen ersten Funktionstest ausreichen. Durch Drücken von F7 müsste sich das einwandfrei übersetzen lassen. Wird das Programm in den Prozessor übertragen, müsste eine am Port B, Pin 0 vorhandene LED dadurch im Sekundentakt blinken.
super, vielen Dank. Werde ich gleich mal ausprobieren. Ist dieses Beispiel direkt für das Evaboard AVR-P40-USB von Olimex zugeschnitten ?
Peter wrote: > super, vielen Dank. Werde ich gleich mal ausprobieren. > > Ist dieses Beispiel direkt für das Evaboard AVR-P40-USB von Olimex > zugeschnitten ? Jein. Es ist ein Standard-Blink Programm. Es müsste aber auf deinem Board funktionieren. Ich hab mir die relevanten Informationen aus deinem Codebeispiel herausgezogen: * Dein Prozessor läuft mit 10 Mhz * Am Port B hängt am Pin 0 eine LED mehr benötigt das Programm nicht.
Super, Danke für Eure Hilfe. Ich habe noch eine Frage zum Makefile. Beim WinAVR gibt es ja ein Tool names "mfile", welches man benutzen kann zum Generieren des Makefiles. 1) Wenn ich allerdings mit dem AVR Studio arbeite, benötige ich dieses Tool jedoch nicht mehr, oder ? 2) Alle Einstellungen mache ich im AVR Studio, welches mir dann eine Makefile generiert, oder ? 3) Könnt eich dieses Tool überhaupt parallel zum AVR Studio benutzen ? 4) Oder hat dieses Tool irgendwelche Vorteile ? 5) Wozu benötige ich im letzten Beispiel die Codezeilen #define F_CPU 10000000 Dies hat doch auch etwas mit dem Makefile zu tun, oder ?
Peter wrote: > Super, Danke für Eure Hilfe. > > Ich habe noch eine Frage zum Makefile. Beim WinAVR gibt es ja ein Tool > names "mfile", welches man benutzen kann zum Generieren des Makefiles. > > 1) > Wenn ich allerdings mit dem AVR Studio arbeite, benötige ich dieses Tool > jedoch nicht mehr, oder ? Im Prinzip nicht. > 2) > Alle Einstellungen mache ich im AVR Studio, welches mir dann eine > Makefile generiert, oder ? Genau! > 3) > Könnt eich dieses Tool überhaupt parallel zum AVR Studio benutzen ? Ja, kannst Du. Du kannst ein eigenes Makefile erstellen und dem AVRStudio unter "Project | Configuration Options" mitteilen, dass dieses verwendet werden soll, indem Du es bei "use external Makefile" angibst. > 4) > Oder hat dieses Tool irgendwelche Vorteile ? Mit ein bisschen Übung lassen sich viele Einstellungen schneller und übersichtlicher machen, die man sich im AVRStudio mühsam zusammenklicken muss. Im Regelfall kann man aber davon ausgehen, dass man als Anfänger eh nicht alle Konfigurationsmöglichkeiten benötigt und das vom AVRStudio erzeugte Makefile ausreicht. > 5) > Wozu benötige ich im letzten Beispiel die Codezeilen > #define F_CPU 10000000 > Dies hat doch auch etwas mit dem Makefile zu tun, oder ? Für bestimmte Funktionen (z.B. _delay_XX() oder Baudratenberechnung) muss der Compiler wissen, mit welcher Taktfrequenz der µC später laufen soll, weil davon die Parameter abhängen. Und genau dafür ist das da. Diese Einstellung kannst Du aber auch im AVRStudio unter "Project | Configuration Options" machen oder eben im Makefile.
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.