PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bei make all Problem mit Msleep



Leiwig
25.01.2015, 19:36
Hallo,
ich habe ein Problem bei make all:
Wenn ich Msleep () benutze zeigt Programmers Notepad 2 mir folgende Meldung an:


> "make.exe" all
set -e; avr-gcc -MM -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=asuro.lst asuro.c \
| sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > asuro.d; \
[ -s asuro.d ] || rm -f asuro.d
set -e; avr-gcc -MM -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=test.lst test.c \
| sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > test.d; \
[ -s test.d ] || rm -f test.d
-------- begin --------
avr-gcc --version
avr-gcc (WinAVR 20100110) 4.3.3
Copyright (C) 2008 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.

avr-gcc -c -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=test.lst test.c -o test.o
In file included from asuro.h:34,
from test.c:1:
d:/asuro/programme/lib/gcc/../../avr/include/avr/signal.h:36:2: warning: #warning "This header file is obsolete. Use <avr/interrupt.h>."
test.c: In function 'main':
test.c:12: warning: implicit declaration of function 'Msleep'
test.c:15: warning: control reaches end of non-void function
avr-gcc -c -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=asuro.lst asuro.c -o asuro.o
In file included from asuro.h:34,
from asuro.c:29:
d:/asuro/programme/lib/gcc/../../avr/include/avr/signal.h:36:2: warning: #warning "This header file is obsolete. Use <avr/interrupt.h>."
avr-gcc -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=test.o test.o asuro.o --output test.elf -Wl,-Map=test.map,--cref -lm
test.o: In function `main':
D:\ASURO\Aufgaben\1m/test.c:12: undefined reference to `Msleep'
make.exe: *** [test.elf] Error 1

> Process Exit Code: 2
> Time Taken: 00:02

Dann habe ich mir eine neue asuro.h und asuro.c gedownloadet und dann kommt das:


> "make.exe" all
set -e; avr-gcc -MM -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=asuro.lst asuro.c \
| sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > asuro.d; \
[ -s asuro.d ] || rm -f asuro.d
asuro.c:68:21: error: myasuro.h: No such file or directory
set -e; avr-gcc -MM -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=test.lst test.c \
| sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > test.d; \
[ -s test.d ] || rm -f test.d
set -e; avr-gcc -MM -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=asuro.lst asuro.c \
| sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > asuro.d; \
[ -s asuro.d ] || rm -f asuro.d
asuro.c:68:21: error: myasuro.h: No such file or directory
-------- begin --------
avr-gcc --version
avr-gcc (WinAVR 20100110) 4.3.3
Copyright (C) 2008 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.

avr-gcc -c -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=test.lst test.c -o test.o
test.c: In function 'main':
test.c:15: warning: control reaches end of non-void function
avr-gcc -c -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=asuro.lst asuro.c -o asuro.o
asuro.c:68:21: error: myasuro.h: No such file or directory
asuro.c: In function 'IsrStandard':
asuro.c:173: error: 'MY_SWITCH_THRESHHOLD' undeclared (first use in this function)
asuro.c:173: error: (Each undeclared identifier is reported only once
asuro.c:173: error: for each function it appears in.)
asuro.c: In function 'Init':
asuro.c:260: error: 'F_CPU' undeclared (first use in this function)
make.exe: *** [asuro.o] Error 1

> Process Exit Code: 2
> Time Taken: 00:01


Mein Programm sieht so aus:
#include "asuro.h"

#define cm 75

int main (void)
{
Init();
MotorDir (FWD,FWD);

//Strecke 1m;
MotorSpeed (125,125);
Msleep ( 100 * cm );

MotorSpeed (0,0);
}

Wenn ich Msleep ( 100 * cm); entferne funktioniert es.

Vielen Dank im Voraus :MistPC](*,)

markusj
25.01.2015, 21:55
Dann habe ich mir eine neue asuro.h und asuro.c gedownloadet
Das alleine reicht nicht, du brauchst auch alles andere was dazu gehört, unter anderem das entsprechende Makefile. Näheres dazu verrät dir die Dokumentation der Bibliothek die du herunter geladen hast. Ich gehe davon aus, dass das die Roboternetz-Bibliothek ist.

mfG
Markus

Leiwig
26.01.2015, 06:01
Hallo,
vielen Dank für den Hinweis!
Welche Dateien brauche ich denn jetzt in dem Verzeichnis zum Compilieren?
Wo ist die Dokumentation zu finden?
Ja, ich verwende die Roboternetz Bibliothek. ;)


Im Voraus vielen Dank für weitere Antworten!

markusj
26.01.2015, 17:31
Wo ist die Dokumentation zu finden?
Kennst du das AsuroWiki (http://asurowiki.de/index.php)? Dort ist auch die Dokumentation (http://www.asurowiki.de/pmwiki/pub/html/index.html) zur RN-Bibliothek untergebracht. Dort wird auch erklärt, wie du die Bibliothek verwenden kannst.

mfG
Markus

Leiwig
26.01.2015, 18:40
Hallo,
ich hab mir die Dokumentation mal durchgelesen!
Für mich Anfänger ist das Chinesisch und Japanisch gemixt.
Das mit der Makefile hab ich noch hinbekommen, also den Libpath anzugeben
aber dann bei neue Projekte verstand ich nur noch Bahnhof.

Ich hab immer noch mein altes Programm namens werner.c:
#include "asuro.h"
#define cm 75
int main(void)

{
Init();
MotorDir (FWD,FWD);

//Strecke 1m;
MotorSpeed (125,125);
Msleep ( 100 * cm );

MotorSpeed (0,0);
}
So wie ich bei "Neue Projekte" gelesen hab soll ich nur die dateien benötigen die ich im anhang hab(ohne asuro.h), dann meckert er aber, dass er asuro.h nicht findet:

> "make.exe" all
set -e; avr-gcc -MM -mmcu=atmega8 -DF_CPU=8000000UL -I. -g -Os -I../../lib/inc -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -ffunction-sections -fdata-sections -Wall -Wstrict-prototypes -Wa,-ahlms=test.lst test.c \
| sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > test.d; \
[ -s test.d ] || rm -f test.d
test.c:9:19: error: asuro.h: No such file or directory
-------- begin --------
avr-gcc --version
avr-gcc (WinAVR 20100110) 4.3.3
Copyright (C) 2008 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 `test.hex', needed by `all'. Stop.

> Process Exit Code: 2
> Time Taken: 00:01


So wenn ich dann asuro.h im selben Verzeichnis habe (wie im Bild) meint er:
> "make.exe" all
set -e; avr-gcc -MM -mmcu=atmega8 -DF_CPU=8000000UL -I. -g -Os -I../../lib/inc -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -ffunction-sections -fdata-sections -Wall -Wstrict-prototypes -Wa,-ahlms=test.lst test.c \
| sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > test.d; \
[ -s test.d ] || rm -f test.d
-------- begin --------
avr-gcc --version
avr-gcc (WinAVR 20100110) 4.3.3
Copyright (C) 2008 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 `test.hex', needed by `all'. Stop.

> Process Exit Code: 2
> Time Taken: 00:01

Im Voraus vielen Dank

29675

markusj
26.01.2015, 21:12
asuro.h zu kopieren ist falsch. Wie in der Dokumentation steht, musst du im Makefile konfigurieren, wo die ASURO-Bibliothek zu finden ist. Der vorgegebene Pfad funktioniert nur wenn dein Projekt in einem eigenen Ordner unterhalb von "examples" liegt.
Der zweite Fehler betrifft die Konfiguration der Quelltext-Dateien im Makefile. Dort ist ziemlich sicher noch test.c hinterlegt, dort müsste aber werner.c stehen.

mfG
Markus

Leiwig
27.01.2015, 15:40
Hallo,
vielen Dank für die Antwort!
So also ich hab asoro.h gelöscht!

Es funktioniert leider immer noch nicht:MistPC](*,) :(

Vielen Dank im Voraus

296772967829679

markusj
27.01.2015, 18:15
Es funktioniert leider immer noch nicht
Wenig verwunderlich, du hast ja auch nicht richtig aufgepasst was ich geschrieben habe.

In dem Makefile steht bei TARGET "test" drin. Dein Programm hat aber einen anderen Namen. Ersetze "test" durch "werner" und dann ist der erste Fehler weg. Womit wir zum zweiten Fehler kommen. Du hast LIBPATH zweimal drin stehen, einmal als direkten (richtigen) Pfad und direkt darunter einen falschen relativen Pfad. LIBPATH ist eine Variable, wie beim Programmieren wird der richtige Pfad also durch den falschen überschrieben. Die zweite Zeile bitte ganz löschen oder auskommentieren!

mfG
Markus

Leiwig
28.01.2015, 16:46
ok danke

es funktioniert immer noch nicht richtig :(

vielen dank für die mühe!!!

296852968629687

- - - Aktualisiert - - -

hallo
ok danke

ich hab werner.c in test.c umbenannt.
den zweiten libpath gelöscht

und es funktioniert immer noch net

296882968929690

- - - Aktualisiert - - -

hallo
ok danke

ich hab werner.c in test.c umbenannt.
den zweiten libpath gelöscht

und es funktioniert immer noch net.:(:MistPC:Haue

vielen dank für die mühen
296912969229693

- - - Aktualisiert - - -

oops hab eben erst bemerkt, dass es zwei seiten gibt

markusj
28.01.2015, 18:59
Kannst du den Ordner bitte Mal in ein ZIP-Archiv packen und irgendwo hochladen? Irgend etwas an deiner Konfiguration ist komisch. Auch, dass ganz zu Beginn "asuro.h" nicht gefunden wird. Der LIBPATH stimmt schon, oder?

mfG
Markus

Leiwig
28.01.2015, 19:17
Blöde Frage aber wie kann man das alles zippen?

vielen Dank im Voraus

markusj
28.01.2015, 23:06
Blöde Frage aber wie kann man das alles zippen?
Rechtsklick auf den den Ordner, im Kontextmenü gibt es ziemlich sicher irgendwo einen Eintrag der etwas von "Packen" oder "Komprimieren" sagt. Alternativ kannst du Tante Google bemühen, ich habe gerade spontan kein Windows 7/8 zur Hand um auszuprobieren wie das da mit Bordmitteln geht.

mfG
Markus

Leiwig
30.01.2015, 13:46
29713
Hallo hier der gezippte ordner

vielen Dank!!

markusj
30.01.2015, 19:52
Sag Mal, woher kommt das Makefile? Das passt mit nichts zusammen was ich kenne. Ich dachte erst es kommt aus einer prähistorischen RN-Bibliothek, aber das stimmt auch nicht. Mit 2.7 und 2.8 stimmt das Makefile auch nicht überein.

Die Lösung deines Problems besteht also darin, ein Makefile aus dem "examples" Ordner (nimm der Einfachheit halber "FirstTry") zu kopieren und darin dann die nötigen Anpassungen vorzunehmen. Die Dateien der Bibliothek darfst du dabei nicht unter SRC im Makefile eintragen!

mfG
Markus

Leiwig
30.01.2015, 20:34
Ich hab die makefile aus dem internet(aktuell)
kannst du es mir vielleicht einfach mal machen?(Bitte)

Und noch ne Frage:
Ich hab ein Programm umd mit den odometire sensoren dafür zu sorgen, dass beide Räder GLEICH schnell drehen:
und zwar macht er mit F_CPU

vielen Dank im Voraus!

2972229723

markusj
31.01.2015, 09:18
Ich hab die makefile aus dem internet(aktuell)
kannst du es mir vielleicht einfach mal machen?(Bitte)
Da liegt der Fehler. Kopiere bitte das Makefile aus dem Ordner der RN-Bibliothek, "examples/FirstTry". Da musst du dann wieder den LIBPATH anpassen und gegebenenfalls noch TARGET, wenn dein Quellcode nicht "test.c" heißt. Danach sollte es funktionieren. Du kannst nicht einfach beliebige Projekte/Makefiles aus dem Internet kopieren, das muss zu deiner Bibliothek passen.



Ich hab ein Programm
... aus dem Internet kopiert. Das Problem ist, dass du nicht verstehst was du gerade tust und jede Menge Zeug zusammenkopierst das nicht funktioniert, nicht funktionieren kann!
Ganz Grundlegend: Solange du für den ASURO programmierst und das Projekt mit dem du arbeitest nicht eine eigene Bibliothek für den ASURO mitbringt, musst du immer ein Makefile der ASURO-Bibliothek in den Projektordner kopieren und an deine Bedürfnisse anpassen. Das Makefile ist auf die jeweilige Bibliothek zugeschnitten.


und zwar macht er mit F_CPU
F_CPU hat mit der Funktionalität des Programms wenig zu tun, das ist nur ein Makro das sagt wie schnell der Mikrocontroller getaktet ist. F_CPU kennt der Kompiler nur nicht, weil das Makefile nicht zum Rest passt. Die Geschwindigkeitsregelung der beiden Räder funktioniert über die Odometriesensoren mit denen der ASURO die Radumdrehungen messen kann. Da jeder ASURO leicht andere Werte aufweist, können die Sensoren mit den Werten in myasuro.h kalibriert werden. Dazu muss aber myasuro.h im Bibliotheksordner "lib/inc" entsprechend angepasst werden, danach ist es erforderlich die Bibliothek neu zu kompilieren (siehe Dokumentation/Anleitung). Es gibt auch ein Hilfsprogramm mit dem du die Werte automatisch ermitteln lassen kannst, näheres dazu findest du im AsuroWiki.

mfG
Markus