PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tasterempfindlichkeit von Asuro ?? Softwarefehler ?



darkshape
07.01.2007, 22:23
Hallo,

hab soeben mein erstes eigenes Asuro-Programm fertiggestellt.
Hab aber noch ein paar kleine Problemchen.

Erste frage - wenn ich Asuro über den Seriellen IR-Programmer flashe,
prüft der dann ob alles richtig ist, oder schreibt der einfach rein ?
(nur mal so interessehalber)

Mein Problem: Mein Asuro folgt der Software und fährt geradeaus.
Bei kollision fährt er zurück und wendet, fährt dann geradeaus weiter.
plötzlich fährt er aber wieder zurück (ohne kollison) - rein willkürlich.

sind die taster sehr empfindlich ? (der boden ist uneben) oder ist das der kondensator ?

hier mal mein code:



#include "asuro.h"


int drive(void)
{
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(140,140);
}

int crash(void)
{
StatusLED(YELLOW);
MotorDir(RWD,RWD);
//MotorSpeed(80,120);
int i;
for (i=0; i<1000; i++)
{
Sleep(255);
}
}

int main(void)
{
Init();
unsigned char taste;

while (1)
{

taste = PollSwitch();
SerWrite(taste,1);
if (taste == 0) {drive();}
else
{crash();}
}


crash();
while(1);
return 0;
}


In der Haputschleife hab ich eine Funktion, die den Wert der Tasters
seriell ausgeben soll. BEVOR diese funktion drin war, is er nur rückwärts gefahren. seit sie drin ist, fährt er vorwärts - was mir vollkommen unerklärlich ist....

jemand ne idee ?

vielen dank...

grüsse,
henning[/code]

darkshape
07.01.2007, 22:52
Nachtrag:
Wenn ich ihn frei in der Luft halte, tritt kein Problem auf. Kann ihn
auch schütteln etc... nix.
aber wenn ich eines der räder (egal welches) blockiere, geht er auch
öfters in den rückwärtsgang.
Reagiert der PollSwitch auch auf Radblockeirungen ? eher weniger, oder ?

hmpff...

viele grüsse,
henning

radbruch
07.01.2007, 23:03
Hallo

Bei der Übertragung wird scheinbar blockweise auch eine Prüfsumme gebildet und übertragen. Das nach dem Speichern der Daten diese nochmals geprüft werden glaube ich nicht.

Zur Fehlfunktion deines Programms:

Die PollSwitch-Abfrage auf " gleich 0 " ist sehr unzuverlässig. Grundsätzlich sollten die Taster aber auch mit den richtigen Werten erkannt werden(1,2,4,8,16 und 32).

Die Funktion SerWrite() erwartet einen String als ersten Parameter, du übergibst aber ein char. Ich bin zwar auch Neuling, habe aber inzwischen festgestellt, dass der asuro das schluckt, dann aber spinnt(vermutlich überschneidungen der Speicherbereiche).

So liesen sich deine Erscheinungen erklären: Zuerst immer zurück weil PollSwitch() ungenau, dann vorwärts wegen Datentypenfehler.

Vielleicht liege ich ja auch falsch..

Zu deinem Nachtrag: Ja, der reagiert empfindlich, vor allem wenn die Taster-Abfrage noch nicht exakt "kalibriert" ist und dann noch der höhere Strom der am Boden höher belasteten Motoren dazu kommt.

Gruß

mic