PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem beim Programmieren von ASURO



HaHa-Freak
12.03.2006, 11:39
HiHi Miteinander !!!

Ich hab mir vor 2 Tagen einen Asuro gekauft !!! Hab ihn dann gleich auch fleißig zusammengebastelt !!! War kein Problem !! Hab jetzt dann auch gleich versucht n kleines Programm zu schrieben : Als erstes hab ich mal die veränderte asuro.c und asuro.h in den Ordner des Testfiles kopiert (C:\Asuro\ASURO_src\FirstTry). Hab dann des alte Testfile umgeschrieben um des maketool verwenden zu können und habs übersetzt . Dabei kam keine fehlermeldung. Ich hab dann die test.hex auf den asuro geflasht und nix isch passiert !! woran kann des liegen ?? ich find einfach keinen Fehler!! Hier auch noch mein Prog.:

#include "asuro.h"

#define FULL_L 250 /* Fullspeed linker Motor */
#define FULL_R 220 /* Fullspeed rechter Motor */


void MotorFwd(void)
{
MotorDir(FWD,FWD);
MotorSpeed(FULL_L,FULL_R);
}

void MotorRwd(void)
{
MotorDir(RWD,RWD);
MotorSpeed(FULL_L,FULL_R);
}

void MotorRwdL(void)
{
MotorDir(RWD,RWD);
MotorSpeed(FULL_L,0);
}

void MotorRwdR(void)
{
MotorDir(RWD,RWD);
MotorSpeed(0, FULL_R);
}

void MotorStop(void)
{
MotorSpeed(0,0);
}

int main(void)
{
unsigned char t1, t2;

Init();
while(1)
{
t1 = PollSwitch();
t2 = PollSwitch();
if(t1 == 0 && t2 == 0)
{
MotorFwd();
FrontLED(ON);
BackLED(OFF,OFF);
}
else if (t1 && t2 && t1 == t2)
{
MotorStop();
if(t1 & 0x07) /
{
MotorRwdL();
FrontLED(OFF);
BackLED(ON,OFF);
}
if (t1 & 0x38)
{
MotorRwdR();
FrontLED(OFF);
BackLED(OFF,ON);
}
Msleep(1000);
}
}
return 0;
}

An alle schon mal n fettes Dankeschön für Beiträge und Ratschläge !!

HaHa-Freak
12.03.2006, 13:47
Gibt es hier niemanden ,der C kann ??? wäre echt hilfreich ,wenn ich zumindest wüsste ,obs am prog liegt !!! Oder wenn mir jemand sagen könnte ,wie ich die asuro.c oder asuro.h richtig durch die ergänzten asuro .h und asuro.c von waste ,.. ersetzen kann !!!!
Vielen vielen dank für Beiträge ^^

Andun
12.03.2006, 16:12
Moin

Also,
1. bitte benutz die [ code ] [/ code ] Tags, wenn du hier Quelltext postet, damit man das auch ordentlich lesen kannst. Du findest passende Buttons im Antworten Editor.
2. Also das Programm siehr auf den 1. Blick zwar etwas voll gestopft aus, aber sollte so laufen ... denke ich ... Hier mal ein paar Dinge die man beachten sollte:
a) Wirklich auf speichern klicken, bevor man kompiliert. Das kommt nciht automatisch.
b) Ich bau immer an den Anfang des Programmes die StatusLED() ein, damit ich ne Meldung kriege, dass überhaupt was geschieht.
3. Bei diesen vielen if Klammern oben, habe ich leider nciht ganz den Überblick behalten, deswegen nur mal generelles: Die PollSwitch() Funktion liefert oft erst nach dem 3. aufruf oder so sinnvolle Werte. Du speicherst zwar 2mal die Werte ab, aber was das so ganz genau bezwecken soll ist mir nciht komplett klar. Irgendwie ist dein Code da sehr schwammig.
Außerdem hast du außer der Msleep(1000) keine Reaktion drinne, die gemacht werden soll, wenn keine Taste gedrückt wird.
4. Was ist das für ein / da?:
>> if(t1 & 0x07) / <<
5. Wenn dir nach 2 Stunden noch keiner geholfen hat, ist das noch kein Grund einen kleinen Aufstand zu machen, in diesem Forum wird ja keiner dafür bezahlt rund um die Uhr und am Wochenende alles zu wissen ....

:D

Andun

HaHa-Freak
12.03.2006, 17:30
Danke für deine Antwort ^^

Sorry ,aber sollte net so klingen ,wie wenn ich n aufstand machen wollte ^^
Mich hat des nur voll angenervt ,dass nix gefunzt hat ^^

sorry nochmal Andun

izaseba
12.03.2006, 17:44
Gibt es hier niemanden ,der C kann ???

Was hälst Du davon wenn Du Dir selber hilfst?
Das Zauberwort heißt Debugen, und ich persönlich mache das so:




#define DEBUG 1



und an ein Paar Stellen im Programm, wo es hängen könnte füge ich folgende Zeilen ein:


#if DEBUG
LEDPORT ^=(1<<LED1);
#endif /*DEBUG*/

LEDPORT und LED1 müssen natürlich auch entsprechend definiert werden...
Und da Du am Asuro genug LED's hast dürftest Du wohl ziemlich schnell
rausfinden, wo es kracht.
Wenn Du dann den Fehler gefunden hast kannst Du DEBUG auf 0 setzen, womit Du Dir die Blinkerei dann wieder abschaltest...
Man kann sich auch werte über UART anzeigen lassen und und und.

Gruß Sebastian

Lunarman
12.03.2006, 18:02
Hmm... kenn die erweiterte Lib nicht, aber du sagst #define blabla.
WIE definierst du das denn? Wenn ich in Mathe sage ich definiere jetzt die Strecke AB hast du nur gesagt dass du sie definierst und nicht wie.
(Nur Theorie, muss nich stimmen... ;-) )
Und ich glaube du musst asuro.c einbinden und nich asuro.h.
Sonst haste ja die ganzen tollen Funktionen wie Motorspeed gar net.

izaseba
12.03.2006, 18:28
Und ich glaube du musst asuro.c einbinden und nich asuro.h.

Es gibt da so ein Spruch wie, wenn man keine Ahnung hat... aber ich lass es lieber,
Lunarman besorg Dir ein C Buch, Tutorial, und lerne erstmal die Grundlagen, bevor Du anfängst irgendwelche *.c Dateien einzubinden

Lunarman
12.03.2006, 18:36
:oops: hab grad bei mir geguckt - izaseba hat Recht... 8-[
War ja nur aus dem Gedächtnis... heul... *alleärgernmichsag*

Rakke
13.03.2006, 22:49
Hei HaHa-Freak,

prüfe mal als erstes, welche Files du da übersetzt hast. Spätestens bei der Zeile
"if(t1 & 0x07) /"
muss sich der Compiler beschweren. Hat er aber nach deiner Beschreibung nicht getan.
Dann noch wie izaseba vorschlägt: Schritt für Schritt kleine debug-Features einbauen. Dann siehst du wenigstens, wie weit dein Code kommt, ehe er "hängt" (oder so aussieht).

Alaaf, Rakke

HaHa-Freak
14.03.2006, 18:52
Vielen Dank für alle eure Antworten !!!
Ich werde mir den Trick mit den debug-Features merken !!! Echt hilfreich !!!
Aber ich glaube mein Prob. lag an meinem Compiler !! Hab mir die neuste Version von Programmers Notepad geholt und das make-tool neu eingerichtet und siehe da ,es hat geklappt ^^ !!

stochri
17.03.2006, 19:57
Hallo Haha-Freak,
noch einfacher ist es, wenn Du Dir AVR-Studio installierst. Da ist ein Simulator drin, damit kannst Du Dein Programm direkt auf dem PC-debuggen.

Gruss,
stochri

ExtreamCoder
19.03.2006, 16:06
Gibts das AVR-Studio Gratis?

raoul4
19.03.2006, 16:26
ja tut es
http://atmel.com/dyn/products/tools_card.asp?tool_id=2725
mfg