PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Kann nicht mehr compilieren :(



white_rabbit
04.12.2006, 18:52
Hallo.
Ich wollte ein paar .c Dateien, die hier im Forum gepostet wurden, testen (Code aus "Ausuro folgt der Linie"). Dazu habe ich einen neuen Ornder erstellt mit



28.09.2005 15:51 18.422 asuro.c
04.12.2006 17:47 34 asuro.d
28.09.2005 15:51 14.347 asuro.h
19.12.2005 14:01 7.297 Makefile
06.01.2001 18:08 8 Test-all.bat
06.01.2001 18:08 10 Test-clean.bat
04.12.2006 17:27 1.044 test.c
04.12.2006 17:31 963 test.c.old
04.12.2006 17:47 31 test.d


Wenn ich allerdinge compilieren will, erhalte ich zig Fehler, nämlich:


-------- begin --------
avr-gcc --version
avr-gcc (GCC) 3.4.6
Copyright (C) 2006 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 -I../../lib/inc -funsigned-char -funsigne
itfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=tes
st test.c -o test.o
In file included from asuro.h:145,
from test.c:2:
C:/Programme/ASURO/WinAVR/avr/include/avr/signal.h:36:2: warning: #warning "T
header file is obsolete. Use <avr/interrupt.h>."
test.c: In function `main':
test.c:30: error: syntax error before ';' token
test.c:24: warning: unused variable `i'
test.c: At top level:
test.c:32: warning: type defaults to `int' in declaration of `LineData'
test.c:32: warning: parameter names (without types) in function declaration
test.c:32: error: conflicting types for 'LineData'
asuro.h:329: error: previous declaration of 'LineData' was here
test.c:32: error: conflicting types for 'LineData'
asuro.h:329: error: previous declaration of 'LineData' was here
test.c:32: warning: data definition has no type or storage class
test.c:33: warning: type defaults to `int' in declaration of `ADOffset'
test.c:33: error: initializer element is not constant
test.c:33: warning: data definition has no type or storage class
test.c:34: warning: type defaults to `int' in declaration of `speedLeft'
test.c:34: error: initializer element is not constant
test.c:34: warning: data definition has no type or storage class
test.c:35: error: syntax error before ';' token
....



Kann mir kurz einer sagen, was da faul ist?
Komisch finde ich auch: Wenn ich unter Programmers Notepad IRGEND eine .c Datei öffne, wird bei "make" immer in das Verzeichnis > "C:\Programme\ASURO\ASURO_src\FirstTry\Test-all.bat" gesprungen -- wo wohl offenbar die aller erste Testversion lag?

Idee, woran das liegen könnte?
Danke,
W.R.

EDH
04.12.2006, 18:57
funktioniert das kompilieren der demo dateien, die bei der lib dabei waren?

white_rabbit
04.12.2006, 19:07
ich habe verschiedene c-files, die ohne probleme funktionieren. Einige sind alt und kommen von der CD und andere sind neu und benutzen die Lib 2.6 -- beide liegen in verschiedenen Ordnern und beide laufen. Wenn ich aber ein eigenes Projekt starte (so wie dieses) geht es nicht ... seltsam, oder?

damaltor
04.12.2006, 19:12
kopiere das verzeichnis "firsttry" von der cd.

überschreibe asuro.c und asuro.h (wenn gewünscht) mit der neuen lib.

ersetze test.c mit deinem programmcode, den du kompilieren willst (NENN IHN AUCH TEST.C)

und dann öffne die konsole, wechsle in das verzeichnis vo dein programmcode liegt und gib "make all" ein.

du kannst alternativ auch auf test-all.bat doppelklicken, aber dann siehst du die ausgabe des compilers nicht.

wenn das nicht geht, dann kontrolliere erstmal den programmcode... syntax error usw klingt echt nach programmfehlern. poste mal den code hier.

white_rabbit
04.12.2006, 19:20
Ich habe alles so gemacht aber es bleibt bei den Fehlern.
Der code kommt hier aus dem Forum:




#include "asuro.h"

#define SPEED 0x8F

int speedLeft,speedRight;
unsigned int lineData[2];
int ADOffset;

void LineLeft (void)
{
speedLeft += 1;
if (speedLeft > 0xFE) speedLeft = 0xFF;
}

void LineRight (void)
{
speedRight += 1;
if (speedRight > 0xFE) speedRight = 0xFF;
}

int main(void)
{
int i;
unsigned char j;

Init();

FrontLED(ON);
while(1) (j = 0; j < 0xFF; j++) {
LineData(lineData);}
LineData(lineData);
ADOffset = lineData[0] - lineData[1];
speedLeft = speedRight = SPEED;
(;;while(1) {
LineData(lineData);
i = (lineData[0] - lineData[1]) - ADOffset;
if ( i > 4) {
StatusLED(GREEN);
LineLeft();
}
else if ( i < -4) {
StatusLED(RED);
LineRight();
}
else {
StatusLED(OFF);
speedLeft = speedRight = SPEED;
}
MotorSpeed(speedLeft,speedRight);
}
return 0;
}


auch zu finden ganz unten auf Seite 1 unter:

https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=9491&highlight=linie

EDH
04.12.2006, 19:23
bekenne mich schuldig, dieser code stammt von nmir
nicht alle codes die hier gepostet werden funktionieren auch.
ich wage es zu behaupten das die meisten sogar nicht fnuktioniern.
und bei dem hab ich halt grad eine kleine sache übersehen gehabt, so das massenweise fehler rauskamen. tja. ich poste halt mal gelegentlich auch code den ich nicht getestet hab

schua mal auf die nächste seite. da steht ein code der funktioniert.

mfg EDH

white_rabbit
04.12.2006, 19:25
sorry, hab jetzt den code vom ende des threads genommen. muss wohl irgend etwas im clipboard hängen geblieben sein, was da eigentlich nicht mehr stehen sollte. Damit klappt das compilieren jetzt... trotzdem danke!

white_rabbit
04.12.2006, 19:33
hm, jetzt hab ich das programm zwar compiliert und geflasht - aber der Linie folgt mein Asuro trotzdem noch nicht. es kommt mir vor, als wäre die Messung der Reflexion entweder zu langsam oder aber der Asuro zu schnell. Mein Parcour ist auf 4 DinA4-Blättern mit einem dicken schwarzen Edding aufgezeichnet. Das müsste er doch schaffen?!?

EDH
04.12.2006, 20:36
mhh also bei mir hats funktioniniert
bist du dir sicher, das deine liniensesoren richtig funktioniern?