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 !
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 !