-
        

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: Fehlermeldung durch SIGNAL-deklarierung in asuro.c

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    24.11.2006
    Beiträge
    40

    Fehlermeldung durch SIGNAL-deklarierung in asuro.c

    Anzeige

    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; 
    }}

  2. #2
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Jena
    Alter
    31
    Beiträge
    3.913
    prüfe mal die beiden zeilenangaben aus der fehlermeldung. scheinbar ist hier was doppelt definiert.
    kleinschreibung ist cool!

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.801
    Es muss immer SIGNAL heissen und nicht SIGNAL1 oder so.
    Disclaimer: none. Sue me.

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    24.11.2006
    Beiträge
    40
    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!

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    24.11.2006
    Beiträge
    40
    @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.

  6. #6
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Jena
    Alter
    31
    Beiträge
    3.913
    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?
    kleinschreibung ist cool!

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    24.11.2006
    Beiträge
    40
    Hi,
    in zeile 184 kommt diese deklaration:

    Code:
    SIGNAL (SIG_OVERFLOW2)
    {
    	TCNT2 += 0x25;
    	count36kHz ++;
    	if (!count36kHz) timebase ++;
    }
    in zeile 216 diese:

    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; 
    }}

  8. #8
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Jena
    Alter
    31
    Beiträge
    3.913
    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... :/
    kleinschreibung ist cool!

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    24.11.2006
    Beiträge
    40
    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.

  10. #10
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    31
    Beiträge
    4.255
    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.

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •