-         

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

Thema: Asuro programmier problem

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    03.04.2006
    Beiträge
    7

    Asuro programmier problem

    Anzeige

    Hallo

    Bin Schüler und habe für meine Jahresarbeit in Technik mir den Asuro ausgesucht bis jetzt hat alles super geklappt doch beim Programmeren komm ich nicht mehr weiter. Ich habe versucht schon fertig geschriebene Programme zu kopieren und ins Notepad eigefügt aber wenn ich den Asuro dann flashe und ihn danach wiede anschalte leuchten nur die beiden hinteren dioden rot und die hauptleuchte (D12) gelblich danach wird diese grün und das wars.

    Habe das hier aus dem Asuro Wiki
    (http://asuro.pytalhost.de/pmwiki/pmw...ollisionsTestC)

    Wenn ich es so in test.c einfüge müsste es doch funktioniren aber er macht nichts?? Wie is es denn richtig damit er auch das macht???

    #include "asuro.h"

    /* Um eventuelle Unterschiede zwischen linken und rechtem Motor auszugleichen
    * definieren wir 2 Werte für fullspedd links und rechts
    */
    #define FULL_L 250 /* Fullspeed linker Motot */
    #define FULL_R 220 /* Fullspeed rechter Motor */

    /* Motor vorwärts */
    void MotorFwd(void)
    {
    MotorDir(FWD,FWD);
    MotorSpeed(FULL_L,FULL_R);
    }

    /* Motor rückwärts */
    void MotorRwd(void)
    {
    MotorDir(RWD,RWD);
    MotorSpeed(FULL_L,FULL_R);
    }

    /* Motor rückwärts Links */
    void MotorRwdL(void)
    {
    MotorDir(RWD,RWD);
    MotorSpeed(FULL_L,0);
    }

    /* Motor rückwärts Rechts */
    void MotorRwdR(void)
    {
    MotorDir(RWD,RWD);
    MotorSpeed(0, FULL_R);
    }

    /* Motor stop */
    void MotorStop(void)
    {
    MotorSpeed(0,0);
    }

    int main(void)
    {
    unsigned char t1, t2;

    Init();
    while(1)
    {
    t1 = PollSwitch();
    t2 = PollSwitch();
    if(t1 == 0 && t2 == 0) /* keine Taste */
    {
    MotorFwd(); /* vorwärts fahren */
    FrontLED(ON);
    BackLED(OFF,OFF);
    }
    else if (t1 && t2 && t1 == t2)
    {
    MotorStop();
    if(t1 & 0x07) /* Tasten links gedrückt? */
    {
    MotorRwdL(); /* Rückwärtskurve links fahren */
    FrontLED(OFF);
    BackLED(ON,OFF);
    }
    if (t1 & 0x3 /* Tasten rechts gedrückt? */
    {
    MotorRwdR(); /* Rückwärtskurve rechts fahren */
    FrontLED(OFF);
    BackLED(OFF,ON);
    }
    Msleep(1000); /* 1 Sekunde fahren */
    }
    }
    return 0;
    }

    wäre sehr dankbar für eure Antworten
    dani

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    07.01.2006
    Beiträge
    36
    Hallo dani1236,

    also ich gehe mal davon aus, dass Du den Selbsttest mit dem Asuro erfolgreich absolviert hast - insbesondere die Taster sollten richtig erkannt werden? Hast Du schon irgendwelche anderen Programme erfolgreich benutzt (also insbesondere die, die mit dem Asuro mitgeliefert werden)?
    Reagiert der Asuro bei allen Programmen wie von Dir beschrieben (Rücklampen an, Status grün)? Der Compiler meldet keine Fehler (Du brauchst die angepasste asuro.c für das Programm)? Das FlashTool meldet auch ok? Die Batterien sind ok?

    Also mehr fällt mir gerade auch nicht ein. Vielleicht mal ein ganz einfaches Programm testen, das nur die StatusLED auf rot schaltet und probieren ob das geht... (dann weisst Du wenigstens, dass das Programmieren richtig geht)

    Gruß
    kanal28

    PS:
    1. wenn Du code postest, solltest Du die Funktion für code einfügen verwenden - liest sich besser...

    2. Beiträge zum Asuro sollten besser hier hin: Roboterbausätze und Modelle - da gibt es gerade ne ähnliche Diskussion: http://www.roboternetz.de/phpBB2/vie...=7571&start=44

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    03.04.2006
    Beiträge
    7
    Hallo

    Ja den selbsttest bekomme ich ohne probleme draufgeladen
    -Taster und alle anderen funktionen fuktionieren auch
    -Ale pogramme die auf der CD waren bekomme ich nicht auf den Asuro außer den selbstest
    - Flash tool meldet auch keine fehler

    Also ich kopiere z.B den code für die Rechteckdemo in die test.c datei im Programers Notepad 2 drücke auf make und dann speicher. Jetzt die datei test.hex auf den asuro laden!! Stimmt dass so oder mache ich dabei einen feler

    Thx dani126

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    07.01.2006
    Beiträge
    36
    Hallo dani1236,

    also, das klingt verdammt so, als würdest Du entweder nicht das richtige Programm compilieren oder die falsche Datei flashen. Wenn Du den Code in test.c einfügst, musst Du vor make speichern. Der Stern hinter test.c in der Titelzeile muss also weg sein - sonst compilierst Du die alte test.c.
    Am besten Du gehst als erstes auf clean (dann wird die alte test.hex gelöscht), änderst dann die test.c, so wie Du es brauchst und dann speicherst Du test.c. Danach gehst Du auf make und schaust, ob er Fehler meldet. Wenn kein Fehler gemeldet wird, kannst Du die neue test.hex flashen (schau noch mal, ob die richtige Datei eingestellt ist).

    kanal28

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    03.04.2006
    Beiträge
    7
    Hallo

    also hat mir schon einmal geholfen danke. Aber wenn ich diesen code einfüge zeigt es ein fehler an. Das clean und make tool habe ich richtig eingestelt diese funktionieren auch nur jetzt zeigt es mir diese fehler an.
    Kann mir jemand sagen was der fehler daran ist. Ich hab auch auf die richtige datei usw geachtet.

    Code:
    /*******************************************************************************
    *
    * File Name:   RechteckDemo.c
    * Project  :   Demo
    *
    * Description: This file contains RechteckDemo
    *
    * Ver.     Date         Author           Comments
    * -------  ----------   --------------   ------------------------------
    * 1.00	   14.08.2003   Jan Grewe		 build
    * 2.00     22.10.2003   Jan Grewe        angepasst auf asuro.c Ver.2.10
    *
    * Copyright (c) 2003 DLR Robotics & Mechatronics
    *****************************************************************************/
    /***************************************************************************
     *                                                                         *
     *   This program is free software; you can redistribute it and/or modify  *
     *   it under the terms of the GNU General Public License as published by  *
     *   the Free Software Foundation; either version 2 of the License, or     *
     *   any later version.                                                    *
     ***************************************************************************/
    #include "asuro.h"
    
    #define LEFT 0
    #define RIGHT 1
    #define LINE 0
    #define EDGE 1
    
    SIGNAL (SIG_ADC)
    {
    	static unsigned char tmp[2],flag[2],toggle;
    	static unsigned char state = LINE, posFlag[2] = {FALSE,FALSE};
    	static unsigned char pos[2] = {0,0}; 
    	static unsigned char rightSpeed = 200, leftSpeed = 200;
    
    	tmp[toggle]= ADCH;
    
    	if (toggle)	ADMUX = (1 <<ADLAR) | (1 <<REFS0) | WHEEL_RIGHT; 
    	else ADMUX = (1 <<ADLAR) | (1 <<REFS0) | WHEEL_LEFT; 
    
    	if ( (tmp[toggle] < 128) && (flag[toggle] == TRUE)) {
    		pos[toggle] ++;
    		flag[toggle] = FALSE;
    	}
    	if ( (tmp[toggle] > 128) && (flag[toggle] == FALSE)) {
    		pos[toggle] ++;
    		flag[toggle] = TRUE; 
    	}
    	toggle ^= 1; 
    
    	if (state == LINE) {
    		if (pos[LEFT]  > 100)  { 
    			leftSpeed = 0; 
    			pos[LEFT] = 0;
    			posFlag[LEFT] = TRUE;
    		} 
    		if (pos[RIGHT] > 100)  { 
    			rightSpeed = 0; 
    			pos[RIGHT] = 0;
    			posFlag[RIGHT] = TRUE;
    		}
    		if (posFlag[RIGHT] == TRUE && posFlag[LEFT] == TRUE) {
    			state = EDGE;
    			leftSpeed = 180;
    		}
    	}
    	if (state == EDGE) {
    		if (pos[LEFT]  > 50)  { 
    			leftSpeed = 0; 
    			pos[LEFT] = 0; 
    			posFlag[LEFT] = posFlag[RIGHT] = FALSE;
    			state = LINE;
    			leftSpeed = rightSpeed = 200;
    		} 
    	}
    	MotorSpeed(leftSpeed,rightSpeed);
    }
    
    
    void RechteckDemo(void)
    {
    	Init();
    	cli();
    	MotorSpeed(200,200);
    	DDRC &= ~ ((1<<PC0) | (1<<PC1)); // Input => no break LED
    	ODOMETRIE_LED_ON;
    	ADCSRA = (1<<ADEN) | (1<<ADFR) | (1<<ADIE) | (1<<ADSC) | (1<<ADPS0) | (1<<ADPS1) | (1<<ADPS2); // clk/128
    	ADMUX = (1<<ADLAR) | (1<<REFS0) | WHEEL_LEFT; // AVCC reference with external capacitor
    	sei();
    	for(;;);
    }

    dann kommt der fehler


    C:\ASURO_src\FirstTry>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=asuro.lst asuro.c \
    | sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > asuro.d; \
    [ -s asuro.d ] || rm -f asuro.d
    set -e; avr-gcc -MM -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=test.lst test.c \
    | sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > test.d; \
    [ -s test.d ] || rm -f test.d
    -------- 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=test.lst test.c -o test.o
    avr-gcc -c -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=asuro.lst asuro.c -o asuro.o
    avr-gcc -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=test.o test.o asuro.o --output test.elf -Wl,-Map=test.map,--cref -lm
    C:\WinAVR\bin\..\lib\gcc-lib\avr\3.3.1\..\..\..\..\avr\lib\avr4\crtm8.o(.in it9+0x0): undefined reference to `main'
    make: *** [test.elf] Error 1

    > Process Exit Code: 2

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    07.01.2006
    Beiträge
    36
    Hallo dani1236,

    na das sind doch Fortschritte! Also die einzig wichtige Zeile dabei ist die hier:

    C:\WinAVR\bin\..\lib\gcc-lib\avr\3.3.1\..\..\..\..\avr\lib\avr4\crtm8.o(.in it9+0x0): undefined reference to `main'

    Er findet also offenbar main nicht. Weiß nicht, wie gut Du Dich mit C auskennst, aber eine Funktion main() muss in dem code in jedem Fall vorhanden sein - dort beginnt die eigentliche Programmausführung. In Deiner rechteck.c ist keine Funktion main() - deswegen protestiert der Compiler.

    Schau Dir mal die anderen Demo-Dateien an. Da müsste auch eine main.c dabei sein. Dort ist die zugehörige main() drin. Alle anderen Dateien werden über die demo.h eingebunden. Ist ziemlich modular aufgebaut und deswegen anfangs wohl etwas unübersichtlich.

    kanal28

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    03.04.2006
    Beiträge
    7
    ok
    mache programme funktionieren aber manche sind entweder falsch geschrieben ,es zeigt mir halt einen fehler an. Könnte mir jemand diese hex datei für die rechteckdemo hier posten diese vielen zahlen da.

    Oder am besten andere Programme als hex datei mit denen ich meinen lehrer am besten zeigen kann was der asuro so drauf hat.

    danke Dani

    nochmal ein dankeschön an kanal28 für die hilfe

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    07.01.2006
    Beiträge
    36
    Hallo dani1236,

    gern geschehen. Wenn Programme nicht funktionieren, basieren die vielleicht auf der erweiterten asuro.c library - dazu http://www.roboternetz.de/phpBB2/viewtopic.php?t=7571.

    Wenn Du den Asuro vorführen willst, solltest Du auch versuchen das Programm selbst zu compilieren. Ich empfehle Dir, zu versuchen, die Datei main.c aus dem SelfTest-Verzeichnis zu verwenden - das sollte alle Funktionen zeigen. Denke das ist besser, als wenn Du Dir hier einfach ein Programm schicken lässt. (Falls wirklich nötig, gibt es hier ein paar fertige Programme: http://home.planet.nl/~winko001/AsuroIdx.htm)

    Gruß
    kanal28

  9. #9
    Ich habe da mit der State-Event technik ein Programm geschrieben.
    In diesem Programm kann die Asuro ein Hindernis umfahren.
    ich möchte Mal wissen, mit welcher technik ihr vorangeht.
    ich bin erst 14 Jahre alt und noch ein Anfänger. Daher habe ich noch ein Problem mit meinem Asuro...Er geht nicht geradeaus!

    Ich bitte sie daher, ob sie mir ein kleines Programm über die Odometrie posten konnen.....

    MfG Westside

  10. #10
    Neuer Benutzer Öfters hier
    Registriert seit
    26.06.2006
    Alter
    34
    Beiträge
    15
    Zitat Zitat von kanal28



    Er findet also offenbar main nicht. Weiß nicht, wie gut Du Dich mit C auskennst, aber eine Funktion main() muss in dem code in jedem Fall vorhanden sein - dort beginnt die eigentliche Programmausführung. In Deiner rechteck.c ist keine Funktion main() - deswegen protestiert der Compiler.

    Schau Dir mal die anderen Demo-Dateien an. Da müsste auch eine main.c dabei sein. Dort ist die zugehörige main() drin.

    kanal28
    Wo muss man denn genau main() unterbringen?

    mfg ete

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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