Wo steckt der Fehler?
Wenn ich das "make" Tool ausführe kommen immer drei Fehler, egal was ich wegkürze... Die For-Schleife scheint nicht io zu sein.
Wo steckt der Fehler?
Wenn ich das "make" Tool ausführe kommen immer drei Fehler, egal was ich wegkürze... Die For-Schleife scheint nicht io zu sein.
Welcher Fehler kommt? Wenn man das weiß kann man etwas besser helfen.
MfG Hannes
Ich habe mal ein Screenie angehängt. Hoffe, er hilft weiter.
Danke für das Interesse an der Frage!
Hallo
Außer zwei berechtigten Warnungen kann ich das fehlerfrei übersetzen:
Zeile 21 ist tatsächlich der for-Befehl:Code:avr-gcc -mmcu=atmega8 -Os -mno-interrupts -funsigned-char -funsigned-bitfields -Wall -Wstrict-prototypes -ggdb -c -DF_CPU=8000000UL -Wa,-acdhlmns=temp.lst temp.c -o temp.o temp.c: In function `main': temp.c:7: warning: 'h' might be used uninitialized in this function temp.c:7: warning: 'd' might be used uninitialized in this function
for(i=0;i<4;i++){
Da fällt mir eigentlich auch kein Fehler auf. Wenn man allerdings nur die Zeilen mit Programmcode zählt, dann kommt man auf diesen if-Befehl:
if(uebergaenge==66){
"lefthand" wäre dann uebergänge, und da d und h beim Programmstart nicht definiert sind, könnte der Kompiler vielleicht der Meinung sein, dies hier wird nicht richtig ausgeführt:
if(dataO[1]<300){d=1;}
if(dataO[1]>600){h=1;}
if(h==1 && d==1){uebergaenge++;
und bei data[1] zwischen 300 und 600 hätte er damit auch vollkommen recht. Deshalb würde ich das Progamm mal so ändern:
int i, h=0, d=0;
Das ist aber nur geraten und nix gewußt.
Gruß
mic
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Nein, leider sind weiter oben schon alle Variablen definiert, von daher alles OK. Weitere Ideen? =(
Das stimmt schon, aber gib den Variablen definierte Werte (z.B. 0)Nein, leider sind weiter oben schon alle Variablen definiert, von daher alles OK. Weitere Ideen? =(
MfG Hannes
Datei gespeichert, vor dem Übersetzen?
Habe bereits alles gemacht was ihr gesagt habt. Leider tritt immer noch dieselbe fehlermeldung auf... gehts bei euch denn?
"Außer zwei berechtigten Warnungen kann ich das fehlerfrei übersetzen"
Ja, bei mir geht's (das Kompilieren), auch wenn es keine Beine hat. Der Ansatz, jeweils abzuwarten, bis je einmal high und einmal low erreicht wurde, erscheint mir übrigends auch richtig:
Code:#include "asuro.h" int main(void) { Init(); int i,h=0,d=0; unsigned int dataO[2]; int umdrehungen=0, uebergaenge=0; char dataSR[3]; SerRead(dataSR,3,0); SerWrite("geht klar!\n",11); // Viereck for(i=0;i<4;i++) { // gradeaus while(umdrehungen<3) { MotorDir(FWD,FWD); MotorSpeed(120,125); OdometrieData(dataO); if(dataO[1]<300){d=1;} if(dataO[1]>600){h=1;} if(h==1 && d==1) { uebergaenge++; h=0; d=0; } if(uebergaenge==66) { umdrehungen++; uebergaenge=0; } } } while(1); return 0; }
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Habe auch keine ahnung was dar schief ist. Kattauer, welcher WinAVR version brauchst du? Vielleicht ist das ein alter bug in dem compiler.
Lesezeichen