Forum: Compiler & IDEs Anfängerproblem: Code für AVR compilen


von PowerProgrammer (Gast)


Lesenswert?

Hallo!
Ich bin ein Anfänger, der gerne mit einem atmega16 basteln würde. Ich 
vermute, mein Problem ist sehr einfach, ihr könnt mir sicher helfen:

Ich habe einen Code:
1
#include <avr/io.h>
2
unsigned char i;
3
int main (void)
4
{
5
  DDRD = 0xE0; // nur die höchsten 3 Bits auf 1
6
  while(1)
7
  {
8
    if(PIND & (1<<2))
9
    {
10
      if(PORTD & (1<<5))
11
        PORTD &= ~(1<<5);
12
      else
13
        PORTD |= (1<<5);
14
    }
15
  }
16
  return 0;
17
}
(Der Code ist billig, ich weiß; man kann es kürzer machen und den 
Eingangstaster entprellen, aber ich will es erstmal möglichst simpel 
machen)

Compilen tue ich den Code dann folgendermaßen:
avr-gcc -mmcu=atmega16 -Os -o main.hex main.c

Wie kann ich den Code denn richtig compilen? Fehlt ein Parameter?

von Jochen S. (schiffner)


Lesenswert?

Warum machst du das nicht mit 'make' und Makefile, da musst du nur 
einmal deine Daten eintragen und kannst dann immer in deinem 
Verzeichniss mit make compilieren.

http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Exkurs:_Makefiles

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Die HEX-Datei kannst du so nicht machen. Dafür gibt es Tool avr-objcopy 
und das konvertiert die Ausgabe von GCC (Binärdatei) in die HEX-Datei.

Man kann das von Hand aufrufen. Aber wesentlich einfacher 
(reproduzierbarer) ist es, ein Makefile zu benutzen.
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Exkurs:_Makefiles

von PowerProgrammer (Gast)


Lesenswert?

Vielen Dank! Ich wusste nicht, dass der GCC keine Intel-Hexes, sondern 
ELF-Dateien ausgibt, gut zu wissen!
Make-Files nutze ich nicht, da Make bei mir unter Windows nicht 
funktioniert und unter Linux habe ich sie auch nicht zum Laufen 
bekommen, da kam irgendein Fehler, dauernd fehlten irgendwelche Pakete 
und manche konnte man nicht installieren, aus den verschiedensten 
Gründen, das habe ich nicht gecheckt (obwohl es unter Ubuntu Gutsy 
Gibbon jetzt wahrscheinlich klappt). Aus Frust habe ich die Makefiles an 
den Nagel gehängt^^

von Karl H. (kbuchegg)


Lesenswert?

Was auch gut funktioniert.
Unter Windows das AVR-Studio von Atmel installieren.
WinAvr klinkt sich da ein und AVR-Studio fungiert als
IDE.
Damit bist du auch die makefiles los. AVR-Studio kümmert
sich darum.

von Dirk F. (dirk-frerichs)


Lesenswert?

und dann einen USB programmer und das ganze geht direkt aus dem AVR 
studio ohne umwege über ponny oder ähnliche programmer -SW

von Oliver (Gast)


Lesenswert?

>da Make bei mir unter Windows nicht funktioniert

???

make funktioniert IMMER. Es kann höchstens sein, daß du mehrere auf 
deinem Rechner hast, und wegen falsch gesetzter Pfade das falsche 
aufgerufen wird.

Ein einfaches "which make.exe" verschafft Klarheit. Das passende make 
für den avr liegt im winavr-Verzeichnis unter /utils/bin.

Oliver

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.