Forum: Mikrocontroller und Digitale Elektronik Hilfe bei AVR Studio + WinAVR


von Peter (Gast)


Lesenswert?

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

von Johannes M. (johnny-m)


Lesenswert?

Unter "Project | Configuration Options" Controller-Typ eingestellt?

von Peter (Gast)


Lesenswert?

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 ?

von Udo (Gast)


Lesenswert?

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

von Johannes M. (johnny-m)


Lesenswert?

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...

von Udo (Gast)


Lesenswert?

Nachtrag: welche Version der WINAVR hast du denn installiert?
Die Allerneueste hat, glaube ich, noch ß-Status?

von Peter (Gast)


Angehängte Dateien:

Lesenswert?

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

von Tobi (Gast)


Lesenswert?

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.

von Johannes M. (johnny-m)


Lesenswert?

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.

von Karl H. (kbuchegg)


Lesenswert?

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.

von Peter (Gast)


Lesenswert?

super, vielen Dank. Werde ich gleich mal ausprobieren.

Ist dieses Beispiel direkt für das Evaboard AVR-P40-USB von Olimex 
zugeschnitten ?

von Karl H. (kbuchegg)


Lesenswert?

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.

von Peter (Gast)


Lesenswert?

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 ?

von Johannes M. (johnny-m)


Lesenswert?

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
Noch kein Account? Hier anmelden.