-
        

Ergebnis 1 bis 8 von 8

Thema: ASURO: Problem bei erster Programmierung

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    15.10.2005
    Alter
    34
    Beiträge
    15

    ASURO: Problem bei erster Programmierung

    Anzeige

    Hallo

    Ich habe seit ein paar Tagen einen Asuro. Der Selbsttest ergab nur ein kleines Problem mit einem der Taster (K2). Siehe auch dieser Thread:
    http://www.roboternetz.de/phpBB2/viewtopic.php?t=13516

    Nun habe ich gerade das erste Programm test.hex geflasht. Bei der Übertragung gab es keine Probleme und die Status-LED leuchtete nach der Übertragung tatsächlich grün.

    In der Anleitung steht:

    War der Vorgang erfolgreich, muss ASURO aus- und erneut eingeschaltet werden, um das
    Programm zu starten. Das vor kurzem geschriebene Programm wird ausgeführt und die grüne
    LED erstrahlt in hellem Glanz.
    Als ich den Asuro jedoch aus- und wieder einschaltete, leuchtete die LED nicht mehr grün sondern orange.

    Dann habe ich einfach mal das nächste Programm in der Anleitung ausprobiert. Also:

    #include “asuro.h”
    int main(void) {
    Init();
    StatusLED(RED);
    while(1);
    return 0;
    }

    Nach dem flashen leuchtet die Status-LED auch tatsächl rot. Aber nach einem Neustart des Roboter leuchtet die Diode wieder orange....wie beim vorherigen Versuch.

    Was bedeutet das ? Was soll ich davon halten ?

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    15.10.2005
    Alter
    34
    Beiträge
    15
    Entwarnung:

    Sorry, meine Frage hat sich wohl erledigt.

    Das orange Aufleuchten der LED war die Bootphase !

    Ich habe folgendes in der Anleitung übersehen:

    Schaltet man ASURO ein, leuchtet die Status-LED für ca.
    1 Sekunde zweifarbig auf. Dies ist die “Boot-Phase”. ASURO schaut nach, ob der PC neue
    Software für ihn bereitstellt. Diese wird gegebenenfalls geladen. Nach Aus- und Wiedereinschalten
    wird diese dann gestartet.
    Allerdings ist die Anleitung hier nicht ganz korrekt. Bei mir startet das Programm zumindest sofort nach dem Flashen, nicht erst nach dem Neustart.
    Allerdings hat mich das orange Aufleuchten der Status-LED in "Panik" versetzt, so daß ich sofort den Roboter wieder ausgeschaltet habe und nicht gesehen habe daß die LED danach tatsächlich korrekt in rot oder grün leuchtet.
    Außerdem leuchten bei mir in der Boot-Phase auch die beiden Back-LEDs schwach auf. Das steht so auch nicht in der Anleitung.

    Meine Frage hat sich aber wohl erledigt.
    Sorry.

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    04.04.2005
    Ort
    Hamburg
    Alter
    29
    Beiträge
    826
    Ja. Ok. Als Ergänzung:

    Das mit den BackLEDs ist wirklich normal und kommt eigentlich immer vor.
    www.subms.de
    Aktuell: Flaschcraft Funkboard - Informationssammlung

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    15.10.2005
    Alter
    34
    Beiträge
    15
    Hallo

    Ich habe jetzt noch ein Problem.
    Wie oben schon gesagt, einer meiner Taster funktioniert nicht ganz korrekt, was mir schon beim anfänglichen Selbsttest aufgefallen ist.

    Laut Anleitung:

    Die Taster (K1-K6) werden ausgewertet. Diese Funktion liefert ein Byte. In diesem Byte ist die
    Information enthalten, welche Taster gedrückt wurden. Dabei setzt Taster 1 das 5. Bit,
    Taster 6 das 0.
    Bit.
    Bit0 ( 1 ) -> K6
    Bit1 ( 2 ) -> K5
    Bit2 ( 4 ) -> K4
    Bit3 ( 8 ) -> K3
    Bit4 ( 16 ) -> K2
    Bit5 ( 32 ) -> K1
    Mein Taster K2 liefert aber irgendeinen anderen Wert. Nur welchen?

    Ich bin leider nicht der erfahrenste C-Programmierer.
    Ich aber habe schon einiges ausprobiert.

    Etwa:

    Code:
    #include "asuro.h"
    
    int main(void)
    {
    	Init();
            unsigned char taste;
            
    
            while(1)
           {
           taste = PollSwitch();
           if ( PollSwitch() == 32 )
              {
               SerWrite("K1",2);
               SerWrite (taste,2);
               }
            else if ( PollSwitch() == 16 )
               {
                SerWrite ("K2",2);
                SerWrite (taste,2);
                }
             else if ...............(und so weiter)............
    
    	
    	}
    	return 0;
    }
    Es soll also die Bezeichnung des Tasters (K1, K2,...) und sein Wert (32, 16,.....) ausgegeben werden.

    Drücke ich K1 wird auch K1 auf dem Hyperterminal ausgegeben, allerdings gefolgt von wirren Zeichen, anstatt dem gewünschten Wert.

    Drücke ich K2 passiert gar nix......wie gesagt, K2 gibt irgendeinen "falschen" Wert aus. Aber welchen ?????
    Wie komme ich an diesen Wert ?

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    29.04.2005
    Ort
    Weilburg
    Beiträge
    676
    Schau doch mal was bei der Taste kommt:

    Code:
           taste = PollSwitch(); 
           PrintInt(taste);
    wenn ein dener asuro.lib der PrintInt fehlt:

    Code:
    void PrintInt(int wert)
    {  	char text[6]="      ";
    	itoa(wert,text,10);
    	SerWrite(text,5);
    }
    Prostetnic Vogon Jeltz

    2B | ~2B, That is the Question?
    The Answer is FF!

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    15.10.2005
    Alter
    34
    Beiträge
    15
    Hallo

    Vielen Dank für die Hilfe.
    Allerdings bin ich vor ein paar Minuten selbst auf die Lösung mit der itoa-Funktion gekommen.
    Hatte nur noch nicht die Zeit es hier zu posten.

    Der Wert von K2 ist nicht 16 sondern 15.

    Ich habe sogar eine Vermutung warum. Bei der Montage des Asuro sind mir ein paar Widerstande heruntergefallen. Einen davon habe ich nicht mehr gefunden.....einen 2kΩ-Widerstand.
    Nun mußte ich für den R32 einen 2,2kΩ-Widerstand einlöten, da ich keinen anderen auftreiben konnte.
    Ich schätze mal daß es daran liegt.

    Nochmal danke für die Hilfe.

    Gruß,
    Amaris

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    19.10.2004
    Ort
    Rheinstetten
    Alter
    34
    Beiträge
    357
    Also ich würde den Widerstand auf jeden Fall ersetzen.

    Wenn der Taster wirklich 15 zurückliefert, hast du bei etwas komplexeren Kollisionsabfragen Probleme.

    Du kannst z.B. nicht entscheiden, ob nur K2 gedrückt wird, oder etwa K3, K4, K2 und K1 zusammen (was zwar etwas unwahrscheinlich, aber nicht unmöglich ist, z.B. wenn du gegen eine Schaumstoffwand fährst *gg*)

    Außerdem gibt es dann mit dem berechnen der gedrückten Tasten Probleme, wenn K2 und eine andere Taste gedrückt werden.
    Unwissenheit ist ein Segen

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    15.10.2005
    Alter
    34
    Beiträge
    15
    Ja, da hast du wohl recht.

    Ich werde bei Gelegenheit mal einen anderen Widerstand besorgen. Werde irgendwann sowieso mal die Erweiterungsplatine und Ultraschall-Sensor montieren, dann kann ich das auch gleich mitmachen.

Berechtigungen

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