In das Handbuch habe ich schon oft geschaut... ;-)
Aber über TIMER steht da nix drin...
Und wenn ich ehrlich bin verstehe ich nicht wirklich was in deinem Programm steht...
Habe es mal versucht und bei mir tut sich nichts...
Gruss Dave
Druckbare Version
In das Handbuch habe ich schon oft geschaut... ;-)
Aber über TIMER steht da nix drin...
Und wenn ich ehrlich bin verstehe ich nicht wirklich was in deinem Programm steht...
Habe es mal versucht und bei mir tut sich nichts...
Gruss Dave
Für den Timer sieh Dir die Funktion Sleep() in der asuro.c mal an.
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:/* uses 72kHz timer => Sleep(x) = x/72kHz [sec] */
void Sleep(unsigned char time72kHz) {
count72kHz = 0;
while (count72kHz < time72kHz);
}
Der Code funktioniert jetzt habe den Fehler gefunden.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 Asuro fährt jetzt ungefähr 10Sekunden und bleibt dann stehen.
OK, ich hofe das reicht als Erklärung.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
}
}
Gruß Winne =P~