-         

Ergebnis 1 bis 7 von 7

Thema: Asuro LIB ver2.61 Fehlermeldung

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    27.12.2006
    Ort
    Minneapolis
    Beiträge
    30

    Asuro LIB ver2.61 Fehlermeldung

    Anzeige

    !!!!!!Hilfe!!!!!!!

    Die erweiterten Lib Funktionen sehen sehr gut aus. Wuerde ich gerne nutzen.

    Ich bekomme jedoch immer eine Compiler Fehlermeldung, wenn ich die asuro.c und asuro.h durch die Dateien der neuen version ersetze. Unten in der Code Section die Fehlermeldung und die Auszuegen aus dem makefile, meinem Programm und der asuro.c (ver2.61) Dateien.

    Bitte dringends um Hilfe, komme mit meinen Projekten nicht weiter.

    Gruesse und frohes neues Jahr aus dem sonnigen Kalifornien!

    Code:
    ***************************************************************************************
    ******************************Fehlermeldung aus PN2************************************
    ***************************************************************************************
    
    C:\azuro\ASURO_src\Edge>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=Edge.lst Edge.c \
    | sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > Edge.d; \
    [ -s Edge.d ] || rm -f Edge.d
    make: *** Warning: File `Edge.d' has modification time in the future (2007-01-01 00:06:36 > 2007-01-01 00:06:34)
    -------- 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=Edge.lst Edge.c -o Edge.o
    avr-gcc -c -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=C:/azuro/ASURO_src/Edge/asuro.lst C:/azuro/ASURO_src/Edge/asuro.c -o C:/azuro/ASURO_src/Edge/asuro.o
    C:/azuro/ASURO_src/Edge/asuro.c:184: warning: return type defaults to `int'
    C:/azuro/ASURO_src/Edge/asuro.c:184: warning: function declaration isn't a prototype
    C:/azuro/ASURO_src/Edge/asuro.c: In function `SIGNAL':
    C:/azuro/ASURO_src/Edge/asuro.c:188: warning: control reaches end of non-void function
    C:/azuro/ASURO_src/Edge/asuro.c: At top level:
    C:/azuro/ASURO_src/Edge/asuro.c:195: warning: return type defaults to `int'
    C:/azuro/ASURO_src/Edge/asuro.c:195: warning: function declaration isn't a prototype
    C:/azuro/ASURO_src/Edge/asuro.c:195: error: redefinition of `SIGNAL'
    C:/azuro/ASURO_src/Edge/asuro.c:184: error: `SIGNAL' previously defined here
    C:/azuro/ASURO_src/Edge/asuro.c:212: warning: return type defaults to `int'
    C:/azuro/ASURO_src/Edge/asuro.c:212: warning: function declaration isn't a prototype
    C:/azuro/ASURO_src/Edge/asuro.c:212: error: redefinition of `SIGNAL'
    C:/azuro/ASURO_src/Edge/asuro.c:195: error: `SIGNAL' previously defined here
    make: *** [C:/azuro/ASURO_src/Edge/asuro.o] Error 1
    
    > Process Exit Code: 2
    
    ***************************************************************************************
    ************************************MAKEFILE  AUSZUG **********************************
    ***************************************************************************************
    # Target file name (without extension).
    TARGET = Edge
    
    # Optimization level, can be [0, 1, 2, 3, s]. 0 turns off optimization.
    # (Note: 3 is not always the best optimization level. See avr-libc FAQ.)
    OPT = s
    
    
    # List C source files here. (C dependencies are automatically generated.)
    SRC = $(TARGET).c
    
    # If there is more than one source file, append them above, or adjust and
    # uncomment the following:
    SRC += C:/azuro/ASURO_src/Edge/asuro.c 
    
    # You can also wrap lines by appending a backslash to the end of the line:
    #SRC += baz.c \
    #xyzzy.c
    
    ***************************************************************************************
    ************************************Programm  AUSZUG **********************************
    ***************************************************************************************
    #include "c:/azuro/ASURO_src/Edge/asuro.h" 
    #include "stdlib.h"
    #include "string.h"
    
    
    int main(void)
    {
    	int data[2], array[5], i, j, speed, avg, pointer;
    	
    	Init();
    
    	StatusLED(GREEN);
    	FrontLED(ON);
    	BackLED(OFF,OFF);
    	avg=0;
    	pointer=0;
    	speed=120;
    	for (i=0;i<20;i++) LineData(data);	// make sure sensors are OK
    //	SerWrite("\n\r-- ASURO Calibration --\n\r",27);
    	for (i=0;i<5;i++){
    
    ***************************************************************************************
    ********************* asuro.c Ver2.61 AUSZUG Line 178-217 *****************************
    ***************************************************************************************
    
    /*! 
     * \func SIG_OVERFLOW2 
     * \brief Interrupt Funktion: Timer2 Overflow 
     * uses timer2 (36kHz for IR communication) 
     */
    SIGNAL (SIG_OVERFLOW2)
    {
    	TCNT2 += 0x25;
    	count36kHz ++;
    	if (!count36kHz) timebase ++;
    }
    
    /*!
     * \func SIG_INTERRUPT1 
     * \brief Interrupt Funktion: INT1  
     */
    SIGNAL (SIG_INTERRUPT1)
    {
    	switched=1;
    	StopSwitch();
    }
    
    /*!
     * \func SIG_ADC 
     * \brief Interrupt Funktion: A/D Wandler
     *	last modification:
     * 	Ver.     Date         Author           Comments
     * 	-------  ----------   --------------   ---------------------------------
     * 	2.61     20.11.2006   m.a.r.v.i.n      static Variable toggle initialisiert
     * 	                                       auf False (Bug report von Rolf_Ebert) 
     * 
     * 
     */
    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;

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    27.12.2006
    Ort
    Minneapolis
    Beiträge
    30
    Ich habe nach einiger Suche einen Unterschied in der "asuro.h" gefunden. In der alten Version befand sich der Befehl "#include <avr/signal.h>". Dieser include Befehl fehlte in der "asuro.h" Ver 2.61.

    Mutig und experimentierfreudig hatte ich die Zeile in die Ver 2.61 asuro.h eingefuegt und voila - die Compiler Fehlercodes sind weg.

    Erstes Problem gelöst!!!

    Naechstes Problem gefunden:

    Ein Test der Go() Funktion zeigt ein Problem mit dem Encoder counter. Der Encoder counter läuft nicht los. Ich kann keine Funktion finden, die den counter anstösst!!!

    Anbei in der Code section ein Auszug aus der Original-Asuro.c Lib Ver 2.61 mit der Go() Function und drei Debug SerWrite Statements plus der Auszug aus dem Programm, dass die Go() Function aufruft.

    Der Output im Hyperterminal zeigt immer nur den Wert 0 für encoder[LEFT] und encoder[RIGHT].

    Hat jemand Rat?
    Code:
    /***************************************************************************
    *	void Go(int distance, int speed = 150)                                                                         
    *	
    *   input
    *	distance: postiv->go forward ; negativ-> go backward
    *   speed: sets motorspeed
    *
    *	last modification:
    * 	Ver.     Date         Author           Comments
    * 	-------  ----------   --------------   ---------------------------------
    * 	sto1     29.07.2005   stochri	       motorfunction
    *	And1	 31.07.2005   Andun            added speed and Odometrie
    * 	-------  ----------   --------------   ---------------------------------
    *
    ***************************************************************************/
    void Go(int distance, int speed)
    {
    	int enc_count = 0;
    	int tot_count = 0;
    	int diff = 0;
    	int l_speed = speed, r_speed = speed;
    	enc_count=abs(distance);
    	
    //	enc_count=distance*10000;
    //	enc_count/=12823;
    	
    	Encoder_Set(0,0);		// reset encoder
    
    	MotorSpeed(l_speed,r_speed);
    	if(distance<0) MotorDir(RWD,RWD);
    	else MotorDir(FWD,FWD);
    
    	while(tot_count<enc_count) {
    		tot_count += encoder[LEFT];
    		diff = encoder[LEFT] - encoder[RIGHT];
    		SerWrite("\n\rEncoder Left | Right - ",25);     //---> added Debug Statement
    		PrintInt(encoder[LEFT]);			//---> added Debug Statement
    		SerWrite(" | ",3);				//---> added Debug Statement
    		PrintInt(encoder[RIGHT]);			//---> added Debug Statement
    		if (diff > 0) { //Left faster than right
    			if ((l_speed > speed) || (r_speed > 244)) l_speed -= 10;
    			else r_speed += 10;
    		}
    		if (diff < 0) { //Right faster than left
    			if ((r_speed > speed) || (l_speed > 244)) r_speed -= 10;
    			else l_speed += 10;
    		}
    	Encoder_Set(0,0);		// reset encoder
    	MotorSpeed(l_speed,r_speed);
    	Msleep(1);
    	}
    	MotorDir(BREAK,BREAK);
    	Msleep(100);
    }
    
    **************************************************************************************
    *                  Programm Auszug
    **************************************************************************************
    #include "c:/azuro/ASURO_src/Edge/asuro.h" 
    #include "stdlib.h"
    #include "string.h"
    
    int main(void)
    {
    	int data[2], array[5], i, j, speed, avg, pointer;
    	
    	Init();
    
    	StatusLED(GREEN);
    	FrontLED(ON);
    	BackLED(OFF,OFF);
    	avg=0;
    	pointer=0;
    	speed=120;
    	for (i=0;i<5;i++){
    		Go(20,speed);
    		LineData(data);
    		avg=avg+data[0]+data[1];
    		array[pointer]=data[0]+data[1];
    		pointer++;
    		Msleep(900);
    		Go(-20,speed);
    		Msleep(900);
    	}

  3. #3
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Jena
    Alter
    31
    Beiträge
    3.912
    die Funktion zum starten des Encoders ist "Encoder_Init()".

    bevor du eine der funktionen go uder turn nutzt, solltest du "Encoder_Set(0,0)" ausführen, um die werte zurückzusetzen.
    kleinschreibung ist cool!

  4. #4
    Erfahrener Benutzer Roboter Genie Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    70
    Beiträge
    1.344
    hi allerseits,
    ich kenne die suchfunktion - um es vorwegzunehmen , versuche seit 2 stunden etwas über die möglichkeit die erweitere asuro.c runterzuladen zu finden - vergeblich, auch deshalb, weil man dabei so viele interessante themen findet...

    Die auf der cd, die ich mit dem bausatz bekam ist ja version 2.10 vom okt.2003. Irgendetwas von RN habe ich gefunden, von waste, stochri und damaltor fand ich komentare dazu, aber keinen link

    gruß inka

  5. #5
    Erfahrener Benutzer Roboter Genie Avatar von m.a.r.v.i.n
    Registriert seit
    24.07.2005
    Ort
    Berlin
    Beiträge
    1.247
    Hi,

    bei Verwendung der Asuro Lib V2.61 muß auch die aktuelle WinAVR Version installiert sein.

    Wenn man mit der alten WinAVR Version arbeiten will, fügt in die asuro.h wieder folgende Zeile ein.
    #include <avr/signal.h>
    ein. Diese Header-Datei ist bei der aktuellen WinAVR Version obsolete.

    Die Asuro Lib befindet sich hier:
    http://sourceforge.net/projects/asuro

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    27.12.2006
    Ort
    Minneapolis
    Beiträge
    30
    Zitat Zitat von damaltor
    die Funktion zum starten des Encoders ist "Encoder_Init()".

    bevor du eine der funktionen go oder turn nutzt, solltest du "Encoder_Set(0,0)" ausführen, um die werte zurückzusetzen.
    Danke fuer die Hilfe bisher!

    Neuste WinAVR Version mit der Lib 2.61 macht Sinn ebenso wie alternativ die von mir bereits vorgenommene Addition des #include <AVR/signal.h> Befehls in der asuro.h Datei.

    Nun nochmal zu meinem Encoder Problem. Die Go() Funktion in der asuro.c Ver 2.61 verwendet sowohl die "Encoder_Init()" als auch die "Encoder_Set(0,0)". Trotzdem faengt bei mir der Encoder nicht an zu zaehlen (siehe Programm Auszuege in meinem gestrigen Post).

    Allerdings habe ich immer noch die alten Win AVR mit der gefixten "asuro.c / asuro.h" Ver 2.61 am Laufen.

    Frohes Neues Jahr!

  7. #7
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Jena
    Alter
    31
    Beiträge
    3.912
    Zitat Zitat von inka
    hi allerseits,
    ich kenne die suchfunktion - um es vorwegzunehmen , versuche seit 2 stunden etwas über die möglichkeit die erweitere asuro.c runterzuladen zu finden - vergeblich, auch deshalb, weil man dabei so viele interessante themen findet...

    Die auf der cd, die ich mit dem bausatz bekam ist ja version 2.10 vom okt.2003. Irgendetwas von RN habe ich gefunden, von waste, stochri und damaltor fand ich komentare dazu, aber keinen link

    gruß inka
    hallo,

    die version auf der cd ist von arexx. die sog. erweiterte lib ist von rn-usern entwickelt worden (bzw ist ein teil von der originalen lib übernommen worden, andere funktionen wurden angepasst und einige neue hinzugefügt).

    die asuro lib 2.6.1 findest du hier:
    http://sourceforge.net/project/showf...roup_id=155217

    runterladen, entpacken, und die asuro.c und die asuro.h in deinem programmierverzeichnis durch die neuen dateien ersetzen (sicherheitskopie ist nicht nötig, originaldateien sind ja auf der cd).

    viel spaß =)
    kleinschreibung ist cool!

Berechtigungen

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