Für den Timer sieh Dir die Funktion Sleep() in der asuro.c mal an. 
	Code:
	/* uses 72kHz timer => Sleep(x) = x/72kHz [sec] */
void Sleep(unsigned char time72kHz) {
	count72kHz = 0;
	while (count72kHz < time72kHz);
}
 Damit der Timer funktioniert wird alle 27.7777 ms (1/36KHz) ein Interrupt ausgelöst (SIG_OUT_COMPARE2) und die Variable count72KHz um eins erhöht.
	Code:
	volatile unsigned char count72kHz;
/* uses timer2 (36kHz for IR communication */
/* counts falling and rising edge => 36kHz*2 = 72kHz */
SIGNAL (SIG_OUTPUT_COMPARE2) {
	count72kHz ++;
}
 Der Code funktioniert jetzt habe den Fehler gefunden.
Der Asuro fährt jetzt ungefähr 10Sekunden und bleibt dann stehen.
	Code:
	
#include "asuro.h"						// Header für die Funktionen MotorSpeed() Sleep()
//Prototype
void warte(unsigned int zeit);     	// Deklaration für die Funktion warte() in mili Sekunden
int main (void)						// int ist der Rückgabewert der Funktion main
{
 Init();								// Damit der Asuro einwandfrei startet
 MotorSpeed(180,180);					// Motor links und rechts läuft mit 180   max. 255
 warte(10000);                       	// warte 10 Sekunden lang
 MotorSpeed(0,0);                  		// Asuro bleibt stehen 
 while(TRUE);                        	// endlosschleife --> Mach garnix mehr	(Programm Ende)
 return 0;								// Rückgabewert der Funktion main ist 0
}
void warte(unsigned int zeit)			// Funktion warte()
{
 while(zeit--)							// zähle rückwärts bis der Wert 0 ist
 {
  Sleep(72);							// Funktion Sleep() aus der Asuro.h 
 }
}
 OK, ich hofe das reicht als Erklärung. 
Gruß Winne 
						
					
Lesezeichen