- Akku Tests und Balkonkraftwerk Speicher         
Seite 4 von 5 ErsteErste ... 2345 LetzteLetzte
Ergebnis 31 bis 40 von 44

Thema: Problem beim Flashen

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

    E-Bike
    Hallo

    Hauptfehler: Sleep(500);

    Sleep() erwartet einen Byte-Parameter zwischen 0 und 255. In asuro.c sollte #include <signal.h> durch #include <interrupt.h> ersetzt werden weil signal.h veraltet ist.

    Code für eine Sekunde Pause:

    int i;
    for(i=0; i<1000; i++) Sleep(72); // Sleep(72) dauert eine Millisekunde

    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!

  2. #32
    Neuer Benutzer Öfters hier
    Registriert seit
    22.10.2009
    Beiträge
    28
    okay danke jetzt gehts

  3. #33
    Neuer Benutzer Öfters hier
    Registriert seit
    22.10.2009
    Beiträge
    28
    hey noch mal ne frage wies einer ob oder wo es eine Referenz Liste für den asuro gib mit Parametern

  4. #34
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  5. #35
    Neuer Benutzer Öfters hier
    Registriert seit
    22.10.2009
    Beiträge
    28
    danke schön

  6. #36
    Neuer Benutzer Öfters hier
    Registriert seit
    22.10.2009
    Beiträge
    28
    hey ho ich hab da noch ma so nenn Problem hoffentlich könnt ihr mir weiter helfen also ich wollte nenn Programm schreiben das guckt ob es eine Kollision gibt aber es funktioniert nicht so ganz.
    also wenn ich das was jetzt aus kommentiert ist hin schreibe und die Funktion motorFWD aus kommentiere dann funktionieren die Tasten alle aber sonst fährt er die ganze Zeit nach vorne.
    wo ist mein Fehler?
    Code:
    #include "asuro.h"
    
    int main(void)
    {
        Init();
        int i;
        MotorSpeed(0,0);
        MotorDir(FWD,FWD);
    
    while(1)
    {
    
    
        unsigned char sw;
        //MotorDir(FWD,FWD);
        //MotorSpeed(0,0);
        sw = PollSwitch();
        StatusLED(OFF);
        FrontLED(OFF);
        BackLED(OFF,OFF);
    
    
        if (sw & 0x01)
            Back();
        else if (sw & 0x02)
            Back();
        else if (sw & 0x04)
            Back();
        else if (sw & 0x08)
            Back();
        else if (sw & 0x10)
            Back(); 
        else if (sw & 0x20)
            Back();
    
            MotorFWD();
           }
    return 0;
    }
    
    void MotorFWD()
    {
        MotorDir(FWD,FWD);
        MotorSpeed(120,120);
        FrontLED(ON);
        return 0;
      }
    
    void Turn (void)
    {
         MotorDir(FWD,RWD);
         MotorSpeed(120,120);
         BackLED(ON,ON);
         StatusLED(RED);
         FrontLED(ON);
         pSleep(350);
    
         return 0;
    }
    void Back (void)
    {
         MotorDir(RWD,RWD);
         MotorSpeed(120,120);
         BackLED(ON,ON);
         StatusLED(GREEN);
         FrontLED(ON);
         pSleep(500);
    
         Turn();
       return 0;
    }
    
    void pSleep(int p)
    {
         int i;
         for(i=0;i<=p;i++) { Sleep(72); }
         return 0;
    }

  7. #37
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.170
    Ich verstehe deine problem beschreibung nicht.

    Was macht er mit das obene program. Und was macht er mit MotorFWD auskommentiert und MotorDir und MotorSpeed wieder eingestellt.

    Auserdem söllte die
    Code:
    unsigned char sw;
    nicht (in diesen fall) im inneren der While-schleife stehen. Variabelen sind nur gultig zwischen der gleich daneben stehenden {} klammern. In dein program wird sw jede schleife durchlauf wieder auf neu deklariert. Ich denke nicht das es die ursache ist deiner problem. Aber schön ist es nicht.

    Die ganze if-statement kan man auch einkurzen wen er das selbe reagieren mus auf die taster:
    Code:
    if (sw & 0x3F) /* irgend einer taster? */
      Back(); 
    else MotorFWD();
    Die tastertest mit PollSwitch ist aber empfindlich fur störung von den motoren. Ein einfache lösung ist mehrfach die PollSwitch abfragen, und nur darauf reagieren wan der wert stabiel ist.

    Code:
    sw = PollSwitch();
    if (sw==PollSwitch()) && (sw & 0x3F)  Back();    /* Auwa, meine nase tut wirklich weh! Doppelt gechecked. */
    else MotorFWD();
    ...

  8. #38
    Neuer Benutzer Öfters hier
    Registriert seit
    22.10.2009
    Beiträge
    28
    Hey danke für deine Hilfe hab das Programm noch mal nenn bisschen umgeändert und das mit dem PollSwitch geändert jetzt funktioniert es.

  9. #39
    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

    Schön, dass es nun funktioniert. Könntest du uns noch die aktuelle Version deines Programms zeigen?

    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!

  10. #40
    Neuer Benutzer Öfters hier
    Registriert seit
    22.10.2009
    Beiträge
    28
    Natürlich vll hat ja jemand noch eine Verbesserung Vorschlag dafür.
    Ich arbeite grade schon an der Odometrie.
    Code:
    int main(void)
    {
        Init();
        MotorSpeed(0,0);
        MotorDir(FWD,FWD);
        unsigned char sw;
        MotorFWD();
    
    while(1)
    {
    
        sw = PollSwitch();
    
        if (sw==PollSwitch() && (sw & 0x3F))  { Back(); }
        else { MotorFWD(); }
    
    }
    return 0;
    }
    
    
    void MotorFWD(void)
    {
         MotorDir(FWD,FWD);
         MotorSpeed(120,120);
         FrontLED(ON);
         return 0;
      }
    
    void Turn (void)
    {
         MotorDir(FWD,RWD);
         MotorSpeed(120,120);
         pSleep(350);
         StatusLED(OFF);
         FrontLED(OFF);
         BackLED(OFF,OFF);
         return 0;
    }
    
    void Back (void)
    {
     
         MotorDir(RWD,RWD);
         MotorSpeed(120,120);
         BackLED(ON,ON);
         StatusLED(GREEN);
         FrontLED(ON);
         pSleep(500);
    
         Turn();
       return 0;
    }
    
    void pSleep(int p)
    {
         int i;
         for(i=0;i<=p;i++) { Sleep(72); }
         return 0;
    }

Seite 4 von 5 ErsteErste ... 2345 LetzteLetzte

Berechtigungen

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

Labornetzteil AliExpress