Hallo Weiti
Ich habe dein Program etwas umgestellt:
Deine Version lief mit meinem asuro auch nicht. Msleep() benötigt als Parameter die Zeit in Millisekunden (1/1000). Der wiederholte Aufruf von MotorSpeed() könnte dazu führen, das die PWM-Register nicht richtig funktionieren. Deshalb keine Schleife, sondern erst Motor setzen und dann warten.Code:#include "asuro.h" //#include <stdlib.h> #define taste (!(PINC & (1<<PC4))) // Tastenabfrage #define keine_taste (PINC & (1<<PC4)) void MSleep (int dauer) // 1/1000 sek { int z; for (z = 0; z < dauer; z++) Sleep (36); // bei der orginalen Library muss hier 72 stehen } int main(void) { Init(); StatusLED(RED); // vorwärts bis Hinderniss BackLED(OFF,OFF); MotorDir(FWD,FWD); MotorSpeed(120,120); while (keine_taste); BackLED(ON,ON); // zurück MotorDir(RWD,RWD); MotorSpeed(120,120); MSleep(1080); // 36*30 MotorSpeed(0,0); Msleep(200); MotorDir(RWD,RWD); // drehen MotorSpeed(0,120); MSleep(2000); // 250*36=9000? MotorSpeed(0,0); Msleep(200); BackLED(OFF,OFF); MotorDir(FWD,FWD); // vorwärts bis nächstes Hinderniss MotorSpeed(120,120); StatusLED(YELLOW); while (keine_taste); StatusLED(GREEN); // fertig MotorSpeed(0,0); while (1); return(0); }
Gruß
mic
Weil PollSwitch() nicht immer das erwartete zurückliefertwarum machst du nicht einfach:







Zitieren

Lesezeichen