mikrocontroller.net

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


Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Unter "Project | Configuration Options" Controller-Typ eingestellt?

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ?

Autor: Udo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Udo (Gast)
Datum:

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

Autor: Peter (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
#define  BUT  PINB.4        
#define  LED  PORTB.0      
#define BUT1   PINC.7
#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.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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
#define F_CPU 10000000

#include <avr/io.h>
#include <util/delay.h>

int main()
{
  unsigned char i;

  PORTB = 0x00;
  DDRB = 0x01;

  while( 1 ) {
    PORTB ^= 0x01;
    for( i = 0; i < 50; ++ i )
      _delay_ms( 10 );
  }
}

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.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
super, vielen Dank. Werde ich gleich mal ausprobieren.

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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ?

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.