- fchao-Sinus-Wechselrichter AliExpress         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 26

Thema: Probleme beim Ausführen/programmieren

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    18.05.2014
    Beiträge
    13

    Probleme beim Ausführen/programmieren

    Hey!

    Ich habe vor ein paar Tagen meinen Asuro zusammengebaut und alles funktioniert super, beim Test gab es keine Probleme
    Heute wollte ich mit dem Programmieren anfangen (bis jetzt habe ich hauptsächlich Python programmiert und ein wenig C++), habe aber jedesmal ein Problem wenn Asuro meinen Code ausführen soll. Ich wollte ein einfaches Programm schreiben, welches Asuro fahren und anhalten lässt wenn er gegen eine Mauer fährt und dabei soll sich die Led Farbe ändern. Das habe ich jetzt auch in allen erdenklichen Möglichkeiten probiert, die Richtige war scheinbar noch nicht dabei. Das Seltsame ist aber, dass der Compiler immer ohne Probleme durchläuft, nur Asuro will das dann nicht. Einmal ist er wenigstens losgefahren, hat dann aber an der Mauer nicht gehalten. Das Problem scheint irgendwie an meiner while Schleife zu liegen, ich habe da aber gerade so viel gelesen und probiert und finde den Fehler nicht, dass ich mich jetzt an Euch wende

    Mein letzter Versuch sieht folgendermaßen aus:

    Code:
    #include "asuro.h"
    
    int main(void)
    {
    	Init();
    	
    	StatusLED(GREEN);
    	
    	MotorDir(FWD,FWD);
    	MotorSpeed(120,120);
    	
    	while(PollSwitch() == 0)
    		{
    			continue;
    		}
    	
    	MotorSpeed(0,0);
    	
    	StatusLED(YELLOW);
    	
    	while(1);
    	return 0;
    }

    Und eine weitere Frage habe ich noch; die Software die mitgeliefert wurde ist ja ziemlich veraltet und das Terminal was benutzt wurde gibt es so gar nicht mehr, gibt es dafür eine gute alternative die ihr mir empfehlen könnt?

    LG,

    Chuck

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    31
    Beiträge
    1.578
    Hi,

    also gleichmal vorneweg, ich habe keinen Asuro und kenne deswegen auch die Funktionen nicht im Detail, aber dein Programm sollte in etwa so aussehen:
    Code:
    #include "asuro.h"
    
    int main(void)
    {
        Init();
        
        StatusLED(GREEN);
        
        MotorDir(FWD,FWD);
        MotorSpeed(120,120);
        
        while(1)
        {
            if(PollSwitch()==1) //Kollision
            {
                MotorSpeed(0,0); //Stop Motors
                StatusLED(RED);
            }
        }
    }
    Ich bin mir nicht sicher, ob die Motoren so korrekt gestoppt werden, aber das weißt du ja sicher.

    Gruß
    Chris

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    18.05.2014
    Beiträge
    13
    Hey Chris!

    Danke für die schneller Antwort, so ähnlich sah auch mal ein Versuch von mir aus, ich habe nur hinter StatusLED(RED); noch ein break; gehangen, aber das ist dann wohl nicht nötig? da hatte der compiler aber auch an dem break gemeckert.
    Ich habe jetzt deinen Code 1:1 kopiert, same procedure as every time, Compiler läuft ohne Probleme durch, ich übertrage es auf Asuro, der will aber nicht und leuchtet rot wie er es immer bei Fehlern macht (deshalb hatte ich Status Led auch auf YELLOW gestellt).

    LG,

    Chuck

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

    Ein möglicher Ersatz für das bei Windows 7/8 nicht mehr verfügbare Hyperterminal könnte z.B. das HTerm sein:
    http://www.der-hammer.info/terminal/

    Oder suchst du dir selbst was im Netz: https://www.google.de/search?q=ersatz+für+hyperterminal

    while(PollSwitch() == 0) ist ganz arg böse! Durch Bauteiletoleranzen sind die Werte von PollSwitch() häufig nicht so wie man es erwartet. Wenn du ein Terminalprogramm gefunden hast, dann schau dir mal die Werte an die PollSwitch() liefert (https://www.roboternetz.de/community...%C3%BCbergeben). Und schau mal, was bei laufenden Antrieben erkannt wird...

    Init();
    StatusLED(GREEN);


    Init() setzt die StatusLED() schon auf grün, vielleicht hast die LED falschrum eingebaut?

    Und noch ein Hinweis: asuro-Programme sollten NIE beendet werden! Das Programm springt dann an irgendeine Stelle im Speicher des asuro und ab dieser Adresse werden die gefunden Bytes als Programm interpretiert. Sicherer ist immer ein Ende mit

    while(1);
    return(0);

    Gruß

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

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    18.05.2014
    Beiträge
    13
    Hey!

    Danke, das Terminal werde ich gleich mal ausprobieren
    oh, okay, dann werde ich das mal tun, in der Anleitung gab es aber glaube ich auch so ähnliche Beispiele. Nö, die Led ist richtig eingebaut, beim Test hast die Hardware einwandfrei funktioniert.Das while 1 return 0 hatte ich auch noch ergänzt, aber macht das bei dem Code oben einen Unterschied? da geht der doch sowieso nicht aus der while schleife raus mit dem motor raus, oder? Auf jeden Fall fängt er bei dem Code oben noch nichtmal an die Räder zu drehen sondern die Lampe ist einfach rot, was sie nach meinem Code gar nicht sein darf. für den Fall dass wegen falscher taster werde PollSwitch() auch so größer als 0 ist habe ich ja extra das gelbe leuchten angefügt um zu sehen dass er die Schleife trotzdem abarbeitet, da kommt er aber ja offensichtlich gar nicht hin.
    Danke für deine Tipps, aber ich verstehe immer noch nicht so ganz warum bei mir dieser Fehler auftritt..hat vielleicht einen ähnlichen Code der bei ihm funktioniert den ich mal bei mir testen kann?

    LG,

    Chuck

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

    Zeig doch noch deine aktuelle Programmvariante. Beim Beispiel aus dem ersten Beitrag liegt das Problem eindeutig bei Pollswitch().

    Das "continue" kannst du dir bei deinem Programm sparen:
    Die continue Anweisung springt weiter zum Anfang der Schleife, überspringt also die Anweisungen, die zwischen continue und dem Schleifenende liegen
    (Von http://www.peace-software.de/ckurs11.html)

    Gruß

    mic

    [Edit]
    Eine alternative Tastenabfrage kann man mit der Überprüfung des Tasten-Eingangspin PC4 ohne ADC durchführen:
    https://www.roboternetz.de/community...l=1#post269681
    Geändert von radbruch (14.06.2014 um 19:36 Uhr)
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  7. #7
    Benutzer Stammmitglied Avatar von Spacy Bar
    Registriert seit
    10.05.2014
    Beiträge
    34
    Die variable i muss schon vor Init()
    deklariert werden, da sonst der Prozessor keinen Speicherplatz für sie reserviert. Die Warnung unten kannst du ignorieren, er beschwert sich nur, dass die Headerdatei signal.h überflüssig
    eingebunden wurde.

    LG
    Spacy Bar

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

    Die Warnung verschwindet, wenn du in asuro.h die Zeile #include signal.h in #include interrupt.h änderst:
    Code:
    #include <avr/io.h>
    #include <avr/interrupt.h>
    //#include <avr/signal.h>
    #include <stdlib.h>
    Vielleicht solltest du nach "Hallo" noch ein LFCR senden:

    SerWrite("Hallo\n\r",7);

    Gruß

    mic
    Bild hier  
    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
    18.05.2014
    Beiträge
    13
    Hey!

    Super, die Warnung ist jetzt weg, danke Jetzt habe ich noch folgende Warnung:

    Code:
    test.c:10: warning: pointer targets in passing argument 1 of 'SerWrite' differ in signedness
    (nur für den Fall, dass es relevant ist)

    der neue Code mit

    Code:
    SerWrite("Hallo\n\r",7);
    führt leider auch nicht zum Erfolg. Die Baudrate (ich nehme an Bits pro Sekunde) steht auf 2400, ja.

    Vielleicht eine blöde Frage, aber kann das irgendwie mit dem Compiler zusammenhängen? Vor allem irritiert mich eben auch, dass die LED nicht gelb leuchtet, da kann man ja beim programmieren nicht so viel falsch machen. Den Selbsttest muss man ja nicht compilieren und da hat es funktioniert.

    Ich hänge mal an, was im Hyper Terminal ankommt.

    Danke für die ganze Mühe!

    LG,

    ChuckKlicke auf die Grafik für eine größere Ansicht

Name:	Asuro_ht.jpg
Hits:	7
Größe:	80,8 KB
ID:	28499

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

    Die Pointerwarnung kam irgendwann mal nach einem Update vom WinAVR. Der zu ändernde Code in asuro.h:
    Code:
    /* function for serial communication */
    void SerWrite(char *data, unsigned char length); // edit by mic 1.4.2011
    Und entsprechend in asuro.c:
    Code:
    /* function for serial communication */
    void SerWrite(char *data, unsigned char length) // edit by mic 1.4.2011
    {
    Parameter für das Terminalprogramm sind 2400Baud, 8Bit, none Parity, 1Stopbit und keine Flußkontrolle. Die 7 Zeichen kommen an, werden aber nicht richtig eingelesen: "Ha_|CoR". Da der Fehler mit jedem Zeichen schlimmer zu werden scheint, tippe ich auf das Stopbit...

    Vor allem irritiert mich eben auch, dass die LED nicht gelb leuchtet, da kann man ja beim programmieren nicht so viel falsch machen.
    Nicht richtig kompilliert? Falsche Datei geflasht? Fehler beim Flashen? Oder der Klassiker beim Notepad: Quellcode nicht gespeichert vor dem Kompillieren. Versuch's doch einfach nochmal:
    Code:
    #include "asuro.h"
    
    int main(void)
    {
        Init();
        StatusLED(YELLOW);
        while(1);
        return 0;
    }
    (ungetestet)

    Gruß

    mic
    Bild hier  
    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

Ähnliche Themen

  1. Probleme beim Programmieren
    Von ActiveRobo im Forum Asuro
    Antworten: 11
    Letzter Beitrag: 26.01.2012, 19:23
  2. Probleme beim Programmieren
    Von robochick im Forum Asuro
    Antworten: 2
    Letzter Beitrag: 09.04.2011, 01:59
  3. Probleme beim Programmieren eines AtMegas
    Von schwerminator im Forum AVR Hardwarethemen
    Antworten: 5
    Letzter Beitrag: 25.03.2008, 15:58
  4. Probleme beim Programmieren (wegen Windows XP???)
    Von DeadDealer im Forum AVR Hardwarethemen
    Antworten: 4
    Letzter Beitrag: 11.01.2007, 15:00
  5. Antworten: 9
    Letzter Beitrag: 14.03.2005, 20:08

Berechtigungen

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

LiFePO4 Speicher Test