- 3D-Druck Einstieg und Tipps         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: Es leuchtet nur die Status-LED beim ASURO

  1. #1
    Benutzer Stammmitglied Avatar von Spacy Bar
    Registriert seit
    10.05.2014
    Beiträge
    34

    Es leuchtet nur die Status-LED beim ASURO

    Anzeige

    Praxistest und DIY Projekte
    Hallo Leute,

    immer wenn ich neue Programme auf den ASURO flashe und ihn dann anschließend starte leuchtet die Status-LED grün und der ASURO steht, obwohl das Programm etwas völlig anderes vorsieht. Ich hab schon versucht andere Programme darauf zu flashen aber überall das gleiche, auch wenn´s vorher funktioniert hatte.
    Kann sich das jemand erklären? Am Prozessor kann es eigentlich auch nicht liegen, mein ASURO ist nämlich noch neu.
    Bei Ideen bitte melden!

    LG
    Spacy Bar

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    13.09.2010
    Ort
    Bad Nenndorf
    Beiträge
    159
    Schon mal versucht den "Self Test" nochmal drauf zu Flashen?

  3. #3
    Benutzer Stammmitglied Avatar von Spacy Bar
    Registriert seit
    10.05.2014
    Beiträge
    34
    Zitat Zitat von robots4-ever Beitrag anzeigen
    Schon mal versucht den "Self Test" nochmal drauf zu Flashen?
    Hab´s grade versucht. Der Selbsttest klappt soweit. Habe danach eins der unkomplizierten Programme darauf geflasht, auch kein Problem. Dann habe ich aber eins der komplexeren Programme geflasht und da hatte ich den Salat: Wieder nur die Status-LED, wieder keinen Mucks vom Motor, den Back-LED´s und auch nicht von der Front-LED.
    Bin den Programmcode nochmal durchgegangen, auch keine Probleme. Daran liegt´s also nicht.

    LG
    Spacy Bar

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    13.09.2010
    Ort
    Bad Nenndorf
    Beiträge
    159
    Okey

    was definierst als "Komplex" kannst du mal eine Beispiel nennen/Posten?

  5. #5
    Benutzer Stammmitglied Avatar von Spacy Bar
    Registriert seit
    10.05.2014
    Beiträge
    34
    Mit komplex meine ich Programme mit mehreren Funktionen, mehr Fallunterscheidungen/Verzweigungen und generell längere Programme.

    LG
    Spacy Bar

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.170
    Ist dein geänderte Program auch gespeichert für das Kompilieren? Ist die Hex datei auch von ein wesentliche andere Datum oder Zeitpunkt. Oder kann es sein das du jedes mal die Originalen FirstTry Beispiel zu den Asuro Flasht? Leider werden sie allen Test.hex genannt durch die Aufbau von das Makefile.

    Wenn das kompilieren geklappt hat, kannst du die Nahm der Hex-datei ohne Problemen nach Wunsch andern. Zbs. mit Version-nummer.

    Du wurdest nicht die erste sein die das vergessen ist.
    Geändert von Valen (06.06.2014 um 15:26 Uhr)

  7. #7
    Benutzer Stammmitglied Avatar von Spacy Bar
    Registriert seit
    10.05.2014
    Beiträge
    34
    Das Programm war gespeichert, der FirstTry ist es nicht, da ich die neu generierte Datei immer direkt umbenenne.

    LG
    Spacy Bar

  8. #8
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.170
    Ok, dann bitte las den Code sehen. Vielleicht geht es am Anfang in einer Endlos-schleife und komt nicht wieder aus den Koma.

    [edit]Auch schon mal fertige Hex-dateien von zbs. Arexx-Henk ausprobiert? http://home.kpn.nl/h.van.winkoop/Asu...uSfwPagFrm.htm
    Geändert von Valen (06.06.2014 um 15:39 Uhr)

  9. #9
    Benutzer Stammmitglied Avatar von Spacy Bar
    Registriert seit
    10.05.2014
    Beiträge
    34
    Hier der Quellcode (Vorsicht, Lang!):
    Code:
    #include "asuro.h"
    
    unsigned char right;
    unsigned char left;
    unsigned char time;
    unsigned char dir;
    
    void motorcontrol(unsigned char dir, unsigned char left, unsigned char right, unsigned char time){
    	int counter = 0;
    	if(dir == 2){
    		MotorDir(FWD,FWD);
    	}
    	else if(dir == 1) {
    		MotorDir(RWD,RWD);
    	}
    	else if(dir == 0){
    		MotorDir(BREAK,BREAK);
    	}
    	MotorSpeed(left,right);
    	if(left+10 > right){
    		BackLED(ON,OFF);
    	}
    	else if(left+10 < right){
    		BackLED(OFF,ON);
    	}
    	else{
    		BackLED(OFF,OFF);
    	}
    	do{
    		Sleep(255);
    		counter++;
    	}
    	while(time >= counter);
    }
    
    int switchcontrol(){
    	if(PollSwitch()==0){
    		dir = 2;
    		right = 255;
    		left = 245;
    		time = 0;
    		motorcontrol(dir, left, right, time);
    		return 0;
    	}
    	else if(PollSwitch()==32){
    		dir = 1;
    		right = 255;
    		left = 245;
    		time = 255;
    		motorcontrol(dir, left, right, time);
    		dir = 2;
    		right = 200;
    		left = 255;
    		time = 255;
    		motorcontrol(dir, left, right, time);
    		return 0;
    	}
    	else if(PollSwitch()==16){
    		dir = 1;
    		right = 255;
    		left = 245;
    		time = 255;
    		motorcontrol(dir, left, right, time);
    		dir = 2;
    		right = 175;
    		left = 255;
    		time = 255;
    		motorcontrol(dir, left, right, time);
    		return 0;
    	}
    	
    	else if(PollSwitch()==8){
    		dir = 1;
    		right = 0;
    		left = 245;
    		time = 223;
    		motorcontrol(dir, left, right, time);
    		dir = 2;
    		right = 255;
    		left = 0;
    		time = 223;
    		motorcontrol(dir, left,right,time);
    		return 0;
    	}
    	else if(PollSwitch()==4){
    		dir = 1;
    		right = 255;
    		left = 0;
    		time = 223;
    		motorcontrol(dir, left, right, time);
    		dir = 2;
    		right = 0;
    		left = 245;
    		time = 223;
    		motorcontrol(dir, left, right, time);
    		return 0;
    	}
    	else if(PollSwitch()==2){
    		dir = 1;
    		right = 255;
    		left = 245;
    		time = 255;
    		motorcontrol(dir, left, right, time);
    		dir = 2;
    		right = 255;
    		left = 175;
    		time = 255;
    		motorcontrol(dir, left, right, time);
    		return 0;
    	}
    	else if(PollSwitch()==1){
    		dir = 1;
    		right = 255;
    		left = 245;
    		time = 255;
    		motorcontrol(dir, left, right, time);
    		dir = 2;
    		right = 255;
    		left = 200;
    		time = 255;
    		motorcontrol(dir, left, right, time);
    		return 0;	
    	}
    	else if(PollSwitch()>32){
    		dir = 1;
    		right = 255;
    		left = 245;
    		time = 255;
    		motorcontrol(dir, left, right, time);
    		motorcontrol(dir, left,right, time);
    		motorcontrol(dir, left, right, time);
    		dir = 2;
    		right = 255;
    		left = 0;
    		time = 200;
    		motorcontrol(dir, left, right, time);
    		return 0;
    	}
    }
    	
    int statuscontrol(){
    	StatusLED(GREEN);
    	int retval;
    	SerWrite("Programm startet!\n\r",21);
    	while(1){
    		retval = switchcontrol();
    		if(retval == 0){
    			SerWrite("Alles in Ordnung!\n\r",21);
    			BackLED(OFF,OFF);
    		}
    		else if(retval==1){
    			SerWrite("Steuerungsfehler!\n\r",21);
    			break;
    		}
    		else {
    			SerWrite("Unbekannter Fehler!\n\r",22);
    			dir = 0;
    			right = 0;
    			left = 0;
    			time = 0;
    			motorcontrol(dir, right, left, time);
    			BackLED(OFF,OFF);
    			break;
    		}
    	}
    	while(1){
    		StatusLED(RED);
    		dir = 0;
    		right = 0;
    		left = 0;
    		time = 0;
    		motorcontrol(dir, right, left, time);
    		BackLED(OFF,OFF);
    		SerWrite("Ende!\n\r",8);
    		while(1){
    			Sleep(255);
    		}
    	}
    	return 0;
    }
    	
    int main(void){
    	Init();
    	while(1){
    		int statuscontrol();
    	}
    	return 0;
    }
    Das ist ein Beispiel, aber bei mehreren anderen Programmen gibt´s das Problem auch.

    LG
    Spacy Bar

  10. #10
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.170
    Wenn ich das Programm Kompiliere bekomme ich verschiedene Warnungen:

    test.c:36: warning: function declaration isn't a prototype
    test.c:141: warning: function declaration isn't a prototype
    test.c: In function 'statuscontrol':
    test.c:144: warning: pointer targets in passing argument 1 of 'SerWrite' differ in signedness
    test.c:148: warning: pointer targets in passing argument 1 of 'SerWrite' differ in signedness
    test.c:152: warning: pointer targets in passing argument 1 of 'SerWrite' differ in signedness
    test.c:156: warning: pointer targets in passing argument 1 of 'SerWrite' differ in signedness
    test.c:174: warning: pointer targets in passing argument 1 of 'SerWrite' differ in signedness
    test.c: In function 'main':
    test.c:185: warning: function declaration isn't a prototype
    test.c: In function 'switchcontrol':
    test.c:139: warning: control reaches end of non-void function
    Dein Anruf von statuscontrol in dem main While-schleife ist merkwurdig. (Das findet den Kompiler auch: test.c:185) Ich vermute den Kompiler seht das als ein Funktion Deklaration, und nicht den Anruf davon. Und das wurde dann als ein nichts machende Endlos-schleife Funktionieren. Las das "int" dort mal weg. Ich kann das nun nicht auf meine Asuro testen weil die Serielle Verbindung nicht funktioniert.

    Wenn das nicht die Mangel ist, dan gibt es vielleicht doch ein Logik-fehler in dein statuscontrol und switchcontrol Funktionen. Jedenfalls solltest du wenigstens Serielle Daten bekommen von dein Asuro.

    In statuscontrol wird erst den Statusled auf Grün gesetzt.
    Dann "Programm startet!" gesendet zu den Serielle Verbindung.
    Dann fangt ein Endlos-schleife an
    den return-wert von den switchcontrol Funktion wird gespeichert im Variabele retval.
    Aber diesen Funktion wird immer 0 zurück geben.
    Und deshalb auch immer "Alles in Ordnung!" nach einander senden.
    Aus diesen Endlos-schleife wird es nie rauskommen.

    Also, kein Motor oder LED Leben-symptomen. Aber Serielle Daten sollen doch raus kommen.

    - - - Aktualisiert - - -

    Notiz über PollSwitch: Diese Funktion liefert bei viele Asuro ungenaue werten zurück. Dazu gibt es ein Korrektion wert in den Förmel von PollSwitch in dem Datei Asuro.c. Auch wenn den Motoren drehen und plötzlich abgeschaltet werden kann es Falscher Werten ausgeben. Ich hoffe du hast das erst richtig getestet.

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. Antworten: 3
    Letzter Beitrag: 08.09.2008, 13:35
  2. Status-LED leuchtet nicht grün
    Von jeffreydj im Forum Asuro
    Antworten: 30
    Letzter Beitrag: 12.02.2007, 21:39
  3. Programm-probleme | Nur Status-LED leuchtet - Gelöst
    Von E-T im Forum Sonstige Roboter- und artverwandte Modelle
    Antworten: 11
    Letzter Beitrag: 03.04.2006, 16:23
  4. Asuro Status LED nur rot + Buch Frage
    Von MCMaci im Forum Asuro
    Antworten: 5
    Letzter Beitrag: 05.11.2005, 19:31
  5. Antworten: 5
    Letzter Beitrag: 11.08.2005, 21:49

Stichworte

Berechtigungen

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

Labornetzteil AliExpress