PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Einzelnen Taster auslesen.



Asuroneuling
27.06.2009, 19:24
Also ich habe ein kleines "Kollisions - zurückfahr - umdreh - weiterfahr" Programm geschrieben und möchte jetzt das Asuro je nach dem wie er sich gestoßen hat verschieden dreht. Jetzt mein Problem: Ich weiß nicht wie ich einzelne Gruppen von Tasten ansprechen soll.

Hier mal das Programm:



#include "asuro.h"

int main(void)
{
Init();
int t;
MotorDir(FWD,FWD);
MotorSpeed(120,120);
StatusLED(GREEN);
FrontLED(ON);
while (1){
while (PollSwitch()==0) {
SerWrite("Ab die Post!",12);
}
MotorSpeed(0,0);
StatusLED(RED);
MotorDir(RWD,RWD);
MotorSpeed(120,120);
BackLED(ON,ON);
for(t=0;t<1000;t++){
Sleep(72);}
BackLED(OFF,OFF);
MotorDir(FWD,FWD);
MotorSpeed(0,180);
for (t=0; t<1000; t++){
Sleep(72);}
MotorDir(FWD,FWD);
MotorSpeed(120,120);
}
}


An die Leute denen es aufgefallen ist
Ich habe Teile das Programms insbesondere die for - Schleife aus diesem Forum übernommen um mir Anzugucken wie man so ein Programm erstellt.

veit
27.06.2009, 22:41
gcc tutorial auf mikrocontroller.net reinkucken

Asuroneuling
28.06.2009, 09:49
Tut mir leid ich habe mir das Tutorial anguckt und da stand nichts zu einelne Sensoren auslesen.

Hubert.G
28.06.2009, 10:21
Das hier ist auch nichts? www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Tasten_und_Schalter

Asuroneuling
05.07.2009, 10:42
Nein modifizier doch mal mein Programm so, dass es auf einzelne Taster reagiert, vielleicht versteh ich es ja dann

core duo
05.07.2009, 11:09
So sind ja die rückgabewerte:

Bit0 (1) -> K6
Bit1 (2) -> K5
Bit2 (4) -> K4
Bit3 (8) -> K3
Bit4 (16) -> K2
Bit5 (32) -> K1

dazu habe ich auch eine frage, und zwar sagen wir einmal, dass K1 gedrückt wird. Dann belpmmen wir den Wert 32 zurück, aber den kann ma n doch auch erhalten, wenn K2, K4 und K5 gedrückt sind.

Aber nun zu deiner Frage.
Mit den Knöpfen 2 - 6 sollte es ja keine Probleme geben, denn da kann man nie auf 2 verschiedene arten auf den gleichen wert kommen einfach schreiben:


taste = PollSwitch();
if (taste==1)
...
else if(taste==2)
...
else if(taste==4)
...
else if(taste==8)
...
else if(taste==16)
...

und der rest ist meine Frage.
Ich hoffe ,dass das hier richtig ist.

lg
Hannes

Asuroneuling
05.07.2009, 17:05
hallo#include "asuro.h"

int main(void)
{
Init();
int zeit;
unsigned char taste;
taste = PollSwitch();
MotorDir(FWD,FWD);
MotorSpeed(120,124);
StatusLED(GREEN);
FrontLED(ON);
while (1){
StartSwitch();
StopSwitch();
if (taste==1 | taste==2 | taste==4)
{
MotorSpeed(0,0);
StatusLED(RED);
BackLED(ON,ON);
MotorDir(RWD,RWD);
MotorSpeed(150,152);
for(zeit=0;zeit<1000;zeit++){
Sleep(72);}
BackLED(OFF,OFF);
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(180,0);
for (zeit=0; zeit<500; zeit++){
Sleep(72);}
MotorSpeed(120,124);
for(zeit=0;zeit<500;zeit++){
Sleep(72);}
BackLED(OFF,OFF);
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(0,180);
for (zeit=0; zeit<500; zeit++){
Sleep(72);}
MotorSpeed(120,121);
}
else if (taste==8 | taste==16 | taste==32)
{
MotorSpeed(0,0);
StatusLED(RED);
BackLED(ON,ON);
MotorDir(RWD,RWD);
MotorSpeed(150,152);
for(zeit=0;zeit<1000;zeit++){
Sleep(72);}
BackLED(OFF,OFF);
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(0,180);
for (zeit=0; zeit<500; zeit++){
Sleep(72);}
MotorSpeed(120,124);
for(zeit=0;zeit<500;zeit++){
Sleep(72);}
BackLED(OFF,OFF);
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(180,0);
for (zeit=0; zeit<500; zeit++){
Sleep(72);}
MotorSpeed(120,121);
}
}
}

Ich habe das nach deinem Beitrag hier weiterentwickelt, aber es passiert nichts, außer, dass die StatusLED grün leuchtet.

core duo
05.07.2009, 18:25
ich glaube ich habe den Fehler gefunden.

wie ich das weiß ist doch ODER = || und nicht |

Demnach müsste der Quellcode so heißen:


hallo#include "asuro.h"

int main(void)
{
Init();
int zeit;
unsigned char taste;
taste = PollSwitch();
MotorDir(FWD,FWD);
MotorSpeed(120,124);
StatusLED(GREEN);
FrontLED(ON);
while (1){
StartSwitch();
StopSwitch();
if (taste==1 || taste==2 || taste==4)
{
MotorSpeed(0,0);
StatusLED(RED);
BackLED(ON,ON);
MotorDir(RWD,RWD);
MotorSpeed(150,152);
for(zeit=0;zeit<1000;zeit++){
Sleep(72);}
BackLED(OFF,OFF);
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(180,0);
for (zeit=0; zeit<500; zeit++){
Sleep(72);}
MotorSpeed(120,124);
for(zeit=0;zeit<500;zeit++){
Sleep(72);}
BackLED(OFF,OFF);
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(0,180);
for (zeit=0; zeit<500; zeit++){
Sleep(72);}
MotorSpeed(120,121);
}
else if (taste==8 || taste==16 || taste==32)
{
MotorSpeed(0,0);
StatusLED(RED);
BackLED(ON,ON);
MotorDir(RWD,RWD);
MotorSpeed(150,152);
for(zeit=0;zeit<1000;zeit++){
Sleep(72);}
BackLED(OFF,OFF);
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(0,180);
for (zeit=0; zeit<500; zeit++){
Sleep(72);}
MotorSpeed(120,124);
for(zeit=0;zeit<500;zeit++){
Sleep(72);}
BackLED(OFF,OFF);
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(180,0);
for (zeit=0; zeit<500; zeit++){
Sleep(72);}
MotorSpeed(120,121);
}
}
}

Bitte korigieren wenn das falsch ist.

Asuroneuling
05.07.2009, 18:50
Tut mir leid euch enttäuschen zu müssen, aber es funktioniert immer noch nicht.


#include "asuro.h"

int main(void)
{
Init();
int zeit;
unsigned char taste;
taste = PollSwitch();
MotorDir(FWD,FWD);
MotorSpeed(120,124);
StatusLED(GREEN);
FrontLED(ON);
while (1){
StartSwitch();
StopSwitch();
if (taste==1 || taste==2 || taste==4)
{
MotorSpeed(0,0);
StatusLED(RED);
BackLED(ON,ON);
MotorDir(RWD,RWD);
MotorSpeed(150,152);
for(zeit=0;zeit<1000;zeit++){
Sleep(72);}
BackLED(OFF,OFF);
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(180,0);
for (zeit=0; zeit<500; zeit++){
Sleep(72);}
MotorSpeed(120,124);
for(zeit=0;zeit<500;zeit++){
Sleep(72);}
BackLED(OFF,OFF);
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(0,180);
for (zeit=0; zeit<500; zeit++){
Sleep(72);}
MotorSpeed(120,121);
}
else if (taste==8 || taste==16 || taste==32)
{
MotorSpeed(0,0);
StatusLED(RED);
BackLED(ON,ON);
MotorDir(RWD,RWD);
MotorSpeed(150,152);
for(zeit=0;zeit<1000;zeit++){
Sleep(72);}
BackLED(OFF,OFF);
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(0,180);
for (zeit=0; zeit<500; zeit++){
Sleep(72);}
MotorSpeed(120,124);
for(zeit=0;zeit<500;zeit++){
Sleep(72);}
BackLED(OFF,OFF);
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(180,0);
for (zeit=0; zeit<500; zeit++){
Sleep(72);}
MotorSpeed(120,121);
}
}
while(1);
return(0);
}

Das einzige was passiert ist, dass die BackLED leuchten und die StatusLED grün leuchtet.

Das Programm soll ja eigentlich so wirken, dass wenn er irgendwo antstößt zurückfährt, und je nachdem wie er sich gestoßen hat dreht (90°) kurz fährt wieder um 90° dreht (aber diesmal in die andere Richtung) und dann weiterfährt. Ohne die Idee mit einzelne Taster auslesen funktionierte es übrigens.

Nun was soll ich machen?

Edit: Könnte es vielleicht an if hängen, da ich im anderen Programm(das funktioniert hat) while benutzt habe.

core duo
05.07.2009, 19:02
post doch mal deinen alten Code bei dem es Funktioniert hat, dann kann ich ja mal schauen ob man das einfacher umschreiben kann.

Dass z.B: beim drücken der taste 2 das licht ot wird, den ganzen rest (fahren) kann man ja immer noch in die schleife integrieren.

Hubert.G
05.07.2009, 20:37
Wo ist die Funktion PollSwitch(), bekommst du von dort die richtige Variable für Taste?

sast
05.07.2009, 21:09
Das Problem wird sein, dass du am Anfang zwar PollSwitch aufrufst, aber da wahrscheinlich noch kein Taster betätigt ist. Wenn er in die while Schleife kommt, wird der Wert von Taste nicht wieder aktualisiert. Das heißt er kommt weder in den if noch in den else if Zweig. Was mich wundert, ist allerdings warum er nicht losfährt, denn das machst du ja schon am Anfang.

Vielleicht solltest du die Ziele erst mal nicht so hoch stecken und den Inhalt der Zweige eher klein halten.

zB


while(1)
{
taste = PollSwitch();
if (taste == 1)
{
StatusLED(RED);
FrontLED(ON);
BackLED(OFF,OFF);
}
else if (taste == 2)
{
StatusLED(RED);
FrontLED(OFF);
BackLED(OFF,OFF);
}
else if (taste == 4)
{
StatusLED(GREEN);
FrontLED(ON);
BackLED(OFF,OFF);
}
else if (taste == 8)
{
StatusLED(GREEN);
FrontLED(OFF);
BackLED(OFF,OFF);
}
else if (taste == 16)
{
StatusLED(RED);
FrontLED(ON);
BackLED(ON,ON);
}
else if (taste == 32)
{
StatusLED(RED);
FrontLED(OFF);
BackLED(ON,ON);
}
}


Und das Fahren erst später einbauen.
Das wüste Verwenden von Funktionen bringt da nicht viel. StartSwitch und StopSwitch ergeben nach dem was ich gerade im asurowiki gelesen habe nicht wirklich Sinn.

Ich habe zwar keinen Asuro, aber könnte mir vorstellen, dass auch mal mehr als ein Taster zur gleichen Zeit angesprochen wird. Das wird natürlich durch solche Abfragen nicht abgefangen.

sast

core duo
05.07.2009, 21:14
Das Problem wird sein, dass du am Anfang zwar PollSwitch aufrufst, aber da wahrscheinlich noch kein Taster betätigt ist. Wenn er in die while Schleife kommt, wird der Wert von Taste nicht wieder aktualisiert. Das heißt er kommt weder in den if noch in den else if Zweig. Was mich wundert, ist allerdings warum er nicht losfährt, denn das machst du ja schon am Anfang.

Da hätten wir auch drauf kommen können ](*,)

Aber so sollte es dann Funktionieren.[/quote]

Asuroneuling
06.07.2009, 08:33
#include "asuro.h"

int main(void)
{
Init();
int zeit;
unsigned char taste;
MotorDir(FWD,FWD);
MotorSpeed(120,124);
StatusLED(GREEN);
FrontLED(ON);
while (1){
taste=PollSwitch;
if (taste==1 || taste==2 || taste==4)
{
MotorSpeed(0,0);
StatusLED(RED);
BackLED(ON,ON);
MotorDir(RWD,RWD);
MotorSpeed(150,152);
for(zeit=0;zeit<1000;zeit++){
Sleep(72);}
BackLED(OFF,OFF);
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(180,0);
for (zeit=0; zeit<500; zeit++){
Sleep(72);}
MotorSpeed(120,124);
for(zeit=0;zeit<500;zeit++){
Sleep(72);}
BackLED(OFF,OFF);
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(0,180);
for (zeit=0; zeit<500; zeit++){
Sleep(72);}
MotorSpeed(120,121);
}
else if (taste==8 || taste==16 || taste==32)
{
MotorSpeed(0,0);
StatusLED(RED);
BackLED(ON,ON);
MotorDir(RWD,RWD);
MotorSpeed(150,152);
for(zeit=0;zeit<1000;zeit++){
Sleep(72);}
BackLED(OFF,OFF);
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(0,180);
for (zeit=0; zeit<500; zeit++){
Sleep(72);}
MotorSpeed(120,124);
for(zeit=0;zeit<500;zeit++){
Sleep(72);}
BackLED(OFF,OFF);
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(180,0);
for (zeit=0; zeit<500; zeit++){
Sleep(72);}
MotorSpeed(120,121);
}
}
while(1);
return(0);
}


Das Problem wird sein, dass du am Anfang zwar PollSwitch aufrufst, aber da wahrscheinlich noch kein Taster betätigt ist. Wenn er in die while Schleife kommt, wird der Wert von Taste nicht wieder aktualisiert. Das heißt er kommt weder in den if noch in den else if Zweig. Was mich wundert, ist allerdings warum er nicht losfährt, denn das machst du ja schon am Anfang.

Also ich habe das jetzt so gemacht, wie ihr geschrieben habt, der Erfolg ist schon mal: Er fährt.

Aber sonst passiert nichts hier noch mal der Code von dem Ursprungsprogramm, nachdem habt ihr ja gefragt.


#include "asuro.h"

int main(void)
{
Init();
int zeit;
MotorDir(FWD,FWD);
MotorSpeed(120,124);
StatusLED(GREEN);
FrontLED(ON);
while (1){
while (PollSwitch()==0) {
SerWrite("Hallo",5);
}
MotorSpeed(0,0);
StatusLED(RED);
BackLED(ON,ON);
MotorDir(RWD,RWD);
MotorSpeed(150,152);
for(zeit=0;zeit<1000;zeit++){
Sleep(72);}
BackLED(OFF,OFF);
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(0,180);
for (zeit=0; zeit<500; zeit++){
Sleep(72);}
MotorSpeed(120,124);
for(zeit=0;zeit<500;zeit++){
Sleep(72);}
BackLED(OFF,OFF);
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(180,0);
for (zeit=0; zeit<500; zeit++){
Sleep(72);}
MotorSpeed(120,121);
}
}

core duo
06.07.2009, 08:42
Das liegt an PollSwitch, dass ist eine Funktion die du da aufruhfst, deshalb muss das
tast = PollSwitch(); heißen.


#include "asuro.h"

int main(void)
{
Init();
int zeit;
unsigned char taste;
MotorDir(FWD,FWD);
MotorSpeed(120,124);
StatusLED(GREEN);
FrontLED(ON);
while (1){
taste=PollSwitch();
if (taste==1 || taste==2 || taste==4)
{
MotorSpeed(0,0);
StatusLED(RED);
BackLED(ON,ON);
MotorDir(RWD,RWD);
MotorSpeed(150,152);
for(zeit=0;zeit<1000;zeit++){
Sleep(72);}
BackLED(OFF,OFF);
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(180,0);
for (zeit=0; zeit<500; zeit++){
Sleep(72);}
MotorSpeed(120,124);
for(zeit=0;zeit<500;zeit++){
Sleep(72);}
BackLED(OFF,OFF);
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(0,180);
for (zeit=0; zeit<500; zeit++){
Sleep(72);}
MotorSpeed(120,121);
}
else if (taste==8 || taste==16 || taste==32)
{
MotorSpeed(0,0);
StatusLED(RED);
BackLED(ON,ON);
MotorDir(RWD,RWD);
MotorSpeed(150,152);
for(zeit=0;zeit<1000;zeit++){
Sleep(72);}
BackLED(OFF,OFF);
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(0,180);
for (zeit=0; zeit<500; zeit++){
Sleep(72);}
MotorSpeed(120,124);
for(zeit=0;zeit<500;zeit++){
Sleep(72);}
BackLED(OFF,OFF);
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(180,0);
for (zeit=0; zeit<500; zeit++){
Sleep(72);}
MotorSpeed(120,121);
}
}
while(1);
return(0);
}

Asuroneuling
06.07.2009, 09:26
Man könnte jetzt so in etwa sagen, dass es funktioniert, aber asuro macht das alles jetzt öfters ohne, dass ein Taster gedrückt wurde.

Muss man da PollSwitch() nicht öfters aufrufen.

Ich glaube, dazu stand was in "Mehr Spass mit Asuro Band 1".

Edit: Ich weiß aber nicht wie man, dass da einbauen könnte.

core duo
06.07.2009, 09:48
Was hat es mit dem letzten
while(1); auf sich?

Oder was soll das bewirken?

Hubert.G
06.07.2009, 11:23
Dein Programm läuft bis hierher
#include "asuro.h"

int main(void)
{
Init();
int zeit;
unsigned char taste;
MotorDir(FWD,FWD);
MotorSpeed(120,124);
StatusLED(GREEN);
FrontLED(ON);
while (1){
taste=PollSwitch();
if (taste==1 || taste==2 || taste==4)
{
Das was nachher kommt wird nie aufgerufen.
Ich habe mir diese Programmwurst nicht genau angeschaut, aber die Schleife sollte schon bis ans Ende gehen. Das while am Ende ist, wie schon erwähnt, überflüssig.

Asuroneuling
06.07.2009, 11:36
Mit dem while(1) wollte ich eigentlich nur die Vorgaben aus der Anleitung erfüllen.

Da steht, dass wenn keine Endlosschleife am Schluss manchmal Programmteile aus alten Programmen hervortreten können.

core duo
06.07.2009, 11:45
@Hubert

Warum sollte dort das Programm schon zu Ende sein?
Die Klammer geht doch auf und nicht zu.

@Asuroneuling

Versuch einmal PollSwitch() 2x auszulesen, wegen dem C7 Kondensator.

Asuroneuling
06.07.2009, 11:49
Übrigens jetzt nochmal an alle hier: DANKE für die Hilfe. Ich lade bald ein Video bei Youtube hoch, wo ich euch dann auch alle erwähne.

Asuroneuling
06.07.2009, 16:31
#include "asuro.h"

int main(void)
{
Init();
int zeit;
unsigned char taste;
MotorDir(FWD,FWD);
MotorSpeed(120,124);
StatusLED(GREEN);
FrontLED(ON);
while (1){
taste=PollSwitch();
taste=PollSwitch();
taste=PollSwitch();
taste=PollSwitch();
taste=PollSwitch();
taste=PollSwitch();
taste=PollSwitch();
taste=PollSwitch();
if (taste==1 || taste==2 || taste==4)
{
MotorSpeed(0,0);
StatusLED(RED);
BackLED(ON,ON);
MotorDir(RWD,RWD);
MotorSpeed(150,151);
for(zeit=0;zeit<1000;zeit++){
Sleep(72);}
BackLED(OFF,OFF);
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(0,180);
for (zeit=0; zeit<500; zeit++){
Sleep(72);}
MotorSpeed(120,121);
for(zeit=0;zeit<500;zeit++){
Sleep(72);}
BackLED(OFF,OFF);
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(180,0);
for (zeit=0; zeit<500; zeit++){
Sleep(72);}
MotorSpeed(120,121);
taste=PollSwitch();
taste=PollSwitch();
taste=PollSwitch();
taste=PollSwitch();
taste=PollSwitch();
taste=PollSwitch();

}
else if (taste==8 || taste==16 || taste==32)
{
taste=PollSwitch();
taste=PollSwitch();
taste=PollSwitch();
taste=PollSwitch();
taste=PollSwitch();
taste=PollSwitch();
MotorSpeed(0,0);
StatusLED(RED);
BackLED(ON,ON);
MotorDir(RWD,RWD);
MotorSpeed(150,152);
for(zeit=0;zeit<1000;zeit++){
Sleep(72);}
BackLED(OFF,OFF);
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(180,0);
for (zeit=0; zeit<500; zeit++){
Sleep(72);}
MotorSpeed(120,122);
for(zeit=0;zeit<500;zeit++){
Sleep(72);}
BackLED(OFF,OFF);
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(0,180);
for (zeit=0; zeit<500; zeit++){
Sleep(72);}
MotorSpeed(120,122);
}
}
return(0);
}



Versuch einmal PollSwitch() 2x auszulesen, wegen dem C7 Kondensator.

Meinst du das in etwa so?

Asuroneuling
06.07.2009, 17:26
Kennt sich hier eigentlich jemand mit Odometrie (denn das ist mir immer noch ein Rätsel), dann könnte der od er die jenige mal diese Aufgaben stellung mithilfe der Odometrie lösen.

core duo
06.07.2009, 18:24
Führ doch mal einen Tasten Test durch:

http://asuro.pytalhost.de/pmwiki/pmwiki.php/Main/TastSensorTestC

Und dass mit der doppelten abfrage habe ich so gemeint:


taste1=PoolSwitch();
taste2 =PoolSwitch();

if(taste1 == taste2)
{
.
.
.
}

Also fast das gleiche wie in dem Test.

e/


Kennt sich hier eigentlich jemand mit Odometrie (denn das ist mir immer noch ein Rätsel), dann könnte der od er die jenige mal diese Aufgaben stellung mithilfe der Odometrie lösen.

Welche Aufgabe denn?

Hubert.G
06.07.2009, 19:20
@ core duo Du hast natürlich recht, da habe ich schlecht geschaut.

Asuroneuling
06.07.2009, 20:23
Ich meine damit, dass man das was wir mit der for-Schleife gemacht habe, auch mit der Odometrie schaffe (möglichst die aufkleber mit den mehr schwarzen Ringen).

core duo
06.07.2009, 21:37
meinst du den Teil?


for(zeit=0;zeit<500;zeit++){
Sleep(72);}

Der macht doch, dass er eine weile voraus fährt oder?

Aber um das mit dem Optikdingsbums zu machen, sollte ich wissen welchen Umfang deine Reifen haben. Dann kann man ihm nacher sagen, dass er x cm voraus fahren soll z.B..

Asuroneuling
07.07.2009, 09:05
Ich bin mir nicht sicher welchen Umfang meine Räder haben wenn das hilft: ich habe die Räder mit den 50*10 Zähnen als Odometrie Räder verwendet (wie in der Anleitung steht) und habe die Aufkleber mit den mehr schwarz-weiß Übergängen gewählt

Asuroneuling
07.07.2009, 09:09
Umfang: ca. 8.168

habe ich zwar noch nicht in der Schule gehabt, aber im Internet berechnet.

core duo
07.07.2009, 09:22
schreibe einfach den radius oder den durchmesser der rest ist ja kein Problem.

PI^^

e/

wie viele schwartze stücke sind auf einem Reifen?

Asuroneuling
07.07.2009, 09:35
Den Umfang habe ich ja berechnet:

Umfang=2*pi*radius

Asuroneuling
07.07.2009, 09:37
6 schwartze auf einem Reifen.

core duo
07.07.2009, 10:46
Ich habe jetzt hier einmal eine kleine Funktion geschrieben, aber ich bin mir nicht sicher ob die auch funktioniert. (bis jetzt nur Theorie)

gesch = Geschwindichkeit Werte von 0-255
weit = Strecke in ! cm ! Werte zwischen -32768 .. +32767


unsigned int data[2];
int weit;
unsigned char gesch;
unsigned int gef;
unsigned int mmm;


int drive(int weit, unsigned char gesch)
{
if(weit > 0){
MotorDir(FWD,FWD);}
else if(weit < 0){
MotorDir(RWD,RWD);}
else{
break;}

MotorSpeed (gesch,gesch);
OdometrieData(data);

if(data[0] < 500){
hellichkeit = 0;}
else{
hellichkeit = 1;}
OdometrieData(data);

while (weit < gef){
if(hellichkeit == 0){
if(data[0] > 500){
mmm = mmm + 68;
hellichkeit = 1;}}
else{
if(data[0] < 500){
mmm = mmm + 68;
hellichkeit = 0;}}
gef = mmm/100;}

MotorSpeed(BREAK,BREAK);}

Das er garade fährt und andere Kontrollen während der Funktion muss man hald noch ein bauen :-b

gruß
Johannes

Asuroneuling
07.07.2009, 11:43
Muss man deine Funktion dann so anwenden?


#include "asuro.h"
#include "odo.c"
int main(void)
{ int weit;
unsigned char gesch;
weit==10;
gesch==120;
Init();

int drive(int weit, unsigned char gesch)
}

Ich habe deine Funktion als odo.c gespeichert.

core duo
07.07.2009, 12:47
Nein


#include "asuro.h"
#include "odo.c"
int main(void)
{ int weit;
unsigned char gesch;
weit=10;
gesch=120;
Init();

drive(weit,gesch);
return 0;
}

Ich bin mir nur an volgender Stelle nicht sicher in meiner Funktion:


MotorSpeed (gesch,gesch);

ob dort die Daten richtig eingetragen werden.

Kannst ja sagen, ob es funktioniert.
Oder findet jemand einen Fehler?

Asuroneuling
07.07.2009, 13:04
avr-gcc -c -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=test.lst test.c -o test.o
In file included from asuro.h:34,
from test.c:1:
c:/winavr-20090313/lib/gcc/../../avr/include/avr/signal.h:36:2: warning: #warning "This header file is obsolete. Use <avr/interrupt.h>."
In file included from test.c:2:
odo.c: In function 'drive':
odo.c:15: error: break statement not within loop or switch
odo.c:21: error: 'hellichkeit' undeclared (first use in this function)
odo.c:21: error: (Each undeclared identifier is reported only once
odo.c:21: error: for each function it appears in.)
make: *** [test.o] Error 1

> Process Exit Code: 2
> Time Taken: 00:00



Also die Fehler kriege ich jetzt immer zurück guck sie dir mal an und ich habe glaube ich einen Fehler am Ende deiner Funktion gefunden

Da muss glaube ich noch ein


return 0;

stehen.

Asuroneuling
07.07.2009, 14:13
Ich galube es hängt mit der hellichkeit zusammen die hast die nicht deklariert.

core duo
07.07.2009, 14:22
doch die habe ich mal auf 500 gestellt, die musst du aber noch für deinen Asuro anpassen.

Asuroneuling
07.07.2009, 14:41
#include "asuro.h"

int main(void)
{
Init();
int zeit;
unsigned char taste;
MotorDir(FWD,FWD);
MotorSpeed(120,124);
StatusLED(GREEN);
FrontLED(ON);
while (1){
taste=PollSwitch();
taste=PollSwitch();
taste=PollSwitch();
taste=PollSwitch();
taste=PollSwitch();
taste=PollSwitch();
taste=PollSwitch();
taste=PollSwitch();
if (taste==1)
{
MotorSpeed(0,0);
StatusLED(RED);
BackLED(ON,ON);
MotorDir(RWD,RWD);
MotorSpeed(150,151);
for(zeit=0;zeit<1000;zeit++){
Sleep(72);}
BackLED(OFF,OFF);
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(0,180);
for (zeit=0; zeit<500; zeit++){
Sleep(72);}
MotorSpeed(120,121);
for(zeit=0;zeit<500;zeit++){
Sleep(72);}
BackLED(OFF,OFF);
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(180,0);
for (zeit=0; zeit<500; zeit++){
Sleep(72);}
MotorSpeed(120,121);
taste=PollSwitch();
taste=PollSwitch();
taste=PollSwitch();
taste=PollSwitch();
taste=PollSwitch();
taste=PollSwitch();

}
else if (taste==32)
{
taste=PollSwitch();
taste=PollSwitch();
taste=PollSwitch();
taste=PollSwitch();
taste=PollSwitch();
taste=PollSwitch();
MotorSpeed(0,0);
StatusLED(RED);
BackLED(ON,ON);
MotorDir(RWD,RWD);
MotorSpeed(150,152);
for(zeit=0;zeit<1000;zeit++){
Sleep(72);}
BackLED(OFF,OFF);
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(180,0);
for (zeit=0; zeit<500; zeit++){
Sleep(72);}
MotorSpeed(120,122);
for(zeit=0;zeit<500;zeit++){
Sleep(72);}
BackLED(OFF,OFF);
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(0,180);
for (zeit=0; zeit<500; zeit++){
Sleep(72);}
MotorSpeed(120,122);
}
else if (taste==16 || taste==2)
{
MotorSpeed(0,0);
StatusLED(RED);
BackLED(ON,ON);
MotorDir(150,152);
for(zeit=0;zeit<1000;zeit++){
Sleep(72);}
BackLED(OFF,OFF);
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(180,0);
for (zeit=0; zeit<1200; zeit++){
Sleep(72);}
MotorSpeed(120,122);
}
return(0);
}
}


Was habe ich falsch gemacht: Er fährt nur stur gerade aus

core duo
07.07.2009, 15:06
Ich hab das ganze jetzt einmal auf die 1 Taste gekürtzt, dass man sehen kann, ob das überhaupt funktioniert.

Versuchs mal mit dem hier:



#include "asuro.h"

int main(void)
{
Init();
int zeit;
unsigned char taste,taste1,taste2;

MotorDir(FWD,FWD);
MotorSpeed(120,124);
StatusLED(GREEN);
FrontLED(ON);

while (1){
taste1 = PollSwitch();
taste2 = PollSwitch();
if(taste1 == taste2);
{taste = taste1;

if (taste==1)
{
MotorSpeed(0,0);
StatusLED(RED);
BackLED(ON,ON);
MotorDir(RWD,RWD);
MotorSpeed(150,151);
for(zeit=0;zeit<1000;zeit++)
{
Sleep(72);
}
BackLED(OFF,OFF);
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(0,180);
for (zeit=0; zeit<500; zeit++)
{
Sleep(72);
}
MotorSpeed(120,121);
for(zeit=0;zeit<500;zeit++)
{
Sleep(72);
}
BackLED(OFF,OFF);
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(180,0);
for (zeit=0; zeit<500; zeit++)
{
Sleep(72);
}
MotorDir(FWD,RWD);
MotorSpeed(150,151);
for(zeit=0;zeit<3000;zeit++)
}}


return(0);
}
}

Asuroneuling
07.07.2009, 15:13
#include "asuro.h"

int main(void)
{
Init();
int zeit;
unsigned char taste;
MotorDir(FWD,FWD);
MotorSpeed(120,124);
StatusLED(GREEN);
FrontLED(ON);
while (1){
taste=PollSwitch();
if (taste==1)
{
MotorSpeed(0,0);
StatusLED(RED);
BackLED(ON,ON);
MotorDir(RWD,RWD);
MotorSpeed(150,152);
for(zeit=0;zeit<1000;zeit++){
Sleep(72);}
BackLED(OFF,OFF);
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(180,0);
for (zeit=0; zeit<500; zeit++){
Sleep(72);}
MotorSpeed(120,124);
for(zeit=0;zeit<500;zeit++){
Sleep(72);}
BackLED(OFF,OFF);
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(0,180);
for (zeit=0; zeit<500; zeit++){
Sleep(72);}
MotorSpeed(120,121);
}
else if (taste==32)
{
MotorSpeed(0,0);
StatusLED(RED);
BackLED(ON,ON);
MotorDir(RWD,RWD);
MotorSpeed(150,152);
for(zeit=0;zeit<1000;zeit++){
Sleep(72);}
BackLED(OFF,OFF);
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(0,180);
for (zeit=0; zeit<500; zeit++){
Sleep(72);}
MotorSpeed(120,124);
for(zeit=0;zeit<500;zeit++){
Sleep(72);}
BackLED(OFF,OFF);
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(180,0);
for (zeit=0; zeit<500; zeit++){
Sleep(72);}
MotorSpeed(120,121);
}
else if (taste==16 || taste==2)
{
MotorSpeed(0,0);
StatusLED(RED);
MotorDir(RWD,RWD);
MotorSpeed(120,120);
BackLED(ON,ON);
for(zeit=0;zeit<1000;zeit++){
Sleep(72);}
BackLED(OFF,OFF);
MotorDir(FWD,FWD);
MotorSpeed(0,180);
for (zeit=0; zeit<1000; zeit++){
Sleep(72);}
MotorDir(FWD,FWD);
MotorSpeed(120,120);
}
}
while(1);
return(0);
}

Jetzt hier noch mal das funktionierende Programm
Das beste bis jetzt.

core duo
07.07.2009, 15:20
und an was lag es?

Asuroneuling
07.07.2009, 15:29
Ich habe keine Ahnung.

Ich habe das ganze Programm einfach nochmal geschrieben.

Dann hats funktioniert.
Wenn jemand Lust kann er sich ja mal die beiden Programme angucken und die Unterschiede herrausfinden.

core duo
07.07.2009, 15:44
Du hast das return(0); aus der while schleife herausgenommen und am schluss noch ein while(1); hingehängt, aber ich glaube das return war ausschlaggebend.

Asuroneuling
07.07.2009, 16:02
Danke schön!
Den Fehler mache ich nicht wieder

Asuroneuling
07.07.2009, 17:30
Danke schön!
Daran hats gelegen.

Asuroneuling
15.07.2009, 19:29
Könnte mir nochmal einer konkret am Programm erklären wie das mit dem mehrfach auslesen der PollSwitch(); Funktion gemeint ist.

core duo
15.07.2009, 21:54
es kann passieren, dass einmal falsce werte zurück kommen, deswegen frägt man das ganze 2 mal ab und vergleicht diese. Wenn beide gleich sind, stimmen die Werte.

Ich denke das mit dem Code bekommst du hin. Wenn nicht helfe ich gerne.

Asuroneuling
16.07.2009, 07:21
Helf mir doch mal lieber.

Ich versteh dieses 2mal abfragen einfach nicht, deswegen wäre es nett wenn du es in den Code einbauen könntest.

Hier nochmal der Code


#include "asuro.h"

int main(void)
{
Init();
int zeit;
unsigned char taste;
MotorDir(FWD,FWD);
MotorSpeed(120,124);
StatusLED(GREEN);
FrontLED(ON);
while (1){
taste=PollSwitch();
taste=PollSwitch();
taste=PollSwitch();
taste=PollSwitch();
taste=PollSwitch();
taste=PollSwitch();
taste=PollSwitch();
taste=PollSwitch();
if (taste==1)
{
MotorSpeed(0,0);
StatusLED(RED);
BackLED(ON,ON);
MotorDir(RWD,RWD);
MotorSpeed(150,151);
for(zeit=0;zeit<1000;zeit++){
Sleep(72);}
BackLED(OFF,OFF);
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(0,180);
for (zeit=0; zeit<415; zeit++){
Sleep(72);}
MotorSpeed(120,121);
for(zeit=0;zeit<500;zeit++){
Sleep(72);}
BackLED(OFF,OFF);
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(180,0);
for (zeit=0; zeit<415; zeit++){
Sleep(72);}
MotorSpeed(120,121);
taste=PollSwitch();
taste=PollSwitch();
taste=PollSwitch();
taste=PollSwitch();
taste=PollSwitch();
taste=PollSwitch();

}
else if (taste==32)
{
taste=PollSwitch();
taste=PollSwitch();
taste=PollSwitch();
taste=PollSwitch();
taste=PollSwitch();
taste=PollSwitch();
MotorSpeed(0,0);
StatusLED(RED);
BackLED(ON,ON);
MotorDir(RWD,RWD);
MotorSpeed(150,152);
for(zeit=0;zeit<1000;zeit++){
Sleep(72);}
BackLED(OFF,OFF);
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(180,0);
for (zeit=0; zeit<415; zeit++){
Sleep(72);}
MotorSpeed(120,122);
for(zeit=0;zeit<500;zeit++){
Sleep(72);}
BackLED(OFF,OFF);
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(0,180);
for (zeit=0; zeit<415; zeit++){
Sleep(72);}
MotorSpeed(120,122);
}
else if (taste==16 || taste==2)
{
MotorSpeed(0,0);
StatusLED(RED);
BackLED(ON,ON);
MotorDir(RWD,RWD);
MotorSpeed(150,152);
for(zeit=0;zeit<1000;zeit++){
Sleep(72);}
BackLED(OFF,OFF);
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(0,180);
for (zeit=0; zeit<1000; zeit++){
Sleep(72);}
MotorSpeed(120,122);
}

}
return(0);
}

core duo
17.07.2009, 08:29
So hier ist der fertige Code:


#include "asuro.h"

int main(void){

Init();
int zeit;
unsigned int taste1, taste2;

MotorDir(FWD,FWD);
MotorSpeed(120,124);
StatusLED(GREEN);
FrontLED(ON);

while (1){
taste1=PollSwitch();
taste2=PollSwitch();
if(taste1 == taste2){
if (taste == 1){
MotorSpeed(0,0);
StatusLED(RED);
BackLED(ON,ON);
MotorDir(RWD,RWD);
MotorSpeed(150,151);
for(zeit=0;zeit<1000;zeit++){
Sleep(72);
}
BackLED(OFF,OFF);
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(0,180);
for (zeit=0; zeit<415; zeit++){
Sleep(72);
}
MotorSpeed(120,121);
for(zeit=0;zeit<500;zeit++){
Sleep(72);
}
BackLED(OFF,OFF);
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(180,0);
for (zeit=0; zeit<415; zeit++){
Sleep(72);
}
MotorSpeed(120,121);
}
else if (taste==32){
MotorSpeed(0,0);
StatusLED(RED);
BackLED(ON,ON);
MotorDir(RWD,RWD);
MotorSpeed(150,152);
for(zeit=0;zeit<1000;zeit++){
Sleep(72);
}
BackLED(OFF,OFF);
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(180,0);
for (zeit=0; zeit<415; zeit++){
Sleep(72);
}
MotorSpeed(120,122);
for(zeit=0;zeit<500;zeit++){
Sleep(72);
}
BackLED(OFF,OFF);
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(0,180);
for (zeit=0; zeit<415; zeit++){
Sleep(72);
}
MotorSpeed(120,122);
}
else if (taste==16 || taste==2){
MotorSpeed(0,0);
StatusLED(RED);
BackLED(ON,ON);
MotorDir(RWD,RWD);
MotorSpeed(150,152);
for(zeit=0;zeit<1000;zeit++){
Sleep(72);
}
BackLED(OFF,OFF);
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(0,180);
for (zeit=0; zeit<1000; zeit++){
Sleep(72);
}
MotorSpeed(120,122);
}
}
}
while(1);

return 0;
}

Asuroneuling
19.07.2009, 09:01
Ich muss euch leider enttäuschen, denn es funktioniert nicht, weil es einen Fehler im Proramm gibt, nämlich, dass die Variable taste jetzt nicht mehr deklariert ist, weshalb er das Programm nicht kompiliert.

Als ich dann taste noch einmal als unsigned char deklariert hatte, wurde das Programm zwar kompiliert, aber der Asuro fuhr nur geradeaus.

Edit: Hey Core duo könnte es vielleicht wieder an return 0; liegen wie beim letzten mal?

core duo
19.07.2009, 09:39
Post mal den Fehler

Asuroneuling
19.07.2009, 09:56
Hier das Programm von core duo


#include "asuro.h"

int main(void){

Init();
int zeit;
unsigned int taste1, taste2;

MotorDir(FWD,FWD);
MotorSpeed(120,124);
StatusLED(GREEN);
FrontLED(ON);

while (1){
taste1=PollSwitch();
taste2=PollSwitch();
if(taste1 == taste2){
if (taste == 1){
MotorSpeed(0,0);
StatusLED(RED);
BackLED(ON,ON);
MotorDir(RWD,RWD);
MotorSpeed(150,151);
for(zeit=0;zeit<1000;zeit++){
Sleep(72);
}
BackLED(OFF,OFF);
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(0,180);
for (zeit=0; zeit<415; zeit++){
Sleep(72);
}
MotorSpeed(120,121);
for(zeit=0;zeit<500;zeit++){
Sleep(72);
}
BackLED(OFF,OFF);
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(180,0);
for (zeit=0; zeit<415; zeit++){
Sleep(72);
}
MotorSpeed(120,121);
}
else if (taste==32){
MotorSpeed(0,0);
StatusLED(RED);
BackLED(ON,ON);
MotorDir(RWD,RWD);
MotorSpeed(150,152);
for(zeit=0;zeit<1000;zeit++){
Sleep(72);
}
BackLED(OFF,OFF);
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(180,0);
for (zeit=0; zeit<415; zeit++){
Sleep(72);
}
MotorSpeed(120,122);
for(zeit=0;zeit<500;zeit++){
Sleep(72);
}
BackLED(OFF,OFF);
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(0,180);
for (zeit=0; zeit<415; zeit++){
Sleep(72);
}
MotorSpeed(120,122);
}
else if (taste==16 || taste==2){
MotorSpeed(0,0);
StatusLED(RED);
BackLED(ON,ON);
MotorDir(RWD,RWD);
MotorSpeed(150,152);
for(zeit=0;zeit<1000;zeit++){
Sleep(72);
}
BackLED(OFF,OFF);
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(0,180);
for (zeit=0; zeit<1000; zeit++){
Sleep(72);
}
MotorSpeed(120,122);
}
}
}
while(1);

return 0;
}


Jetzt hier der Fehler



avr-gcc -c -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=test.lst test.c -o test.o
In file included from asuro.h:34,
from test.c:1:
c:/winavr-20090313/lib/gcc/../../avr/include/avr/signal.h:36:2: warning: #warning "This header file is obsolete. Use <avr/interrupt.h>."
test.c: In function 'main':
test.c:18: error: 'taste' undeclared (first use in this function)
test.c:18: error: (Each undeclared identifier is reported only once
test.c:18: error: for each function it appears in.)
make: *** [test.o] Error 1

> Process Exit Code: 2
> Time Taken: 00:01

core duo
19.07.2009, 10:01
also bei mir kommt da kein Fehler, hier ist die hex datei dazu

core duo
19.07.2009, 10:11
So sah das bei mir aus:


#include "asuro.h"

int main(void){

Init();
int zeit;
unsigned int taste1, taste2;

MotorDir(FWD,FWD);
MotorSpeed(120,124);
StatusLED(GREEN);
FrontLED(ON);

while (1){
taste1=PollSwitch();
taste2=PollSwitch();
if(taste1 == taste2){
if (taste == 1){
MotorSpeed(0,0);
StatusLED(RED);
BackLED(ON,ON);
MotorDir(RWD,RWD);
MotorSpeed(150,151);
for(zeit=0;zeit<1000;zeit++){
Sleep(72);
}
BackLED(OFF,OFF);
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(0,180);
for (zeit=0; zeit<415; zeit++){
Sleep(72);
}
MotorSpeed(120,121);
for(zeit=0;zeit<500;zeit++){
Sleep(72);
}
BackLED(OFF,OFF);
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(180,0);
for (zeit=0; zeit<415; zeit++){
Sleep(72);
}
MotorSpeed(120,121);
}
else if (taste==32){
MotorSpeed(0,0);
StatusLED(RED);
BackLED(ON,ON);
MotorDir(RWD,RWD);
MotorSpeed(150,152);
for(zeit=0;zeit<1000;zeit++){
Sleep(72);
}
BackLED(OFF,OFF);
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(180,0);
for (zeit=0; zeit<415; zeit++){
Sleep(72);
}
MotorSpeed(120,122);
for(zeit=0;zeit<500;zeit++){
Sleep(72);
}
BackLED(OFF,OFF);
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(0,180);
for (zeit=0; zeit<415; zeit++){
Sleep(72);
}
MotorSpeed(120,122);
}
else if (taste==16 || taste==2){
MotorSpeed(0,0);
StatusLED(RED);
BackLED(ON,ON);
MotorDir(RWD,RWD);
MotorSpeed(150,152);
for(zeit=0;zeit<1000;zeit++){
Sleep(72);
}
BackLED(OFF,OFF);
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(0,180);
for (zeit=0; zeit<1000; zeit++){
Sleep(72);
}
MotorSpeed(120,122);
}
}
}
while(1);

return 0;
}

Und hier die Meldungen:


C:\ASURO_src\FirstTry>make all
-------- begin --------
avr-gcc --version
avr-gcc (GCC) 3.3.1
Copyright (C) 2003 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Size before:
test.elf :
section size addr
.text 4216 0
.data 16 8388704
.bss 1 8388720
.noinit 0 8388721
.eeprom 0 8454144
.stab 5772 0
.stabstr 2329 0
Total 12334


Size after:
test.elf :
section size addr
.text 4216 0
.data 16 8388704
.bss 1 8388720
.noinit 0 8388721
.eeprom 0 8454144
.stab 5772 0
.stabstr 2329 0
Total 12334


Errors: none
-------- end --------

> Process Exit Code: 0

Asuroneuling
19.07.2009, 15:55
Schick mir mal den Quellcode von deiner asuro.h und asuro.c Datei

core duo
19.07.2009, 16:04
Hat meine Hex funktioniert?!

Asuroneuling
19.07.2009, 16:35
Er ist kurz nach vorne gefahren und hat sich dann unendlich im Kreis gedreht.

Asuroneuling
19.07.2009, 16:37
Funktioniert auch mit deinen Dateien nicht.

core duo
19.07.2009, 16:39
war das zufälligerweiße immer nach links?

Was für lichtverhältnisse herschen bei dir?