PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Msleep funktioniert nicht!



m1ch15inner
22.11.2006, 12:38
da ich mit der normalen Sleep funktion nur ein paar millisekunden warten kann, hab ich die Msleep funktion ausprobiert.....da kommt aber immer ne fehlermeldung....:-s

test.c:10: warning: implicit declaration of function `Msleep'

oder is was an dem code falsch? (ich bin totaler anfänger! ](*,) )


#include "asuro.h"

int main(void)
{
Init();
MotorDir(FWD,FWD);
while(1)
{
MotorSpeed(150,150);
Msleep(1000)
MotorSpeed(150,100);
Msleep(500);
}
return 0;
}

da müsste er doch 1 sec lang gerade aus fahren und dann nach rechts ne halb sec!?

{
danke;
}

EDH
22.11.2006, 12:49
test.c:10: warning: implicit declaration of function `Msleep'

bei mir kommt diese fehlermeldung gar nicht (oder hab ich sie blos übersehen)
naja egal.
copy/paste nützt nichts also von mir kein verbesserter code.
nur ein kleiner hinweis: nach dem aufruf einer funktion kommt ein semikolon. das hast du bei Msleep(1000) vergessen

mfg EDH

Toschtosch
22.11.2006, 12:51
#include "asuro.h"

int main(void)
{
Init();
MotorDir(FWD,FWD);
while(1)
{
MotorSpeed(150,150);
Msleep(1000);
MotorSpeed(150,100);
Msleep(500);
}
return 0;
}


müsste eigntl. gehen

hast du auch die neuste asuro.c ?
und noch zum anmerken

bei meinem asuro sind Msleep(666) ca. 1sekunde

mfg toschtosch

m1ch15inner
22.11.2006, 12:59
Der ; hat nichts genützt....
kommt immer noch die selber meldung.
aber ich glaub, dass das an der asuro.h liegt

EDH
22.11.2006, 13:00
kannst du das programm denn eigentlich flashen?

in der neuen asuro.h gibt es halt gelegentlich warnigs...

m1ch15inner
22.11.2006, 13:03
das is ja das problem.
wenn ich des makefile laufen lass macht es keine hex weil ja ein fehler da is.... also kann ich auch nicht flashen!
funktioniert das programm bei dir?

und noch was... ich hab schon mehrer vorlagen runtergezogen und immer wenn Msleep vorkommt dann gehts nicht zum compli-dings

EDH
22.11.2006, 13:16
klarstellung:
auch wenn ein warning vohanden ist, wird eine hex datei erstellt. es besteht aber die gefahr das das program nicht so funktuioniert wie es soll.



#include "asuro.h"

int main(void)
{
Init();
MotorDir(FWD,FWD);
while(1)
{
MotorSpeed(150,150);
Msleep(1000);
MotorSpeed(150,100);
Msleep(500);
}
return 0;
}


mhh...
bei mir funktioiniert der code hier und ein hex file wird auch erstellt.
vieleicht probierst du das mal bei dir und ignoriest das warning einfach mal
ansonsten neueste lib runterlade
http://sourceforge.net/project/showfiles.php?group_id=155217

mfg EDH

m1ch15inner
22.11.2006, 13:22
1. bei mir wird aber keine hex erstellt nur eine test.d und eine asuro.d
2. wenn mir vllcht jemand sagen könnte was ich denn mit der erweiterten lib machen soll (dran liegts!) wär das echt net
danke;)

EDH
22.11.2006, 13:28
die normale asuro.h und asuro.c wird einfach durch die erweiterte asuro.h und asuro.c ersetzt.

m1ch15inner
22.11.2006, 13:30
funktioniert aber immer noch nicht.
nur mal so ne frage: wie macht ihr aus ne c datei ne hex?

EDH
22.11.2006, 13:34
konsole aufmachen in das entsprechenden verzeichniss wechseln, und make all eintipen.

m1ch15inner
22.11.2006, 13:39
hä... blick ich jetzt überhaupt nicht mehr

m1ch15inner
22.11.2006, 13:41
ich hab ne bat datei-des is ja s gleiche-denk ich mal. dann erstellts wenns im Programmers notpad ohne fehler geht ne hex und andere dateien.. aber wenn Msleep und Encode_irgendwas vorkommen dann machts nur ne asuro.d und ne test.d!? irgend was is da scheiße!

m1ch15inner
22.11.2006, 13:55
was muss ich schreiben damit ich möglichst ohne msleep 1 sec lang rückwärts fahr und dann wieder normal?

m1ch15inner
22.11.2006, 13:57
das programmers notepad findet bei mir einen fehler in asuro.c?

EDH
22.11.2006, 14:01
#inlcude "asuro.h"

int main() {
int i;
MotorDir(RWD,RWD);
MotorSpeed(150,150);
for(i=0;i<1000;i++) {
Sleep(36);
}
MotorDir(FWD,FWD);
}



das sollte eigentlich gehen.
trozdemaber keine garantie :)

EDH
22.11.2006, 14:02
was für einen fehler in der asuor c?
poste bitte mal die fehlermeldung

m1ch15inner
22.11.2006, 14:04
C:\Dokumente und Einstellungen\Besitzer\Desktop\ASURO_src\FirstTry>make 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 (GCC) 3.3.1
Copyright (C) 2003 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
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: In function `__vector_2':
asuro.c:196: error: `switched' undeclared (first use in this function)
asuro.c:196: error: (Each undeclared identifier is reported only once
asuro.c:196: error: for each function it appears in.)
asuro.c: In function `__vector_14':
asuro.c:220: error: `encoder' undeclared (first use in this function)
asuro.c: In function `Encoder_Init':
asuro.c:463: warning: implicit declaration of function `Encoder_Set'
asuro.c: At top level:
asuro.c:470: warning: type mismatch with previous implicit declaration
asuro.c:463: warning: previous implicit declaration of `Encoder_Set'
asuro.c:470: warning: `Encoder_Set' was previously implicitly declared to return `int'
asuro.c: In function `Encoder_Set':
asuro.c:471: error: `encoder' undeclared (first use in this function)
asuro.c:471: error: `LEFT' undeclared (first use in this function)
asuro.c:472: error: `RIGHT' undeclared (first use in this function)
asuro.c: In function `PrintInt':
asuro.c:489: warning: implicit declaration of function `itoa'
asuro.c: In function `Go':
asuro.c:519: warning: implicit declaration of function `abs'
asuro.c:531: error: `encoder' undeclared (first use in this function)
asuro.c:531: error: `LEFT' undeclared (first use in this function)
asuro.c:532: error: `RIGHT' undeclared (first use in this function)
asuro.c: In function `Turn':
asuro.c:580: error: `encoder' undeclared (first use in this function)
asuro.c:580: error: `LEFT' undeclared (first use in this function)
asuro.c:581: error: `RIGHT' undeclared (first use in this function)
make: *** [asuro.o] Error 1

> Process Exit Code: 2

EDH
22.11.2006, 14:09
hast du vieleicht vergessen die asuro.h zu includieren?

m1ch15inner
22.11.2006, 14:12
was geht da ab? ich hab die asuro.h eingefügt, dann programmers notpad gestartet und dann war wieder die alte asuro.h drauf!?

Osser
22.11.2006, 14:39
Hi m1ch15inner,

wenn ich's richtig seh ist deine path Variable nicht richtig eingestellt und die standart AVR includes werden nicht gefunden. Persönlich habe ich ne console vorgeschaltet um die path Variable zu ändern und starte darin den Programmers-Notepad.

Die Meldungen weisen darauf hin das der gcc glaubt die Funktionen währen noch nicht deklariert, mit korrekt eingebundenem Include "avr\signal.h" darf das aber nicht der Fall sein.

Prüfe mal ob deine path Variable den basispfad zur WinAvr lib/inc Mappe enthält:
...;c:\winavr;c:\winavr\lib;...

O.

m1ch15inner
22.11.2006, 14:48
ich brig nich mit.....oO°
was soll ich nachschaun?
was is ne path Variable und was heißt Include

m1ch15inner
22.11.2006, 14:49
in
C:\WinAVR\avr\include\avr
gibts ne signal.h!

Osser
22.11.2006, 14:54
drück mal START/Ausführen
dann erscheint ein Dialog

gib CMD ein und drück OK

tipp folgendes ein
echo %path%

und drück return

das ist Deine path Variable...

O.

m1ch15inner
22.11.2006, 15:14
und was mach ich damit?

Osser
22.11.2006, 15:24
Wie ich bereits sagte:

prüfe mal ob deine path Variable den Basispfad zur WinAvr lib/inc Mappe enthält:
...;C:\WinAVR\avr\include;C:\WinAVR\avr\lib;...

O.

m1ch15inner
22.11.2006, 15:26
nein is nicht dabei!

Osser
22.11.2006, 15:38
Dann ist dass höchst wahrscheinlich der Grund dass es nicht geht.

Tipp in CMD mal das folgende ein

set path=C:\WinAVR\avr\include;C:\WinAVR\avr\lib;%path %[enter]

NB: schau bitte ob C:\WinAVR\avr\lib existiert oder ob es evtl. C:\WinAVR\avr\library heisst und ersetze es dementsprechend

dann zur Kontrolle nochmal

echo %path%[enter]

jetzt steht drin was drinstehen muss, hoffe ich.

dann

cd <mappe von programmers notepad hier>[enter]

und

pn.exe[enter]

dann sollte das Compilieren gehen.


O.

m1ch15inner
22.11.2006, 15:43
das ....inlcude.....lib steht jetzt drin.
aba ich hab kein pn.exe

m1ch15inner
22.11.2006, 15:45
C:\Dokumente und Einstellungen\Besitzer\Desktop\ASURO_src\FirstTry>make all
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 (GCC) 3.3.1
Copyright (C) 2003 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.

Size before:
test.elf :
section size addr
.text 1612 0
.data 0 8388704
.bss 1 8388704
.noinit 0 8388705
.eeprom 0 8454144
.stab 3312 0
.stabstr 1755 0
Total 6680


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:18: warning: implicit declaration of function `Msleep'
test.c:19: error: parse error before '}' token
test.c:25: error: parse error before '}' token
test.c:36: error: parse error at end of input
test.c:6: warning: unused variable `zeit'
make: *** [test.o] Error 1

> Process Exit Code: 2

Osser
22.11.2006, 15:51
Na dass sieht doch schon viel besser aus, lediglich die Syntaxfehler noch beheben und der Käse is gegessen...

Übrigens, die Einstellungen gelten nur innerhalb des CMD das du gerade offen hast, wenn du den schliesst und wieder ein neues CMD öffnest is alles weg. Deine Systemeinstellungen werden also nicht verändert (dass is auch gut so).
Am Besten schreibst du dir ein Commandscript mit genau den schritten die du gerade ausgeführt hast um immer wieder den jetzigen Zustand zu erreichen.

m1ch15inner
22.11.2006, 15:57
was zum teufel is n commandscript?

ich komm mir vor wie n trottel...

Osser
22.11.2006, 16:16
Hi m1ch15inner,

Das bist du sicher NICHT!
Sorry, hätte ich besser erklären müssen.

Erstelle eine Textdatei (START/Ausführen, "notepad" eingeben)

dann folgenden Text reinschreiben



rem Mein Commandscript zum Compilieren von Hex-Dateien
set path=C:\WinAVR\avr\include;C:\WinAVR\avr\lib;%path %
cd <mappe von deinen projekten hier>
cmd.exe


Speichere die Datei auf dem Desktop unter dem Namen "AsuroBuild.cmd"
(manchmal speichert Notepad die Datei mit der Endung ".txt" obwohl man ".cmd" eingibt, darauf musst du aufpassen, sonst heisst die Datei nämlich "AsuroBuild.cmd.txt" und dann gehts nicht!)

NB: Eine Datei die auf ".bat"oder ".cmd" endet ist ein Commandscript und führt alle enthaltenen Befehle aus als ob du sie mit der Hand eingegeben hättest.


O.

m1ch15inner
22.11.2006, 16:20
gut hab ich gemacht und bring eig nix weils immer noch nicht funtzt

Osser
22.11.2006, 18:29
Hey m1ch15inner,

immer locker bleiben.... :-k

Hab das hier nochmal probiert und es funzt ohne Probleme. Das ganze is im Attachment als zip zum selbst Probieren angehängt. Probiers einfach nochmal damit.
Die Asuro.h und Asuro.c ist nicht ganz genau entsprechend LibV2.6 sondern leicht abgewandelt, aber dass macht hierfür nichts aus.


:Ostern Durchbeissen!

O.

m1ch15inner
22.11.2006, 18:58
DANKE!!!!

es geht perfekt!

irgendwie is des ne andere asuro.d wie die die ich runtergeladen hatte... =D> \:D/

Osser
22.11.2006, 19:24
Na logitsch,

irgentwann klappt alles mal, kann sich halt manchmal etwas hinziehn.

O.

damaltor
23.11.2006, 10:46
Am Anfang des Programms stehen ein(ig)e Zeile(n) mit #include am anfang. das sind andere Dateien, in denen Z.B. deklariert ist was in Msleep() eigentlich passierne soll.

Diese liegen alle entweder im gleichen verzeichnis wie dein aktuell geschreibenes programm, Oder aber im Verzeichnis Winavr\lib; Winavr\inc und so weiter, das ist eine einstellung des compilers.

WO diese Dateien nun liegen, wird in der sog. PATH-Variable beschreiben. Was Helfen könnte, ist, dass du Winavr von der CD nochmal installierst. Am Anfang dieser Installation wird gefragt ob du "ADD TO PATH" willst. hier muss ein häkchen sein!

Mal na andere Frage: Hast du die Neue lib? runtergeladen und ins richtige verzeichnis entpackt? ansonsten geht da nämlich auch nix...

m1ch15inner
23.11.2006, 15:14
hab ich...... jetzt geht auch alles. trotzdem danke