Hi reini89,
das liegt daran, dass du die Pollswitch() - Funktion mehrmals ausführen musst und damit sich der Kondensator C7 entlädt. Ist ein altes Leiden das Asuro.
Es gibt hierzu schon viele Beträge im Forum.
Hallo,
ich habe mir schon einige Beiträge hier durchgelesen und versucht, mein Problem so zu lösen, allerdings habe ich es nicht ganz verstanden. Mein Problem ist, dass der Asuro sich nach einer Tasterbetägtigung dreht, jedoch dann nicht aufhört sich zu drehen, sondern die Drehung noch einige Male öfter macht. Im Forum habe ich gelesen, dass es etwas mit dem Kondensator zu tun haben könnte. Wie kann ich meinen Quelltext nun so verändern, dass das Problem nicht mehr auftritt?
Code:#include "asuro.h" #define HALT 100 //richtiges Programm mit Poll int main(void) { Init(); unsigned int Ftrans[2]; unsigned char abgrund = FALSE; unsigned char t; FrontLED(ON); MotorDir(FWD,FWD); while(1) { t = PollSwitch(); MotorDir(FWD,FWD); LineData(Ftrans); if(!(abgrund) && (t==0)) { LineData(Ftrans); if (Ftrans[1] > Ftrans[0]) { MotorSpeed(90,230); BackLED(OFF,ON); StatusLED(GREEN); abgrund = FALSE; } else if((Ftrans[0] < HALT) && (Ftrans[1] < HALT)) { MotorDir(BREAK,BREAK); MotorSpeed(0,0); StatusLED(RED); abgrund=TRUE; } else { MotorSpeed(230,90); BackLED(ON,OFF); StatusLED(YELLOW); abgrund = FALSE; } } else if(abgrund) { MotorDir(FWD,FWD); MotorSpeed(120,120); Msleep(400); MotorSpeed(140,0); Msleep(1400); abgrund=FALSE; } else if(t>0) { MotorDir(RWD,RWD); MotorSpeed(185,0); Msleep(1100); MotorDir(BREAK,BREAK); MotorSpeed(0,0); abgrund=FALSE; } } while(1) return 0; }
Grüße Markus
Hi reini89,
das liegt daran, dass du die Pollswitch() - Funktion mehrmals ausführen musst und damit sich der Kondensator C7 entlädt. Ist ein altes Leiden das Asuro.
Es gibt hierzu schon viele Beträge im Forum.
Hallo Markus
Es sind (meiner Meinung nach) eigentlich zwei Probleme die beim PollSwitch() auftreten. Zum einen können die ermittelten Werte durch Bauteilestreuung (oder falsche Bestückung) vom Soll abweichen. Dagegen hilft eine Anpassung der Tastenkalibierung in der Library (bei Versionen unter 2.7?) Die Formel dazu findet man am Ende der Funktion in der Datei asuro.cich habe mir schon einige Beiträge hier durchgelesen und versucht, mein Problem so zu lösen, allerdings habe ich es nicht ganz verstanden.
Zweites Problem sind die Störungen durch laufende Motoren bei der Abfrage. Diese kann man meist durch mehrfaches Einlesen der Werte und Vergleich unterdrücken. Ein einfacher Ansatz zur Tastenabfrage (es könnte auch ein falsch erkannter Abgrund Ursache für das Drehen sein):
else if( (t>0) && (t==PollSwitch()) )
Nur wenn das zweite Einlesen den selben Wert wie t ergibt dreht der asuro (nicht getestet, weil mein asuro noch Urlaub hat ;)
Wie pinsel schreibt, gibt es zu diesem Thema aber mehrere Theorien...
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!
Lesezeichen