Forum: Compiler & IDEs AVR GCC Tutorial nicht ganz klar


von Markus N. (roboscan)


Lesenswert?

Erst mal möchte ich hallo sagen, da ich neu in diesem Forum bin.
Kurz zu mir: Bin 19 Jahre, Azubi und wohne in München.

Ich hab mir schon seid einiger Zeit in den Kopf gesetzt AVRs zu
programmieren und hab gerade damit angefangen.
Durch das AVR-GCC Tutorial hab ich schon einiges gelernt jedoch stehe
ich am Anfang und komme über einen Punkt nicht weg:

Es wird etwas von "Makefiles" geschrieben.
Nur hab ich es leider einfach nicht verstanden wie ich dieses Makefile
anlegen kann und wozu das wirklich gut ist. Nur habe ich gemerkt das
ich ohne dem Makefile meinen Code nicht zum laufen bringe, wenn ich am
Anfang "#include <avr/io.h>" stehen habe.  Deshalb habe ich dann
wie im Tutorial beschrieben einfach "#include <avr/iom8.h>"
geschrieben, wobei mir das AVR Studio wenn ich auf "Project -> Build"
klicke schreibt "Cannot find include file..."

Was mache ich falsch?

Im Moment habe ich noch kein IC angeschlossen da mein Programmierboard
(STK200) vorraussichtlich erst morgen kommt, aber es sollte doch gehen
das der Code zumindest kompiliert wird oder?

Tut mir leid für diese für euch warscheinlich totale "Noob" Frage
aber ich würde an diesem Punkt gerne weiterkommen und im Forum habe ich
dazu leider nichts gefunden.

Gruß Markus.

von Markus N. (roboscan)


Lesenswert?

Ach ja also Code hab ich zum testen das hier verwendet:
1
#include <avr/iom8.h>
2
3
int main(void)
4
{int i, n = 40;
5
DDRB = 0b00001100;
6
PORTB = 0x00;
7
while (1)
8
{
9
PORTB ^= 0b00000100;       // EX-OR
10
for (i=0; i<n; i++){
11
  _delay_ms(25);
12
  }
13
PORTB ^= 0b00001000;       // EX-OR
14
}
15
}

von Markus (Gast)


Lesenswert?

Ich hatte mit Makefiles am Anfang auch meine liebe Not und krieg auch
jetzt immer noch nicht alles zusammen. Ein Tip wenn du unter Windows
arbeitest: nimm das AVR Studio von Atmel. Dann kommst du mit den
Makefiles nicht in Berührung und kannst Dich erstmal auf's
Programmieren konzentrieren

von Andreas Thanheiser (Gast)


Lesenswert?

Servas Markus
Ich nehm an, Du verwendest das neuste AVR-Studio mit gcc-Integration.
Damit brauchst Dich nimmer mit Makefiles auseinandersetzen (machts
nämlich automatisch - net wie mit avr-gcc und Programmers Notepad).
Du musst natürlich dem AVR-Studio sagen, wo die include-Dateien sind.
Das geht unter Project->Configuration Options da unter Include
Directories.
Da musst den Pfad zum WinAVR include-Ordner angeben.
Gruß aus München
Andreas

von Markus (Gast)


Lesenswert?

Richtig. Und wenn WinAVR zuerst installiert wurde und danach das AVR
Studio werden die wichtigen Pfade sogar automatisch erkannt und
eingebunden. So war's zumindest bei mir. Ich arbeite seit ein paar
Tagen damit und bin recht zufrieden

von Markus N. (roboscan)


Lesenswert?

Danke für die schnellen Antworten.
Tut mir leid, ich hatte vergessen zu schreiben das ich mit dem AVR
Studio 4 arbeite.
Also da gibt es bei mir unter "Projects" nicht "Configuration
Options"
Ich habe unter Projects jedoch "Assembler Options" wobei wenn ich
dort den Pfad zu "C:\WinAVR\avr\include" angebe, kommt der fehler
wieder.
Ich habe es mit
"#include <avr/io.h>",
"#include <io.h>",
"#include <avr/iom8.h>" und
"#include <iom8.h>"
im Code versucht, aber immer kommt der Fehler.

Ist es ausserdem richtig, wenn ich ein Projekt eröffne, daß ich dann
also Project Type "Atmel AVR Assembler" (was da als einzigstes
steht),
sowie als Debug Plattform "AVR Simulator" wähle?

Kann ich damit dann auch das STK200 betreiben oder hat das damit garnix
zu tun?

von Andreas Thanheiser (Gast)


Lesenswert?

Servas nochmal.
Du brauchst das neuste AVR-Studio4 (bei mir is des Version 4.12 Build
460 - einfach mal auf www.atmel.com schaun). Da kannst dann auch AVR
GCC als neues Projekt auswählen. Mit dem Programmieren wirst glaub ich
ein anderes Programm brauchen. Das AVR_Studio unterstützt nur das
STK500 und die ISP-Adapter von Atmel(natürlich auch die Nachbauten). Da
aber WinAVR  avrdude benutzt und das AVR-Studio ja nur WinAVR über ein
Plugin einbindet, weiß ich etz net genau, obst des STK200 mit
AVR-Studio zum Laufen bringst(ich benutz STK500). Im Notfall halt
avrdude anschauen und des erzeugte hex-File im Projektordner damit in
den Controller schreiben.

von Markus (Gast)


Lesenswert?

Stelle erstmal sicher das du Version 4.13 (build 460) hast.

Dann schaust du mal im Menu "Project" nach dem "Project Wizard". Da
sagste "New Project" und dann müsstest Du dort "AVR GCC" auswählen
können wenn alles richtig installiert ist. Wie gesagt, zuerst WinAVR,
ich glaub am besten nach C:\WinAVR, und dann das AVR Studio. Dann geht
das automatisch. Ob es in anderen Verzeichnissen geht weiß ich nicht
weil ich das noch nicht probiert hab. Dann muß man es manuell
einrichten

von Markus (Gast)


Lesenswert?

Ähm, Sorry, 4.12 natürlich

von Markus N. (roboscan)


Lesenswert?

Super Sache ;-)

Dank an euch, jetzt geht es soweit.

Ich musste auf der Homepage von Atmel nach Version 4.13 suchen da er
mir das sonst normal auf der Page nicht angezeigt hat.

Jetzt krieg ich nur noch ne Fehlermeldung das "delay_ms" unbekiannt
ist.
Aber ich denke das muss ich jetzt nur noch irgendwo selber deklarieren
oder gibt es dafür schon einen fertigen code?

von Volker (Gast)


Lesenswert?

Hallo Markus,

damit das delay funktioniert einfach delay.h einbinden.


#include <avr/delay.h>

Gruß Volker

von Markus N. (roboscan)


Lesenswert?

Danke hab ich gerade vor 10sec gefunden :-)

von Hegy (Gast)


Lesenswert?

Nochmal zum Makefile: In der Tat, erst wird darauf hingewiesen, wie
wichtig/komfortabel ein Makefile ist, ABER es arbeitet nicht jeder mit
AVR Studio x.y, es gibt auch Leutz wie mich, die machen mit Linux rum
und das noch mit einem Editor und eben Makefile von Hand gebaut. Und
genau dazu fehlt was in dem Script. Genauso fehlt dann dazu die
Kommandozeilengeschichte zu avr-gcc. Das musste ich mir erstaml muehsam
raussuchen durch irgendwelche anderen Makefiles, die zu irgendwelchen
AVR-Projekten gehoeren.

Wieso nicht einen Exkurs zu Makefiles dazupacken? Natuerlich nicht als
Kapitel 1 ooder 2, sondern in den Anhang.

von mthomas (Gast)


Lesenswert?

Der Abschnitt "Exkurs Makefile" wurde anfaenglich von mir verfasst und
von anderen Wiki-Nutzern erweitert/korrigiert. Es gab bis vor wenigen
Wochen keine offizielle Version des AVR-Studio mit gcc-Integration. Die
ersten Beta-Versionen waren auch so "im Fluss", dass ich keinen
Tutorial-Abschnitt dazu erstellen wollte.

Der Abschnitt sollte weder alle moeglichen Optionen des
Compiler-Frontends erlaeutern, noch beschreiben wie man makefiles von
null selbst erstellt, sondern lediglich ein paar grundlegende Hinweise
geben, um aus dem C-Code etwas "brauchbares" zu erzeugen. Die
WinAVR-makefile-Vorlage und mfile nehmen den Grossteil der Arbeit ab.

Es ist "nur" ein Tutorial, auch wenn einige Abschnitte inzwischen
etwas mehr als nur eine Einfuehrungsanleitung sind. Vollstaendige
Information findet man in den Dokumentationen der gnu-Tools (make, gcc
etc.) und im sehr guten avr-libc-Manual. Es ist meiner Meinung wenig
sinnvoll, aus diesen Texten ganze Abschnitt in das Tutorial zu
kopieren.

Jeder kann das Tutorial im Wikki erweitern und verbessern. Ansonsten
werde ich den Abschnitt bei Gelegenheit ueberarbeiten. Es wird dabei
wohl auf einen Hauptabschnitt "Compilieren und Linken" hinauslaufen,
in dem sowohl "AVR Studio/gcc-Plugin" und "Nutzung von Makefiles"
als Unterabschnitte eingeordnet werden.


Martin Thomas

von Fritz G. (fritzg)


Lesenswert?

Ich würde auch sagen, nimm ein Beispiel-makefile, oder noch besser,
benutuze mfile.

Ich hab das letztemal vor Jahren Makefiles selbst geschrieben, auf dem
PC macht man das auch nicht, sondern arbeitet mit autoconf/automake.
Deswegen nehm ich lieber ein Template und passe es immer an, ist ja
nicht viel zu ändern, im Prinzip nur MCU und die SRC Dateien.

von pebisoft (Gast)


Lesenswert?

"es gibt auch Leutz wie mich, die machen mit Linux rum"

das ist der schwachpunkt "die machen mit Linux rum".
ich habe noch keinen linuxuser gekannt, der etwas brauchbares zum
vorzeigen geschafft hat, die haben alle selber probleme mit dem
linuxkauderwelsch und kommen eigentlich nicht auf den kern des
ausführungsprogrammes.

pebisoft

von Michael Kondor (Gast)


Lesenswert?

@pebisoft
Vielleicht kennst du einfach zu wenig Leute.

von Rolf Magnus (Gast)


Lesenswert?

Außerdem funktioniert seine Shift-Taste nicht.

von Hegy (Gast)


Lesenswert?

@pebisoft (& der interessierte Rest)
hast ja nun wirklich einen schweren Stand. Erstmal, wie vielleicht
schon richtig vermutet, kennst du zuwenig Leute, die mit Linux
"rummachen" und dabei auch noch was sinnvolles rauskommt. Erweitere
mal deinen Horizont.

Und dann gibt es noch dieses Ding hier (clique ici:
http://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=13812).

Vielleicht solltest du mal deine Verhaltensweise aendern, denn
irgendwas vom Glaubenskrieg ueber Betriebssysteme will ich hier
ueberhaupt nicht lesen.

von pebisoft (Gast)


Lesenswert?

da hast du recht , es gibt wenig leute die sich auf meiner höhe begeben
können. mit dem unteren gebe ich mich nicht ab.
ich brauche schon etwas besseres.
ich will aber keinen damit erniedrigen, manche schaffen es halt nicht,
aus dem herauszukommen wo sie gerade drinstecken.
ich möchte auch keinen glaubenskrieg erklären. jeder soll das machen
was er finanziell kann. es gibt arme menschen die immer im sumpf
bleiben.

pebisoft

von Elektrikser (Gast)


Lesenswert?

pebisoft, deine Logik verstehe ich nicht.
Versuchst du, dein geistiges Niveau mit Geld zu heben?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Für das Geld sollte er sich erstmal eine Shift-Taste kaufen. :)

von The Daz (Gast)


Lesenswert?

Ich glaube, wir haben es hier mit 2 verschiedenen pebisofts zu tun :

1. ein Troll, der bis zum 1.2.2006 aus dem RoboterNetz-Forum verbannt
wurde (siehe
http://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=13812&postdays=0&postorder=asc&start=0),
mit seiner plumpen Anmache mich aber mitunter zum Schmunzeln bringt

2. einen durchaus hilfsbereiten Zeitgenossen, der auch Anfaenger normal
behandelt

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Möge sich der ,,richtige'' doch besser einen Account verschaffen
und einloggen.

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.