-         

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

Thema: Errors im Quellcode

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    20.03.2008
    Alter
    25
    Beiträge
    12

    Errors im Quellcode

    Anzeige

    Hallo Roboterfreaks
    Habe mir vor kurzem einen ASURO zugelegt und bin total gefesselt.
    Heute hab ich mich daran gemacht meinen ersten Quellcode für den ASURO zu tippen. Es hagelte immer wieder Errors trotz! abspeicherns vor dem kompilieren! (Der Quellcode war 100% richtig und flashen funktionierte auch reibungslos)
    Einmal hat es i-wie durch Zufall geklappt aber danach nie wieder -.-
    Nach 4 stunden ausprobierens hab ich mich entschlossen hier mein prob zu posten.
    Also hier mein Quellcode:

    Code:
    #include "asuro.h"
    
    int main(void) {
    	Init()
    		MotorDir(FWD,FWD);
    		MotorSpeed(10,10);
    		while (1) {
    					if (PollSwitch()>0) {MotorDir(OFF,FWD);}
    					else {MotorDir(FWD,FWD);}
    		}
    }
    Ich hatte vor dass der ASURO gerade aus fährt bis er auf ein Hindernis prallt, dann sollte er sich nach links drehen und wieder gerade aus fahren.
    Jedoch hagelt es immer wieder errors -.-
    Hier sind sie:


    C:\Programme\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=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
    test.c: In function `main':
    test.c:7: error: parse error before "while"
    test.c:11:2: warning: no newline at end of file
    make: *** [test.o] Error 1

    > Process Exit Code: 2


    Es kommen andauernd i-welche nervigen parse... fehler :'(

    Könnt ihr mir vll helfen meinen ASURO zum fahren zu bringen?
    DANKE an alle Antworten!

    MFG Kieselstein

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    08.08.2004
    Ort
    Zwolle
    Alter
    61
    Beiträge
    531
    Hallo,

    test.c:7: error: parse error before "while"


    Init() sollte Init(); sein



    test.c:11:2: warning: no newline at end of file

    kein fehler, wenn am ende vom Datei z.B. nur

    }x

    steht,
    x = position deine Maus Cursor am ende vom Datei,
    dann dort nur mal auf die Enter Taste drucken so dass ein 'newline' Karakter zugefugt wird am ende vom Datei und es so aussieht:

    }
    x


    Gruss,

    Henk

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    31
    Beiträge
    4.255
    Nach dem Init() fehlt ein Semikolon...

    Grundsätzlich sollte man bei solchen Fehlermeldung von der beanstandeten Zeile aus nach oben hin alles noch mal genau durchgehen. In den allermeisten Fällen fehlt bloß ein Semikolon oder eine Klammer. Zu beachten ist, dass der Fehler durchaus mehrere Zeilen über der beanstandeten Stelle liegen kann.

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    20.03.2008
    Alter
    25
    Beiträge
    12

    Cool thx!

    Hat tatsächlich nur an dem ";" hinter dem init gelegen :-D
    Ich hatte eig gedacht ich hätte es auch mit semikolon ausprobiert und es habe nicht geklappt. Naja is ja jetzt auch egal!
    und das mit dem

    }
    x

    war am ende doch nicht mehr nötig weiß der geier warum^^

    Danke nochmal!!

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    20.03.2008
    Alter
    25
    Beiträge
    12

    Nochmal ne Frage ;-)

    Hallo Leute!
    Ich habe nochmal eine Frage:
    Wie kann man dies im Code realisieren?

    [flash width=300 height=300 loop=false:711e5bd554]http://kieselstein.ki.funpic.de/asuro.swf[/flash:711e5bd554]

    Klickt bei der Animation mit Rechtsklick auf abspielen!!

    THX an alle Antworten!

  6. #6
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.781
    Blog-Einträge
    8
    Hallo

    Wenn du in der Forumsuche "asuro AND kollision" (ohne ") eingibst kannst du dich ins Thema einlesen. Meist sind die Threads mit vielen Antworten die lehrreichsten...

    Gruß

    mic

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    20.03.2008
    Alter
    25
    Beiträge
    12

    mmh

    Danke für den Tipp leider hab ich nichts sinnvolles gefunden.
    Ich probiere einfach selbst ein bisschen rum und wenns überhaupt nicht klappen sollte schreib ich einfach wieder hier ins Forum

    MFG Kieselstein

    (Vorschläge sind trotzdem noch willkommen )

  8. #8
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.781
    Blog-Einträge
    8
    Hallo

    leider hab ich nichts sinnvolles gefunden
    Oje. Na im Prinzip ist es einfach: Vorwärts fahren bis ein Taster gedückt wird (Achtung! PollSwitch() "lügt" häufig, vor allem wenn die Motoren laufen), dann kurze Zeit drehend rückwärts und anschliesend alles wieder von Vorne.

    Anzumerken wäre noch, dass es der asuro nicht schafft innerhalb des Tastenhubs anzuhalten. Das bedeutet, er knallt immer voll gegen das Hinderniss. Deshalb sind die Taster als Kollisionserkennung die letzte Notbremse. Deutlich besser sind IR- oder Ultraschallabstandsmessungen.

    Mein erster Versuch mit der Hindernisserkennung per Taster sah mal so aus:

    http://www.roboternetz.de/phpBB2/zei...g.php?p=240995

    Gruß

    mic

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    20.03.2008
    Alter
    25
    Beiträge
    12
    So hatte ich das auch gemacht jedoch ist dabei das Problem, dass der Befehl nur ausgeführt wird SOLANGE PollSwitch aktiviert ist.

    So hat das bei mir ausgesehen:
    --> ASURO fährt vorwärts
    --> Hindernis also PollSwitch
    --> ASURO fährt kurz zurück
    --> PollSwitch nicht mehr aktiv also --> wieder gegen das Hindernis

    Ich muss dem ASURO i-wie klar machen das der Befehl rückwärts zu fahren ausgeführt wird wenn PollSwitch gewirkt HAT und nicht nur wenn er gerade noch wirkt

    Ich will bloß verstehen wie das realisierbar ist:
    dann kurze Zeit drehend rückwärts und anschliesend alles wieder von Vorne.
    Ich hoffe du verstehst mein Prob^^

    MFG Kieselstein

  10. #10
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.781
    Blog-Einträge
    8
    Sehe ich das richtig, dir fehlt die Verzögerung? Dann solltest du mal in der asuroanleitung unter Sleep() (Kapitel 9.2.5) nachschauen:

    Code:
    #include "asuro.h"
    
    unsigned int i;
    
    int main(void)
    {
    	Init();
    	while(1)
    	{
    		if(PollSwitch() == 0)
    	   {
    			StatusLED(RED);
    		}
    		else
    		{
         		StatusLED(YELLOW);
    			for(i=0; i<1000; i++) Sleep(72); // bei neueren Libs 36 für 1/1000sec
    		}
    	}
     	return(0);
    }
    Anstelle der StatusLED kommen dann die Motorfunktionen...

    [Edit]
    Weil ich heute unterwegs bin hier noch vorsorglich der Code mit sicherer Tastenabfrage:
    Code:
    #include "asuro.h"
    
    unsigned int i;
    
    int main(void)
    {
    	Init();
    	while(1)
    	{
    		if(PINC & (1<<PC4)) // Tasteneingang direkt abfragen
    	   {
    			StatusLED(RED);
    			MotorDir(FWD,FWD);
    			MotorSpeed(150,150);
    		}
    		else
    		{
         		StatusLED(YELLOW);
    			MotorDir(RWD,RWD);
    			MotorSpeed(0,150);
    			for(i=0; i<1000; i++) Sleep(72); // bei neueren Libs 36 für 1/1000sec
    		}
    	}
     	return(0);
    }

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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