PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ASURO Lib Problem (Anfänger)



wernerlicious
25.09.2009, 19:45
Hallo an Alle,

zu Allererst möchte ich mich dafür rechtfertigen, dass ich hier ein neues Thema eröffne, aber ich habe hier echt keinen Überblick mehr.
Ich habe hier im Forum schon alles Mögliche durchsucht, aber finde doch keine passende Antwort, darum wäre ich um jeden Rat dankbar.

Ich habe den Asuro ungefähr eine Woche und habe auch schon ein kleines bisschen damit rumexperimentiert. Doch da ich bemerkte, dass ich keine Anweisung nur für eine bestimmte Zeit festsetzen konnte, war ich gezwungen mich in das Thema library reinzulesen.

Überall steht ändern, ändern, ändern. Ich habe mir alle möglichen Sachen runtergeladen, und habe ehrlich gesagt gar keinen Überblick mehr.
Entweder bin ich einfach doof oder ich bin sowas von unfähig.

Daher meine Frage: Könnte mir jemand bitte jmd. genau erklären wie ich was machen muss, um endlich eine zeitlichbegrenzte bedingung programmieren zu können, ohne dass immer diese Fehlermeldung kommt.

In Sachen Programmieren bin ich ein totaler Anfänger, habe mir jedoch schon die Grundkenntnisse versucht anzueeignen, allerdings habe ich keinen Überblick über diese Makefiles, Lib und so was.

Vielleicht findet ja jmd. etwas Zeit dafür, ich wäre echt verdammt dankbar darüber.


Lg Marcel

the.speciali
25.09.2009, 20:03
Hi,

mormalerweise sollte das ganz eifnach mit dem Sleep() realisierbar sein.

Dazu baust du eine Schleife ein und lässt zum Beispiel das Sleep(72) (nach der Formel in der Dokumentation ist das eine Millisekunde) 1000mal durchlaufen schon wartet dein Asuro eine sekunde;)


int t;
for (t=0 ;t<1000; t++)
{
Sleep (72);
}


mfg
the.speciali

ps: Sleep() oder sleep() bin mir jetzt nimmer ganz sicher^^

radbruch
25.09.2009, 20:10
Hallo

Nur keine Panik. Es gibt grob drei unterschiedliche Versionen der asuro-Lib: die orginale CD-Lib, die erweiterte Lib ab ca. V2.3 und die aktuelle ab ca. V2.6 (mit vielen Verbesserungen inzwischen V2.8 oder so).

Bis V2.6 bestand die Lib einfach nur aus den Dateien asuro.h und asuro.c Um eine andere Version zu installieren muss man nur diese beiden Dateien in dem Verzeichniss überschreiben in dem sich das eigene Programm (und das Makefile befindet). Alle Versionen gibt es hier:

http://sourceforge.net/projects/asuro/files
(auf AsuroLib klicken um alle Archive anzuzeigen)

Nach dem Tausch der Dateien sollte man ein Clean und ein MakeAll machen.

Ich empfehle die Version 2.3 aus folgenden Gründen:

Sie enthält die sehr praktischen Funktionen Msleep() (Pause in Millisek.), PrintInt() (binäre Werteausgabe) und getTime() (Millisek. seit Systemstart) und ist noch so nahe an der Hardware des asuro um zu erkennen, wie das Zusammenspiel von Soft- und Hardware wirklich funktioniert (oder eben nicht funktioniert:)

Die aktuelle Lib mit ihren mächtigen Funktionen funktioniert zwar super, hat eine eigene Install-Funktion, verschwendet weniger Speicher im Kontroller und die kleineren Hex-Dateien kann man auch schneller flashen. Aber wie die Funktionen wirklich funktionieren weiß außer ein paar Entwicklern eigentlich keiner genau.

Ich kann jetzt nicht einschätzen ob dir das wirklich weiterhilft, wenn du nicht klarkommst, frage einfach nach. Dafür ist das Forum übrigends gedacht, du brauchst deshalb keine Entschuldigung oder Rechtfertigung wenn du einen Beitrag schreibst.

Gruß

mic

P.S. Beim asuro ist es ein großes Sleep().

wernerlicious
25.09.2009, 22:00
Hallo,

also erst mal Dankeschön für eure Antwort.
Um ehrlich zu sein habe mit irgendwelchen Links gerechnet oder mit Ermahnungen.

Also ich habe mir die V2.3 auf der genannten Seite runtergeladen und installiert.
Habe diese dann mit dem vorherigen examples und lib ordner ausgetauscht.

Daraufhin das Notepad geöffnet und ein testprogramm mit vorhandenen Msleep Funktionen geöffnet. Motortest hieß das glaube ich.
Allerdings hat dann bloß die Status LED ihre Farbe von grün auf rot gewechselt im Takt, die Motoren im Gegensatz haben rein gar nichts getan.
Egal, aber wenigstens hat ja die Funktion mit dem Msleep funktioniert.

Dann habe ich eben dieses Standart-Programm geöffnet

#include "asuro.h"

int main(void)
{
Init();

while(1);
return 0;
}

und es kommt folgendes beim Ausführen von make all:

C:\Dokumente und Einstellungen\Marcel\Eigene Dateien\ASUROROBOTER\ASURO_src\FirstTry>make all
-------- begin --------
avr-gcc --version
avr-gcc (WinAVR 20090313) 4.3.2
Copyright (C) 2008 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.

avr-gcc -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=test.o test.o asuro.o --output test.elf -Wl,-Map=test.map,--cref -lm
test.o: In function `main':
C:\Dokumente und Einstellungen\Marcel\Eigene Dateien\ASUROROBOTER\ASURO_src\FirstTry/test.c:7: undefined reference to `Msleep'
C:\Dokumente und Einstellungen\Marcel\Eigene Dateien\ASUROROBOTER\ASURO_src\FirstTry/test.c:9: undefined reference to `Msleep'
make: *** [test.elf] Error 1

> Process Exit Code: 2


Was hat das zu bedeuten?
Jetzt funktioniert gar nichts mehr.
Sollte ich am Besten ALLES runterwerfen und mir alles neuinstallieren?
Ich habe bloß die Befürchtnis, dass das dann mit dem Flashprogramm wieder Schwierigkeiten gibt, welches ich nach Langem hin und her funktionstüchtig gemacht habe.

Wie immer wäre ich dankbar um einen Rat.

Danke schon mal im Vorraus.

Lg Marcel

Valen
25.09.2009, 23:14
Den fehlermeldung sagt es weiss nicht was 'Msleep' ist, weil es bis auf diesen stelle noch nie davon gehört hat. Den code fur Msleep steht im /lib/asuro.c datei, stat dem mappen structur im asurolib_v23.zip datei. Wo hast du diesen dateien un mappen im asurolib-v23.zip ausgepackt/ausgetauscht? Irgend wie ist deiner austauschen der examples und lib dateien schief gegangen.

Der makefile im asurolib_v23 FirstTry order versucht den lib im folgendem pfad zu finden:

c:/winavr/avr/lib

Das nachste steht im FirstTry asurolib-v23 makefile

# Define directories, if needed.
DIRAVR = c:/winavr
DIRAVRBIN = $(DIRAVR)/bin
DIRAVRUTILS = $(DIRAVR)/utils/bin
DIRINC = .
DIRLIB = $(DIRAVR)/avr/lib

radbruch
26.09.2009, 07:49
Hallo

Wenn das Motortestprogramm mit Msleep() fehlerfrei übersetzt wurde scheint die neue Lib (in diesem Verzeichniss) richtig installiert zu sein. Warum aber wird bei diesem Programm:

#include "asuro.h"

int main(void)
{
Init();

while(1);
return 0;
} ein Msleep() angemeckert wo doch offensichtlich keins drin ist? Und noch dazu in den Zeilen 7 und 9, es gibt gar nicht soviele Zeilen. Ich vermute den Hauptfehler beim Gebrauch von Notepad: Speichern vergessen vor dem Kompilieren.

Mit #include "asuro.c" (in Anführungszeichen) wird diejenige Datei asuro.c zuerst eingebunden die sich im selben Verzeichniss wie das eigentliche C-Programm befindet. Nur wenn sich im selben Verzeichniss keine asuro.c befindet wird der AVR-Pfad durchsucht. Deshalb müssen alle alten Dateien asuro.h und asuro.c in allen Verzeichnissen getauscht (überschrieben) werden. Einen Überblick kann man sich mit der Suchfunktion des Explorers verschaffen.

Gruß

mic

wernerlicious
12.10.2009, 15:13
Hey hey,

sry, dass ich mich erst jetzt wieder melde, Schulstress. ](*,)

Also ich habe die Nase voll von dem doofen Mist Ding,
ich mache es jetzt so, ich shcmeiße komplett ALLES was mit Asuro zu tun hat runter, komplett, und dann fang ich von ganz vorne an.

Könnte mir jmd vll eine Anleitung dafür geben oder einen Rat,
weil am Schluss habe ich wieder tausende Sachen installiert und nichts passiert.


Ich benutze zum Flashen die USB Schnittstelle.

Wäre nett wenn sich jmd dafür Zeit nehmen würde
und sry für meine Inkompetenz

Lg Marcel

ello
12.10.2009, 18:22
Hallo

[gefährliches Halbwissen]
Wenn mich nicht alles täuscht, brauchst du nur 3 Dinge.
win-avr
asuro-lib (installer - denn da ist auch schon eine IDE bei)
das Flashtool
[/gefährliches Halbwissen]

Dann (wie ich kürzlich gelernt habe) darauf achten, dass deine Projekte in einem Ordner sind wo kein Leerzeichen im Pfad vor kommt. (Also nicht C:\users\bla blub\ sondern eher C:\users\blablub\ oder ähnliches ;))
Welcher COM-Port deinem Transceiver zugewiesen wurde, findest du im Gerätemanager raus.

so far ello

wernerlicious
12.10.2009, 20:30
Hey hey,

danke für deine Hilfe.

Nun habe ich so gut wie alles runtergeworfen.
Das flash tool funktioniert einwandfrei, wie vorher auch.

Jetzt habe ich dieses winavr runtergeladen und im c verzeichnis installiert.

Habe mir unter eigene Dateien einen Ordner eingerichtet mit den ganzen Sachen vom Asuro.

Dort ahbe ich auch den entpackten Ordner asurolib_v2.3 gespeichert, dessen beispiel programm first try im notepad geöffnet habe.
Bei dem mach ich dann "Make" und was kommt:

-------- begin --------
avr-gcc --version
avr-gcc (WinAVR 20090306rc1) 4.3.2
Copyright (C) 2008 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.

make: *** No rule to make target `test.hex', needed by `all'. Stop.

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


](*,)
Habe im neuinstallierten Notepad diesen "Make" Befehl so eingerichtet, dass es von dem asurolib_v2.3 Ordner zugreift.
Das wird wohl auch falsch sein nehme ich an oder?


Außerdem habe ich an der Lib nich wirklich vioel verändert, versteh nich wo ich was einfügen muss.
Irgendwie möchte das nich bei mir.

Lg Marcel

flieder
13.10.2009, 17:39
Hi wernerlicious,
bin das erste Mal hier im Forum und hab zufällig gesehen, dass du das gleiche Problem hast, wie ich.
Die Sleep Funktion geht bei mir nur, wenn ich vorher sei() aufrufe.
Und PollSwitch funktioniert bei mir nur, wenn ich in der asuro.c den Sleep() Aufruf aus PollSwitch entferne.
Vielleicht hilft das hier im Forum, die Ursache besser einzukreisen.

flieder
13.10.2009, 18:16
Bei mir klappt der Aufruf des Compiliers oft erst beim 2. Mal. (ohne dass ich das Programm ändern muss)

Gruß Pit

ello
13.10.2009, 18:46
Bei dem mach ich dann "Make" und was kommt:

-------- begin --------
avr-gcc --version
avr-gcc (WinAVR 20090306rc1) 4.3.2
Copyright (C) 2008 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.

make: *** No rule to make target `test.hex', needed by `all'. Stop.

> Process Exit Code: 2
> Time Taken: 00:01Und das Makefile heißt auch immernoch "Makefile" und die Quelldatei test.c?

wernerlicious
14.10.2009, 15:13
Hallo,

also danke erst mal für eure Bemühungen.
Bei mir funktioniert es immer noch nicht so richtig.

Ich berichte jetzt mal wie ich alles geordnet habe:

1. ICh habe mir das WinAVR-20090306rc1 runtergeladen und installiert.
Dieses befindet sich im C:\ Verzeichnis unter dem gleichen Namen (also der Ordner).
In diesem befindet sich unteranderem der Ordner lib

2. Dann habe ich einen seperaten Ordner in den Eigenen Dateien Asuroroboter, in dem sich wiederum ein entpackter Ordner names asurolibV2.3 befindet. (Der dürfte ja bekannt sein) In dem befindet sich der Ordner lib und der Ordner Examples. Die im lib Ordner auffindbaren Datein ( ich glaube es sind 3 Stück) habe ich zusätzlich zum Unterordner von WinAVR-20090306rc1 Ordner ( dem lib Ordner ) im C:\ Verzeichnis hinzugefügt, und NICHT komplett ausgetauscht.

3. Daraufhin habe ich das Notepad geöffnet und zuerst dieses MAKE und CLEAN erstellt. Die Datei, worauf sich das Make bezieht habe ich aus dem asurolibV2.3 Ordner genommen, genauso so wie dieses CLEAN.

4. Dann habe ich die Datei aus dem Unterordner First Try vom asurolibV2.3 Hauptordner die Datei test geladen. (Sie hieß nie test.c oder so, schon immer test)

Dann habe ich MAKE genutzt und es kommt:

> "C:\Dokumente und Einstellungen\Marcel\Eigene Dateien\ASUROROBOTER\asurolibV2.3\examples\FirstTr y\Test-all.bat"

C:\Dokumente und Einstellungen\Marcel\Eigene Dateien\ASUROROBOTER\asurolibV2.3\examples\FirstTr y>make all
Der Befehl "make" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.

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

Dann dachte ich mir in der makefile vom First Try Ordner könnte vll nur winavr als Bezugsquelle stehen, wie richtig war, was sich im nachhinein herausstellte. winavr habe ich dann mit WinAVR-20090306rc1 geändert und es nochmals probiert.

Leider zwecklos.

Dann habe ich den kompletten Ordner im C:\ von WinAVR-20090306rc1 zu winavr umbenannt und die Makefile im Firsttry Unterordner wieder auf winavr geändert.

Leider zwecklos.

Denke ich einfach zu kompliziert oder bin ich einfach doof?

Lg Marcel

radbruch
14.10.2009, 15:52
Hallo

So auf den ersten Blick: Die Änderungen der Path-Einträge fehlen noch. Deshalb wird wohl make nicht gefunden, weil es nicht im aktuellen Suchpfad liegt.

Warum machst es nicht stur nach der asuro-Beschreibung mit den Dateien der CD? Wenn das funktioniert kannst du das Update auf eine neuere Version der Lib immer noch nachholen. Aktuelle WinAVR- und GCC-Versionen können unter Umständen neue Probleme verursachen.

Meine Installation liegt schon einige Jahre zurück, vielleicht sollte dir das mal jemand erklären der es erst kürzlich gemacht hat.

Tapfer bleiben.

Gruß

mic

Valen
14.10.2009, 17:29
Versuch das mal mit den Asuroroboter mappe irgendwo auf eine andere stelle in deine festplatte zu speichern. Zbs. C:\Asuroroboter

Weil das pfad mit "C:\Dokumente und Einstellungen\Marcel\Eigene Dateien\ASUROROBOTER\asurolibV2.3\examples\FirstTr y\" auch ein (zwei!) leerzeichen drin hat.

wernerlicious
14.10.2009, 18:49
Guten Abend,

also ich habe jetzt mit Hilfe der CD alles wieder so eingerichtet wie es am Anfang war.
Außerdem habe ich nach Valens Rat den Ordner ASUROROBOTER in C:\
verschoben.

Das Standart Programm geht, allerdings wie erwartet, die Msleep Funktion nicht.
Außerdem funktioniert auch nicht, dass ich ein anderes Programm ( dass sich in einem anderem Programm befindet ) öffne, weil das Prrgamm mir keine .hex datei schreibt.


Nun steht wieder das Problem mit der lib an.


Ich würde jetzt die neue lib V2.3 der sich im C:\ befindlichen Standart lib hinzufügen und gleichnamige Dateien mit der neuen überschrieben, liege ich da richtig?
Danach müsste ich das ganz normale Standart Programm öffnen können und ein Programm MIT einer Msleep Funktion erstellen können.
Habe ich das so richtig verstanden?

Lg Marcel

wernerlicious
21.10.2009, 15:43
egal, ich probiere es weiterhin mit der standart-Lib.

Finde ich im Nachhinein viel komplexer aber gut zum lernen.

Trotzdem danke für die Hilfe,

Lg Marcel

Valen
21.10.2009, 17:22
Hallo Wernerlicious,

Ich versuche dich wieder etwas zu helfen. Das hier ist aus deinem bericht von 14-ten oktober, 16:13


Hallo,

also danke erst mal für eure Bemühungen.
Bei mir funktioniert es immer noch nicht so richtig.

...

2. Dann habe ich einen seperaten Ordner in den Eigenen Dateien Asuroroboter, in dem sich wiederum ein entpackter Ordner names asurolibV2.3 befindet. (Der dürfte ja bekannt sein) In dem befindet sich der Ordner lib und der Ordner Examples. Die im lib Ordner auffindbaren Datein ( ich glaube es sind 3 Stück) habe ich zusätzlich zum Unterordner von WinAVR-20090306rc1 Ordner ( dem lib Ordner ) im C:\ Verzeichnis hinzugefügt, und NICHT komplett ausgetauscht.

...Ich denke nicht das diesen asuro.c und asuro.h datei-en von der 2.3 lib zu dem WinAVR-20090306rc1/lib mappe kopiert werden mussen. Ich habe nochmals die makefile angeschaut. Meines wissen mussen sie dort bleiben wo sie sind (im asurolibv23/lib/src und /lib/inc) wen du die v2.3 examples compilieren möchtest. Die makefile sucht diesen asuro.c und asuro.h dateien im asurolibv23/lib/src und asurolibv23/lib/inc verzeichnis automatisch. (den make program geht aus von den mappe wo das makefile. und dein program steht, geht dan 2 'etages' runter im pfad, und dan wieder 2 'etages' hoch im /lib/inc fur den asuro.h datei, und /lib/src fur den asuro.c datei )

Wen du einer der orginale projekt mappen von dem Asuro CD kopiert hat(zbs. den asuro_src/FirstTry mappe komplet kopiert und umgenannt in asuro_src/MeinVersuch) und verwenden möchtest, dan muss du den 'neue' asuro.c und asuro.h dateien (aus asurolibv23/lib/src und asurolibv23/lib/inc ) kopieren und dammit den alte asuro.c und asuro.h (von dem orginale lib neben das test.c datei) uberschreiben. Weil die orginale makefile die asuro dateien im gleichen mappe erwartet.



4. Dann habe ich die Datei aus dem Unterordner First Try vom asurolibV2.3 Hauptordner die Datei test geladen. (Sie hieß nie test.c oder so, schon immer test)Das stimmt. Windows last diesen .c oder .h nicht immer sehen. (und einer ganze reihe von andere 'file-extensions') Das ist ein option im explorer-menu: Extra-menu/Mappe-optionen/Wiedergabe-blat/(dan irgendwo in der liste). Ich hoffe ich habe das richtig übersetzt aus niederlandisch. Sonnst lass ich mich gerne verbessern durch jemand mit einer Deutschen windows version.

Ich hoffe du hast nun mehr gluck dammit.

Sternthaler
01.11.2009, 03:21
Hallo zusammen,

wenn es um die Installation der Lib und um das Zusammenspiel von Lib, WinAVR und dem eigenen Programm geht, könnt ihr mal hier nachsehen: https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=33149

Gruß Sternthaler