PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Programme funktionieren nicht (richtig).



Pdd
19.10.2006, 17:17
Hallo.
hab heute mein Asuro mal in Betrieb genommen 8-[ ;)

Allerdings ist der IC1 nicht reingeangen, also der Sockel sitzt fest auch richtigrum. Aber der Prozessor ist jetzt auf der einen Seite drinne, auf der anderen ist er zwar angeschlossen aber die Beinchen sind noch nicht im Sockel. Der Selbsttest verlief Problemlos. Kann man das Nochmal Korregieren? hab schiss das der Proz kaputt geht wenn ich den nochhmal rauszieh.

2.: Die Motoren laufen bei FWD RÜCKWÄRTS!!! Motorkabel sowie Batteriekabel sind aber richtig angeschlossen.

3.:

#include "asuro.h"

int main(void)
{
Init();
unsigned char taste;
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(150,150);
while(1)
{
taste = PollSwitch();
if(taste != 0)
{
MotorDir(BREAK,BREAK);
StatusLED(RED);
}
}
BackLED(ON,ON);

while(1);
return 0;
}

Dieser Code sollte folgendes Bewirken:
Die Motoren gehen auf 150 vorwärts. Die Status-LED ist grün. Er fährt solange weiter bis ein Taster gedrückt wird, dann geht die S-L auf rot, die BackLeds an.

Passieren tut aber folgendes:
StatusLED grün.
Kurzes Rückwärtsfahren (<0,5s).
Status-LED rot, BackLED an.
Obwohl kein Schalter gedrückt wurde!!!
Manchamal fährt er auch garnicht rückwarts!

Woran leigt das?

mfg Pdd

plusminus
19.10.2006, 19:04
Die Pollswitch-funktion liefert keine verlässlichen Ergebnisse.

FÜhre sie vllt 3-4mal vorher aus, bevor du nen verlässlichen Wert bekommst

Pdd
19.10.2006, 20:19
Jop, jetzt tuts! Danke ;)

Ich muss jetzt einfach immer statt FWD RWD eingeben, dann klappt auch das mit den Motoren ;)

Pdd
19.10.2006, 20:59
Hum. Grade mal getestet:
Beim Selftest tun die Motoren, aber wenn ich sie mit MotorDir(FWD,FWD); MotorSpeed(120,120); ansteuere, dann funktioniert nur der Linke o.O
hatte jemadn von euch schonmal das selbe Problem?

Pdd
20.10.2006, 13:02
OK, sry das ich nochmal Pushe, aber das muss sein ;)

Hab rausgefunden das ich 4 wiederstände falsch eingelötet habe (den kleinen Strich am Kreis sollte man beachten!) Nachdem ich diese in mühevoller kleinarbeit wieder ausgelötet habe und sie richtig eingelötet sind, funktioniert nun alles. Nur die Odometriesensoren haben beim Selbsttest nicht getan !?!
Also hab ich, sowieso mal zur Übung, dieses Prog geschrieben, womit man leicht testen kann ob die Odometrie funktioniert:
Funktionsweise: Hyperterminal starten. Asuro anmachen. Wenn einer der Schalter gedrückt wird, gibt er Gaß.


#include "asuro.h"

unsigned char taste;

void SerOdoData(int wert)
{
char text[16]=" ";
itoa(wert,text,10);
SerWrite(text,strlen(text));
}

int main(void)
{
Init();

StatusLED(GREEN);

unsigned int data[2]; //Speicher für Odometrie

while(1)
{
if(PollSwitch()>0)
{
MotorDir(FWD,FWD);
MotorSpeed(150,150);
}
else
{
MotorDir(FREE,FREE);
MotorSpeed(0,0);
}
OdometrieData(data);
SerWrite("\n\rLinks:",10);
SerOdoData(data[0]);
SerWrite(" Rechts:",8);
SerOdoData(data[1]);
}

while(1);
return 0;
}


Ausserdem fährt jetzt der linke Motor auch in beide Richtungen *freu*