Forum: Compiler & IDEs WinAVR und makefile(mfile)


von roadrunner (Gast)


Lesenswert?

hallo zusammen,

ich weiss, dass dies jetzt nicht gerade glorreich von mir, aber ich
erhalte diese fehlermeldung beim übersetzen meines 1. programms.
vielleicht kann mir einer kurz nen anhaltspunkt geben wo ich im
makefile(mfile) suchen muss. ich hab mich zwar drin umgeschaut und auch
die anpassung an meinen controller(mega32) hinbekommen, doch stelle ich
mich jetzt zu blöde an. ich wäre schon für einen kleinen tip dankbar.

danke für eure eventuelle hilfestellung
gruß roadrunner

hier mal die meldung:

> "make.exe" all

-------- begin --------
avr-gcc (GCC) 3.4.3
Copyright (C) 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is
NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE.

make.exe: *** No rule to make target `1khz.o', needed by `1khz.elf'.
Stop.

> Process Exit Code: 2

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


Lesenswert?

Du hast keine Datei mit dem Namen 1khz.c.  Vielleicht sollte
sie ja 1kHz.c oder so heißen?

von roadrunner (Gast)


Angehängte Dateien:

Lesenswert?

danke.
hattest recht. hatte mich bei der datei verschrieben. blöder fehler,
ich weiss. den habe ich behoben und schon habe ich die nächste meldung.
zusätzlich habe ich das makefile noch angehängt.


diese hier:

> "make.exe" all

-------- begin --------
avr-gcc (GCC) 3.4.3
Copyright (C) 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is
NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE.

g++    -c -o 1KHZ_C.o 1KHZ_C.C
process_begin: CreateProcess((null), g++ -c -o 1KHZ_C.o 1KHZ_C.C, ...)
failed.
make (e=2): Das System kann die angegebene Datei nicht finden.

make.exe: *** [1KHZ_C.o] Error 2

> Process Exit Code: 2

von Fritz G. (fritzg)


Lesenswert?

g++    -c -o 1KHZ_C.o 1KHZ_C.C

Das ist der falsche Compiler.

Willst du wirklich ein C++ Programm schreiben? Wenn es nur C sein soll,
dann muss das Source-File .c und nicht .C heissen.

.C sagt dem "make" dass es ein C++ File ist.

von roadrunner (Gast)


Lesenswert?

sorry, aber wie soll ich dem makefile das richtig anweisen?

ich habe das makefile soweit bearbeiten, dann in meinem projekt-ordner
abgelegt und mit winavr im programmers-notepad (make-all) versucht zu
übersetzen.

ich habe nirgendes einen teil im makelfile gefunden, wo .c groß
geschrieben ist. ????

von roadrunner (Gast)


Lesenswert?

ok, habe gerade den fehler gefunden. hattest recht. man sollte auch die
datei richtig abspeichern :-)

danke

von roadrunner (Gast)


Angehängte Dateien:

Lesenswert?

hallo nochmal.

jetzt mal eine frage:
ich wollte einen port wie in meinem angehängten c-prg direkt
ansprechen. das geht jetzt wohl leider nicht ganz so wie ich es von
meinem 8051 gemwohnt bin.
kann ich einen einzelnen pin des ports d in c ansprechen?oder wie muss
das realisiert werden.was habe ich falsch gemacht?

vg daniel



> "make.exe" all

-------- begin --------
avr-gcc (GCC) 3.4.3
Copyright (C) 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is
NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE.


Compiling: 1KHZ_C.c
avr-gcc -c -mmcu=atmega32 -I. -gdwarf-2 -DF_CPU=8000000UL  -Os
-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall
-Wstrict-prototypes -Wa,-adhlns=1KHZ_C.lst  -std=gnu99 -MD -MP -MF
.dep/1KHZ_C.o.d 1KHZ_C.c -o 1KHZ_C.o
1KHZ_C.c:5: error: parse error before "volatile"
1KHZ_C.c:6: warning: type defaults to `int' in declaration of
`bAusgang'
1KHZ_C.c:6: warning: data definition has no type or storage class
1KHZ_C.c:7: warning: type defaults to `int' in declaration of
`bAusgang'
1KHZ_C.c:7: warning: data definition has no type or storage class
1KHZ_C.c:15: warning: return type of 'main' is not `int'
make.exe: *** [1KHZ_C.o] Error 1

> Process Exit Code: 2

von Fritz G. (fritzg)


Lesenswert?

Sieh dir in der avr-libc Doku den Punkt "Special Function registers"
an, da ist es gut beschrieben.

Kurz:

PORTD|=_BV(7); // Bit 7 setzen

PORTD&=~_BV(7); // Bit 7 löschen

Es geht natürlich auch PORTD=0x80, wenn der Rest auf 0 gesetzt werden
soll.

Ich glaub "bool" gibts nicht, nimm (unsigned) char.

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


Lesenswert?

bool gibt's mit <stdbool.h>, allerdings ist das ein int,
insofern ist uint8_t allemal sinnvoller.

von roadrunner (Gast)


Lesenswert?

danke fürs erste. das hat mir geholfen. jetzt regt sich was. :-)

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.