prüfe mal die beiden zeilenangaben aus der fehlermeldung. scheinbar ist hier was doppelt definiert.
Hi Leute,
folgendes Problem:
Ich habe auf meinen asuro schon längere zeit nichts mehr aufgespielt. mittlerweile hab ich auch einen neuen PC bekommen, jetzt hab ich winAVR auf den neuen PC gemacht, die alte asuro.c auf den rechner etc.
wenn ich jetzt ein programm schreibe kommt bei aufrufen des make-files folgender fehler:
wenn ich zwei der signal deklarierungen ausklammere dann geht das umwandeln mit dem make-file, aber das programm läuft auf asuro nicht.
asuro.c:216: error: redefinition of `SIGNAL'
asuro.c:184: error: `SIGNAL' previously defined here
make: *** [asuro.o] Error 1
meine asuro.c ist eine erweiterte version aus dem inetz.
auf dem alten rechner lief das einwandfrei.
hat jemand einen rat??
sie SIGNAL deklarierungen in asuro.c sehen so aus:
Code:SIGNAL (SIG_OVERFLOW2) { TCNT2 += 0x25; count36kHz ++; if (!count36kHz) timebase ++; } SIGNAL (SIG_INTERRUPT1) { MotorDir(BREAK,BREAK); StatusLED(RED); MotorSpeed(0,0); Msleep(500); StatusLED(GREEN); } SIGNAL (SIG_ADC) { static unsigned char tmp[2],flag[2],toggle=FALSE; if (autoencode){ tmp[toggle]= ADCH; if (toggle) ADMUX = (1 <<ADLAR) | (1 <<REFS0) | WHEEL_RIGHT; else ADMUX = (1 <<ADLAR) | (1 <<REFS0) | WHEEL_LEFT; if ( (tmp[toggle] < 140) && (flag[toggle] == TRUE)) { encoder[toggle] ++; flag[toggle] = FALSE; } if ( (tmp[toggle] > 160) && (flag[toggle] == FALSE)) { encoder[toggle] ++; flag[toggle] = TRUE; } toggle ^= 1; }}
prüfe mal die beiden zeilenangaben aus der fehlermeldung. scheinbar ist hier was doppelt definiert.
Es muss immer SIGNAL heissen und nicht SIGNAL1 oder so.
Disclaimer: none. Sue me.
hi!
ja, die fehlermeldung ist ja genau dass SIGNAL schonmal definiert wurde, ich habe bloß nichts an der syntax geändert. es lief schonmal alles mit der asuro.c, nur jetzt auf einmal geht nichts mehr!
@sprinter
sorry mein fehler, hatte das nur mal ausprobiert weil eben die meldung kam, dass SIGNAL schon definiert war. die fehlermeldung ist eben aus dem kontext ohne signal1 etc.
sag mal... hast du die version 2.6.1? da war was mit den signals.
was steht in deiner asuro.c in zeile 216? und was in zeile 184?
Hi,
in zeile 184 kommt diese deklaration:
in zeile 216 diese:Code:SIGNAL (SIG_OVERFLOW2) { TCNT2 += 0x25; count36kHz ++; if (!count36kHz) timebase ++; }
Code:SIGNAL (SIG_ADC) { static unsigned char tmp[2],flag[2],toggle=FALSE; if (autoencode){ tmp[toggle]= ADCH; if (toggle) ADMUX = (1 <<ADLAR) | (1 <<REFS0) | WHEEL_RIGHT; else ADMUX = (1 <<ADLAR) | (1 <<REFS0) | WHEEL_LEFT; if ( (tmp[toggle] < 140) && (flag[toggle] == TRUE)) { encoder[toggle] ++; flag[toggle] = FALSE; } if ( (tmp[toggle] > 160) && (flag[toggle] == FALSE)) { encoder[toggle] ++; flag[toggle] = TRUE; } toggle ^= 1; }}
schlecht...
=)
er meint, es währen doppelte funktionsdeklarationen vorhanden, weil zweimal SIGNAL dasteht. was man dagegen jketzt spontan tun kann, weiss ich leider auch nicht... :/
ja
ich wunder mich nur, weil programme schon mit genau der asuro.c gelaufen sind. kann das evtl. an nem update von winavr liegen?
habe jetzt gerade die original version von der asuro cd drauf.
Ist die signal.h und interrupt.h eingebunden? Das müsste aber eigentlich automatisch in der asuro.h erfolgen.
Die SIGNAL-Schreibweise für die Interrupts ist zwar schon ewig veraltet, wird aber immer noch unterstützt.
Lesezeichen