PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [gelöst] Asuroprogramme bleiben hängen



contumax
26.04.2009, 11:47
Hallo Leute

Ich habe vor 2 Tagen einen Asuro bekommen.

Ich möchte damit meiner Katze eine Freude machen (und mir auch).
Das heißt, er soll einfach im Zimmer herumfahren; wenn er wo anstößt umdrehen, sich vllt. ab und zu drehen usw.
(später sollte er sich automatisch zu einer Ladestation bewegen und Ultraschallsensoren bekommen)

Ich programmiere unter Debian, verwende AsuroLib-v280rc1, flashe mit asuroflash und als Terminal verwende ich cutecom.

Leider bleiben alle kompliziertern Programme irgendwann hängen (außer im Kreis fahren und so)

Hier ein Beispielprogramm, welches ich schon unendlich oft modifizierte:




#include "asuro.h"
#include <stdlib.h>
#define SPEEDMAX 180

void FwdAccelerate(void)
{
MotorDir(FWD,FWD);
MotorSpeed(SPEEDMAX,SPEEDMAX);
}

void MotorRwdL(void)
{
MotorDir(RWD,FWD);
MotorSpeed(SPEEDMAX,SPEEDMAX);
}

int main(void)
{
unsigned char t1=0, t2=0;
char text[16];

Init();
SerPrint(" Test\r\n");

while(1)
{
t1 = PollSwitch();
t2 = PollSwitch();

if (t1 == 0 && t2 == 0 && t1 == t2)
{
SerPrint("\r\n FwdAccelerate \r\n");
FwdAccelerate();
}
else if (t1 != 0 && t2 != 0 && t1 == t2)
{
itoa(t1, text, 10); /* Tastenwert senden */
SerPrint(text);
SerPrint("\r\n"); /* Zeilenvorschub */

MotorRwdL();
Msleep(500);
}

}
return(0);
}




Eine Taste habe ich unabsichtlich mit dem Lötkolben zerstört; habe ihn mit einen Mikroschalter mit Drahtbügel ersetzt.
Wenn ich nun irgendeinen Taster drücke (meisten >=3 mal), fällt der Asuro in eine Endlosschleife oder stürzt ganz ab. (auch ohne SerPrint)
(und dann flackert die Status-LED gelb! )

Terminal-Output:

Test

FwdAccelerate

FwdAccelerate

FwdAccelerate

FwdAccelerate
7
Test

FwdAccelerate
8

FwdAccelerate
\0x8dVLVLVLVLVLVLVLVLVLV
VLVLVLVLVLVLVLVLVLVLVLV......


Der Tastertest funktioniert einigermaßen; manchmal bekomme ich auch einen anderen Wert.
1: Aber ist das ein Grund, dass das Programm gleich abstürzt?
Bei dem Programm müsste das doch egal sein, es reagiert ja nur auf t1=t2=0 und t1=t2= irgendwas.

Wie man im Terminal-Output sieht, stürzt das Programm auch manchmal ab und startet dann neu.

Die Akkus sind NiMH und neu (~5 V auch bei Belastung)

2: Hat jemand von euch ähnliche Probleme und eine Lösung?
3: Wie zuverlässig ist der Microcontroller bezügl. Abstürze?

Ein anders Problem: Zum flashen musste ich ungefähr 1 cm zum Sender.
Nachdem ich den R17 auf 100 Ohm wechselte, reichen 10cm, wobei das Poti schon ganz nach rechts gedreht ist.
4: Sollte das nicht weiter reichen?

Bitte helft mir mit zahlreichen Antworten.

Danke !

radbruch
26.04.2009, 12:02
Hallo

Die Meldung "VLVL.." mit blinkender StatusLED bedeutet Voltage Low und meint "Batteriespannung zu niedrig". Falls die Batterien/Akkus voll sind könnte ein Übergangswiderstand am Batteriehalter die Ursache sein. Oder bei Akkubetrieb ist der Jumper JP1 nicht überbrückt. Eher unwahrscheinlich ist einen falsche Bestückung/schlechte Lötung von R12/R13 und IC1:Pin28. (Im Handbuch Seite 29 Punkt 6.3.3)

Gruß

mic

[Edit]
Neustart des Programms deutet auch auf Spannungseinbrüche hin. Lötstellen überprüfen, Schalter defekt?

contumax
26.04.2009, 16:43
Vielen Dank für deine schnelle Antwort !

Der R12 war ein bisschen angekratzt.
So hab ich ihn einfach durch einen Widerstand mit 5% Toleranz ersetzt.
Jetzt funktioniert es besser, obwohl er trotzdem manchmal abstürzt.

Sind 5% Toleranz zu viel?

freundliche Grüße