-         

Ergebnis 1 bis 6 von 6

Thema: Probleme mit Sleep()

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    05.08.2007
    Beiträge
    6

    Probleme mit Sleep()

    Anzeige

    Hallo alle zusammen.
    Ich habe seit gestern meinen Asuro fertig gebaut.
    Der Selbsttest und einige Beispielprogramme funktionieren auch. Jedoch funktionieren einige Tests von mir nicht. Ich hoffe ihr könnt mir helfen:
    Code:
    #include "asuro.h"
    int main(void)
    {
       Init();
       StatusLED(GREEN);
       while (1)
       {
       FrontLED(ON);
       Sleep(32000);
       FrontLED(OFF);
       Sleep(32000);
       }
        return 0;
    }
    Bei diesem Programm leuchtet die StatusLED grün und die FrontLED dauerhaft. Blinkt also nicht.
    Dann habe ich ein Code geschrieben um den Zeitbeerich einfach mal auszutesten, aber auch kein blinken zu erkennen.
    Code für Zeittest:
    Code:
    #include "asuro.h"
    int main(void)
    {
       Init();
       StatusLED(GREEN);
       int i;
       for (i=1; i<32000; i++)
       {
       FrontLED(ON);
       Sleep(i);
       FrontLED(OFF);
       Sleep(i);
       }
        return 0;
    }
    Hoffe ihr könnt mir helfen.
    Chris

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    03.07.2007
    Beiträge
    349

    Re: Probleme mit Sleep()

    Zitat Zitat von xchrisx
    Hallo alle zusammen.
    Ich habe seit gestern meinen Asuro fertig gebaut.
    Der Selbsttest und einige Beispielprogramme funktionieren auch. Jedoch funktionieren einige Tests von mir nicht. Ich hoffe ihr könnt mir helfen:
    Code:
    #include "asuro.h"
    int main(void)
    {
       Init();
       StatusLED(GREEN);
       while (1)
       {
       FrontLED(ON);
       Sleep(32000);
       FrontLED(OFF);
       Sleep(32000);
       }
        return 0;
    }
    Bei diesem Programm leuchtet die StatusLED grün und die FrontLED dauerhaft. Blinkt also nicht.
    Dann habe ich ein Code geschrieben um den Zeitbeerich einfach mal auszutesten, aber auch kein blinken zu erkennen.
    Code für Zeittest:
    Code:
    #include "asuro.h"
    int main(void)
    {
       Init();
       StatusLED(GREEN);
       int i;
       for (i=1; i<32000; i++)
       {
       FrontLED(ON);
       Sleep(i);
       FrontLED(OFF);
       Sleep(i);
       }
        return 0;
    }
    Hoffe ihr könnt mir helfen.
    Chris
    Sleep() erwartet einen unsigned char als Übergabeparameter, du darfst also maximal 255 der Funktion übergeben => Sleep(255).
    Sleep(255) dauert 255/36 ms, also etwa 7ms. Um nun 1 Sekunde zu warten musst du die Funktion Sleep(255) 142mal wiederholen.

    Um nun die FrontLED 10mal im Sekundentakt blinken zu lassen kannst du folgenden Code verwenden:

    Code:
    int main(void)
    {
    
    	Init();
    
    	int n=0,m=0;
    	
    
    	for(n=0;n<10;n++)
    	{
    		FrontLED(ON);
    		for(m=0;m<142;m++)
    			Sleep(255);
    		FrontLED(OFF);
    		for(m=0;m<142;m++)
    			Sleep(255);
    	}
    
        while(1);
        return 0;
    }
    Grüße,
    Harri

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    05.08.2007
    Beiträge
    6
    Danke.
    Ev. sollte ich die Doku der Funktionen genauer durchlesen!

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    05.07.2007
    Beiträge
    44
    Hallo

    Ich Glaube mit der Orginal Sleep Funktion, kann man nur eine
    Verzögerung von 3,5 mili Sekunden erreichen.
    Die Variable count72khz wird von der Interrupt Routine
    für den Timer / Counter 2 mehr als 72000 mal pro Sekunde
    hochgezählt.

    Mfg
    A.Hoffmann

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    08.08.2007
    Ort
    Iffeldorf
    Beiträge
    14
    Ich wuerde dir auch noch raten die neueste Asuro-Library zu installieren (Version 2.70rc3). In ihr gibt es naemlich die Funktion Msleep() mit der du die Wartezeit in Millisekunden angeben kannst. Damit sparst du dir die ganzen for Schleifen und das Programm wird uebersichtlicher.

    Gruss
    NATHAN

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    05.08.2007
    Beiträge
    6
    hab mir schon selbst ne funktion dafür geschrieben.
    hab mir den asuro hauptsächlich geholt um programmieren zu üben.

Berechtigungen

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