was willst du denn flashen? zeig mal deinen programmcode...
Ein "Hallo" an alle
Ich bin neu hier in der Gegend und besitze seit kurzem einen Aruso
Bis jetzt ging alles glatt aber ich hänge mit meinem Projekt fest.
Aufbau top - Flashen top aber...
sobalt ich einen anderen fertigen File übertrage, rührt er sich nicht mehr.
Der Selbsttest von der CD Rom ist der einzigste File der funzt.
....und der läuft einwandfrei.
Eigendlich brauche ich nur die Funktion der Linenverfolgung.
Was mache ich falsch ?
Gruß Lamameister
was willst du denn flashen? zeig mal deinen programmcode...
hallo damaltor
schau mal was das ist
Ich habe den verdacht das beim wandeln von dem C quellcode in die Hex was schief läuft.
Wie oder was gibt es zu beachten.?
Danke im vorraus
Quellcode
zb. diesen hier:
Code:#include "asuro.h" #define SPEED 0x8F int speedLeft,speedRight; unsigned int lineData[2]; int ADOffset; void LineLeft (void) { speedLeft += 1; /* links mehr Gas geben */ if (speedLeft > 0xFE) speedLeft = 0xFF; } void LineRight (void) { speedRight += 1; /* rechts mehr Gas geben */ if (speedRight > 0xFE) speedRight = 0xFF; } int main(void) { int i; unsigned char j; Init(); FrontLED(ON); for (j = 0; j < 0xFF; j++) LineData(lineData); LineData(lineData); ADOffset = lineData[LEFT] - lineData[RIGHT]; speedLeft = speedRight = SPEED; for(;;) { LineData(lineData); i = (lineData[LEFT] - lineData[RIGHT]) - ADOffset; if ( i > 4) { StatusLED(GREEN); LineLeft(); } else if ( i < -4) { StatusLED(RED); LineRight(); } else { StatusLED(OFF); speedLeft = speedRight = SPEED; } MotorSpeed(speedLeft,speedRight); } return 0; }
ich habe deinen beitrag geändert (bitte benutze ab sofort den code button beim posten von quellcode!) und meinen namen geändert XD
bei diesem code steht der roboter still.
das problem ist, dass die geschwindigkeiten immer wieter erhöht werden. du gragst zwar ab, ob die geschwindigkeiten größer als 0xFE werden (bei dieser gelegenheit: warum eigentlich hex-zahlen? man muss ein zeichen mehr tippen, und man spart nichts ein für das programm. eigentlich wird es dadurch nicht übersichtlicher.), und setzt sie dann auf 0xFF. beim nächsten erhöhungsdurchlauf werden die speedwerte jedoch wieder +1 gerechnet (oxFF + 1 = 0x00), und damit steht der roboter.
die Variable ADOffset ist nicht definiert worden.
ich glaube ausserdem nicht dass der compiler for(; akzeptiert. setze an diese stelle lieber while(1).
das sind einige grobe fehler. eigetlich dürfte die kompilierung nicht klappen, schon allein weil die variable nicht deklariert ist. kommt beim kompilieren keine fehlemeldung? welche ausgabe bekommst du beim kompilieren? bitte poste auch diese mit dem code button.
Hi damaltor
besten dank für deine Antwort.
soweit verstehe ich das ja aber wiederrum verstehe ich nicht warum andere solche codes die nicht funzen auf ihrer website zur verfügung bzw zum download stellen?!?!
Ich musst gestehen das ich noch nicht in der Lage bin selber zu schreiben - aufgrung mangels wissen...... aber es kann doch nicht so schwierig sein eine Linienverfolgung bei möglichst geringer Geschwindigkeit entstehen zu lassen. ( Wo gibt es soetwas) ))
Alles was ich bis jetzt kompiliert habe kommt beim kompilieren ohne fehlemeldung. Aller Anfang ist schwer
Danke für deinen Hinweis ... ich lerne immer mehr - oder-?!
Gruß lamameister
Code:D:\Dokumente und Einstellungen\Eigene Dateien\Asuro\asuro_src\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 1512 0 .data 0 8388704 .bss 1 8388704 .noinit 0 8388705 .eeprom 0 8454144 .stab 3120 0 .stabstr 1763 0 Total 6396 Size after: test.elf : section size addr .text 1512 0 .data 0 8388704 .bss 1 8388704 .noinit 0 8388705 .eeprom 0 8454144 .stab 3120 0 .stabstr 1763 0 Total 6396 Errors: none -------- end -------- > Process Exit Code: 0
Weil die alle schw*l sind, die haben nur scheiße auf ihrer CD.
ich hatte am anfang die selben Probleme mit deren mist, den ganzen rotz kannste vergessen, brauchste eh net, lad die die aktuelle lib runter und nimm dir als hilfe beim programmieren die HELP-File von der LIB, die funktionen sind da gut ersichtlich und so sachen wie linienverfolgung-test kannste dir da mal allegemein angucken, aber nicht direkt verwenden
beherrsch dich, Mr.Roboto...
lamameister:
wo hsat du den code denn her? die compilation ergab keinen fehler, also scheint doch alles in butter zu sein.
fertige codes runterzuladen, die man nicht versteht, und deren fehler man nicht findet, ist sinnlos. wir werden dir auch keine fertigen codes geben - entweder du findest die im forum, oder du musst doch selbst ran.
mach dir mal einen plan: was muss denn passieren, damit asuro auf der linie bleibt? wie man das in einen programmcode fasst, das können wir später mal schauen. mach dir zuerst mal einen ungefähren plan, indem du schrittweise beschreibst was passieren muss.
wenn du am ende das programm selbst geschrieben hast, ist es besser weil du dann wirklich was gelernt hast, das verstehst was er tut und warum er das tut, und weil du selbst nach fehlern suchen kannst.
Hallo!
@lamameister und Mr.Roboto:
Ich hab das Programm gerade getestet!
Es ist fehlerfrei und lässt sich ohne irgendwelche Probleme übersetzen.
Auch am Asuro funktioniert es, wenn auch nicht so gut wie wastes PID Regler. Ich würde dir diesen empfehlen da er wirklich sehr sauber arbeitet!
Also nicht immer gleich über andere schimpfen wenn der Fehler bei Euch selbst liegt. Da hat jemand anderer vielleicht viel Arbeit reingelegt...
Seit froh dass so viele Quellcodes öffentlich zugänglich sind.
@damaltor:
ADOffset sowie ein paar andere Variablen sind global definiert worden.
die Variable ADOffset ist nicht definiert worden.
ich glaube ausserdem nicht dass der compiler for(;Zwinkern akzeptiert. setze an diese stelle lieber while(1).
for(;;) ist gleichwertig mit while(1), allerdings ist while(1) eindeutig die "schönere" Schreibweise.
Übrigens hast du deinen Namen noch nicht genug ausgebessert :-D
Grüße,
Harri
Grüße,
Harri
wusst edoch dass da was net stimmt... XD jetz is besser
Hallo zusammen,
erst einmal schließe ich mich damaltor an: Mr.Roboto etwas mehr sinnvolles bitte!
@lamameister
Es wurde dir empfohlen, dass du dir die 'aktuelle LIB' runterladen sollt.
Wenn du tatsächlich ein absoluter Anfänger bist, dann lass es im Moment erst einmal lieber sein, da die Installation der LIB noch weitere Probleme für dich bringen wird. Bleib erst einmal bei der Software, die zum Asuro mitgeliefert wurde. (Ist so schon schwer genug.)
damaltor hat dich ja schon darauf hingewiesen. (Ja, ich gebe ihm Code. Tschuldigung damaltor)
Hier das was er meint: Achte auf das 'speedLeft = 0xFE'
Wie damaltor schreibt, würde der Wert von speedLeft in einem weiteren Durchlauf erhöht, so dass er dann 0xFF + 1 = 0 wird. Das ist eben eine Vollbremsung.Code:void LineLeft (void) { speedLeft += 1; /* links mehr Gas geben */ if (speedLeft > 0xFE) speedLeft = 0xFE; }
P.S: Und es ist doch sehr, sehr schwierig eine Linie wirklich gut zu verfolgen.
Dann noch zu dem ADOffsetwert mal ein kleines Bild, da hier etwas Erklärung dazu gehört. (Lasst ADOffset einfach weg, wenn ihr eine Linie unter dem Sensor habt.)
Lieber Asuro programieren als arbeiten gehen.
Lesezeichen