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
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 ?
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...
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.
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
intmain()
7
{
8
unsignedchari;
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.
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.