www.mikrocontroller.net

Forum: Compiler & IDEs vom C code zur *.hex file


Autor: S. S. (-xc-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich weiß es ist eine ziemliche anfängerfrage :P

ich habe mir dieses programm aus einem anderen alten thread geliehen... 
und versuche es in eine hex file zu kompilieren...


Installiert habe ich:
AVR-Studio
WinAVR

ich habe den quelltext ins programmers notepad kopiert und dann auf 
tools make all geklickt
ergebnis:
make.exe: *** No rule to make target `all'. Stop.

nach einiger suche habe ich rausgefunden das ich die file erst als 
test.c speichern muss, und dann das programm MFile aufrufen muss...
> und da hört es dann auf...ich habe keinen blassen schimmer was ich da machen 
muss

---> ich habe zur zeit noch nichts an hardware (programmierschnittstelle 
etc.)
Ist die evtl. für das programm Mfile von nöten? oder läuft das alles pc 
intern bis zum eigentlich aufspielen?

#include <stdint.h>
#include <stdio.h>
#include <avr/io.h>

DDRD = 0xff;
bool bAusgang;
bAusgang = PD7;

/*--------------------------------------------------------------------
Hauptprogramm 
----------------------------------------------------------------------*/
void zeit(void);       //Prototypen-Anmeldung

void main(void)
{
  while(1)
  {
    zeit();                   //Delay von xxx Mikrosekunden
    bAusgang=~bAusgang;       //Bit komplementieren
  }
}
/*-----------------------------------------------------------------------
Zusatzfunktionen
-------------------------------------------------------------------------*/
void zeit(void)
{
  unsigned int x;
  for(x=0;x<=62;x++);    //Int-Wert 62 ergibt xxx Mikrosekunden Delay
}

Autor: Roland Praml (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also du hast vermutlich kein Makefile.

Am Einfachsten ist es wohl, das AVRstudio zu starten und am Anfang ein 
neues GCC-Projekt zu erstellen.
Da schreibst einen Projektnamen rein und lässt dir ein initial File 
(z.B. main.c) erstellen. Da kopierst dann den Code und drückst COMPILE

Dass du noch keine Programmierhardware hast, ist nicht schlimm, du 
kannst den Code anschließend gleich im AVRstudio simulieren.

Gruß
Roland

Autor: Roland Praml (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
... und dann machst vermutlich gleich Bekanntschaft mit der Optimierung.

Wenn in den Compilereinstellungen die Optimierung ein ist (und das ist 
sie und soll auch so sein) wird dir folgende Codezeile mit sicherheit 
"wegoptimiert":
for(x=0;x<=62;x++);    //Int-Wert 62 ergibt xxx Mikrosekunden Delay

Gruß
Roland

Autor: S. S. (-xc-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
bis zum optimierer bin ich leider nicth gekommen :P
der debuger hats mir schon verhagelt ^^ ich habe zwar keinen blassen 
schimmer was genau falsch ist aber gut..

ich habe eben selber was zusammen gedichtet umzusehen ob es funktioniert

wenn ich auf kompilieren drücke produziert mir das programm eine main.o 
und eine makefile datei...
was muss ich damit machen?

zu dem von dir genannten punkt: wie verhindere ich denn diese 
optimierung?

Autor: S. S. (-xc-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
super, dank dir!

hab jetzt alles am laufen :D

und endlich zahlt es sich aus das ich immer versuche kompakt 
zuprogrammieren :D


verdammt jetzt kann ich nicht mehr aufhören zulesen :P

Autor: S. S. (-xc-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich schreib das jetzt einfach mal hier noch rein...für diese minifrage 
lohnt kein thread:


was passiert eigentlich wenn ich nicht mithilfe von
DDRx
ein und ausgänge definiere?

standardmäßig sind doch alle bits auf 1 gesetzt, oder?
heißt das wenn ich nicht definiere sind alle pins ausgänge?


gruß

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

Bewertung
0 lesenswert
nicht lesenswert
S. S. schrieb:

> standardmäßig sind doch alle bits auf 1 gesetzt, oder?

Sagt wer?

> heißt das wenn ich nicht definiere sind alle pins ausgänge?

... und welchen Pegel haben diese Ausgänge? Und ist das vernünftig, dass 
die Pins nach dem Einschalten diese Pegel haben?



Es ist natürlich nicht so.
Standardmässig sind die Pins Eingänge und nehmen als solche jeden Pegel 
an, der von einer Aussenbeschaltung vogegeben wird. Und das ist auch gut 
so. Umgekehrt wärs blöder.

Autor: S. S. (-xc-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>> standardmäßig sind doch alle bits auf 1 gesetzt, oder?

>Sagt wer?

hab gerade nochmal gesucht..es war wohl nur auf die Fuse bits bezogen

   Fuse-Bit nicht programmiert   entspricht dem logischen Wert 1
  Fuse-Bit programmiert   entspricht dem logischen Wert 0
quelle: http://s-huehn.de/elektronik/avr-prog/avr-prog.htm


>... und welchen Pegel haben diese Ausgänge?
den würde ich dann ja schon setzen...ich hätte dann nur die 
ausgangs-zuweisung weggelassen
den signalzustand setzt man doch mit
PORTx
oder?
letztlich aber auch egal da es ja eh nicht geht ^^


>Und das ist auch gut so. Umgekehrt wärs blöder.

hatte ich mir auch so gedacht...hatte nur das mit den "standardmäßigen 
einsen" im kopf...


aber defakto heißt das, daß ich nur die ausgänge definieren muss.
Die eingänge sind dann die nicht zum ausgang definierten pins, richtig?

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.