PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Neueste Lib-Verständnissproblem



frank1210
28.01.2010, 18:34
Hi, ich denke mir das dies hier schon sooooooo oft angesprochen wurde. Aber ich bin am verzweifeln. Ich will akso die neuste Lib benutzen. Also: runtergeladen-entpackt-Makefile geändert.
wenn ich jetzt mit Programmers Notpad die test.c Datei öffne, und ein code einfüge der eine neuere Lib braucht, bekomme ich nur fehlermeldungen.
Und die LIB als EXE Datei, wo ich dann das Programm ASUROFLASCH habe, was mache ich damit. Gibs da ne Anleitung auf deutsch. Vieleicht stelle ich mich auch zu blöd an.
Gruß Frank

frank1210
08.02.2010, 15:24
um zu Testen ob ich mit der neuen Lib zurechtkomme; wie müsste ein kurzes Programm mit Go und Turn aussehenz.B: kurz fahren-90grad-fahren??

Valen
08.02.2010, 17:52
Genau Welcher fehlermeldungen hast du bekommen? Bitte versuch das nochmahls und poste den text. Das mit die LIB und EXE datei usw. verstehe ich nicht was du meinst.

frank1210
09.02.2010, 07:33
Die exe datei meine ich , die man hierhttp://sourceforge.net/projects/asuro/runterladen kann. Gibs da ja auch als ZIP.
Aber ganz ehrlich-- beim Umgang damit blicke ich nicht durch. Deshalb wollte suche ich Beispiele um es auszuprobieren.

the_muck
09.02.2010, 08:50
Moin,
ich habe mich damit gestern auch beschäftigt, lade dir die *.exe oder *.zip runter bei der exe wird das Flash Toll noch mit installiert. In der Lib ist eine Index.html datei zur Lib wo eigentlich alles sehr gut beschrieben ist.

in myasuro.h muss man noch die Parameter des Ausros bearbeiten was davon abhängt welche S/W Scheibe drauf ist. Da blicke ich aber gerade auch nicht durch. Speed verändert sich aber der Winkel funktioniert nicht und da ich kein IR Sender habe kann ich das hier nicht machen.

https://www.roboternetz.de/phpBB2/viewtopic.php?t=31073

Hier mein Programm was ich gestern zum testen genommen habe.


#include "asuro.h"
int i;
int main(void)
{
Init();
EncoderInit ();
Msleep(200);
for (i = 0; i < 4; i++)
{

GoTurn ( 50, 0,150); //50 nach Vorne v=150
Sleep(50); //Pause
GoTurn ( 0,90,150); //90grad drehen mit v=150
Sleep(50); //Pause
GoTurn ( 0,-90,150); //90grad zurück drehen mit v=150
Sleep(50); //Pause
GoTurn ( -50, 0,150); //50 zurück v=150

}



return 0;
}

weiter bin ich noch nicht :) bin froh das ich ihn nach einigen Jahren wieder zum laufen bekommen habe...

In dem Lib Ordner sind verschieden Beispiele, unter anderem FirstTry damit kann man eigentlich gut anfangen. Behält man die Ordnerstruktur und Dateinamen bei so muss man auch nichts am Makefile ändern. Ich hatte Probleme mit dem EncoderInit (); in FirstTry, das musst vor dem ersten Compilieren in AVR Studio 4.13 drin stehen dann ging alles.

frank1210
09.02.2010, 08:58
OK.Danke werde ich mal versuchen

Valen
09.02.2010, 17:23
Die Setup .exe enthalt das Flashtool/Compiler umgebung program von Osser (auch 'Eierlegendewolmilchsau' genant in einer thread irgendwo in dieser Asuro teil des Forums) UND die erweiterte lib. Die .zip datei enthalt nur die erweiterte lib.

Osser's program macht meineswissen ein inkorrektes installation auf meine Vista. Die projekten werden auf die falsche platz installier wodurch ich immer UAC meldungen bekomme. Deshalb benutze ich es nicht. (vieleicht hat er das schon verbessert, weis nicht mehr welcher version, letztes halbes jahr oder so)

Die zip datei ist relatief einfach in gebrauch wen du nicht vergisst die pfad angaben in dem makefiles zu ändern. Auch mus man erst verschieden werten in my_asuro.h ergänzen (odometrisensoren helligkeiten, ticks pro meter, Taste kennwert usw. fur dein Asuro) und dan den lib selbst compilieren (bei jede neue änderung wieder). Dafur gibt es .bat dateinen die das automatisch machen.

Die makefile von deine projekten/beispiel projekten wissen schon wo die lib dateien versteckt sind in dem mappe structur. Du muss nur das pfad auf deinem festplatte zu den compiler anpassen. Das compilieren mache ich oft in einer ms-dos/console schirm mit dat kommando 'make all'. Aber doppelclicken auf die .bat dateien gehen auch.

Dazu gibt es in dem zip datei auch einer install.txt Beschreibt alles was du wissen soll.

frank1210
12.02.2010, 15:10
OK, hab ich alles so gemacht. hier mal mein MAKEFILE:
# WinAVR Sample makefile written by Eric B. Weddington, Jörg Wunsch, et al.
# Released to the Public Domain
# Please read the make user manual!
#
#
# On command line:
#
# make all = Make software.
#
# make clean = Clean out built project files.
#
# make coff = Convert ELF to AVR COFF (for use with AVR Studio 3.x or VMLAB).
#
# make extcoff = Convert ELF to AVR Extended COFF (for use with AVR Studio
# 4.07 or greater).
#
# make program = Download the hex file to the device, using avrdude. Please
# customize the avrdude settings below first!
#
# make filename.s = Just compile filename.c into the assembler code only
#
# To rebuild project do "make clean" then "make all".
#


# MCU name
MCU = atmega8

F_CPU = 8000000UL

# Output format. (can be srec, ihex, binary)
FORMAT = ihex

# Target file name (without extension).
TARGET = test

# Optimization level, can be [0, 1, 2, 3, s]. 0 turns off optimization.
# (Note: 3 is not always the best optimization level. See avr-libc FAQ.)
OPT = s

# additional Include path for libraries
#LIBPATH = C:/ASURO_SRC/AsuroLib/lib
LIBPATH = C:\ASURO_src\AsuroLib
LIBFILE = asuro

# additional include path for header files
INCPATH = $(LIBPATH)/inc

# List C source files here. (C dependencies are automatically generated.)
SRC = $(TARGET).c

# If there is more than one source file, append them above, or adjust and
# uncomment the following:
SRC += asuro.c

# You can also wrap lines by appending a backslash to the end of the line:
#SRC += baz.c \
#xyzzy.c



# List Assembler source files here.
# Make them always end in a capital .S. Files ending in a lowercase .s
# will not be considered source files but generated files (assembler
# output from the compiler), and will be deleted upon "make clean"!
# Even though the DOS/Win* filesystem matches both .s and .S the same,
# it will preserve the spelling of the filenames, and gcc itself does
# care about how the name is spelled on its command-line.
ASRC =




# Optional compiler flags.
# -g: generate debugging information (for GDB, or for COFF conversion)
# -O*: optimization level
# -f...: tuning, see gcc manual and avr-libc documentation
# -Wall...: warning level
# -Wa,...: tell GCC to pass this to the assembler.
# -ahlms: create assembler listing
CFLAGS = -g -O$(OPT) -I$(INCPATH) \
-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums \
-Wall -Wstrict-prototypes \
-Wa,-ahlms=$(<:.c=.lst)

# Virtual path for Source Files
VPATH = $(LIBPATH)

# Optional assembler flags.
# -Wa,...: tell GCC to pass this to the assembler.
# -ahlms: create listing
# -gstabs: have the assembler create line number information; note that
# for use in COFF files, additional information about filenames
# and function names needs to be present in the assembler source
# files -- see avr-libc docs [FIXME: not yet described there]
ASFLAGS = -Wa,-ahlms=$(<:.S=.lst),-gstabs



# Optional linker flags.
# -Wl,...: tell GCC to pass this to linker.
# -Map: create map file
# --cref: add cross reference to map file
LDFLAGS = -Wl,-Map=$(TARGET).map,--cref
LDFLAGS += -L$(LIBPATH)



# Additional libraries
#
# Minimalistic printf version
#LDFLAGS += -Wl,-u,vfprintf -lprintf_min
#
# Floating point printf version (requires -lm below)
#LDFLAGS += -Wl,-u,vfprintf -lprintf_flt
#
# -lm = math library
LDFLAGS += -lm
LDFLAGS += -l$(LIBFILE)



# ---------------------------------------------------------------------------

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


# Define programs and commands.
SHELL = sh

CC = avr-gcc

OBJCOPY = avr-objcopy
OBJDUMP = avr-objdump
SIZE = avr-size

REMOVE = rm -f
COPY = cp

HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex
ELFSIZE = $(SIZE) -A $(TARGET).elf

FINISH = echo Errors: none
BEGIN = echo -------- begin --------
END = echo -------- end --------




# Define all object files.
OBJ = $(SRC:.c=.o) $(ASRC:.S=.o)

# Define all listing files.
LST = $(ASRC:.S=.lst) $(SRC:.c=.lst)

# Combine all necessary flags and optional flags.
# Add target processor to flags.
ALL_CFLAGS = -mmcu=$(MCU) -DF_CPU=$(F_CPU) -I. $(CFLAGS)
ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS)



# Default target.
all: begin gccversion sizebefore $(TARGET).elf $(TARGET).hex $(TARGET).eep \
$(TARGET).lss sizeafter finished end


# Eye candy.
# AVR Studio 3.x does not check make's exit code but relies on
# the following magic strings to be generated by the compile job.
begin:
@$(BEGIN)

finished:
@$(FINISH)

end:
@$(END)


# Display size of file.
sizebefore:
@if [ -f $(TARGET).elf ]; then echo Size before:; $(ELFSIZE);fi

sizeafter:
@if [ -f $(TARGET).elf ]; then echo Size after:; $(ELFSIZE);fi



# Display compiler version information.
gccversion :
$(CC) --version




# Convert ELF to COFF for use in debugging / simulating in
# AVR Studio or VMLAB.
COFFCONVERT=$(OBJCOPY) --debugging \
--change-section-address .data-0x800000 \
--change-section-address .bss-0x800000 \
--change-section-address .noinit-0x800000 \
--change-section-address .eeprom-0x810000


coff: $(TARGET).elf
$(COFFCONVERT) -O coff-avr $< $(TARGET).cof


extcoff: $(TARGET).elf
$(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof

# Create final output files (.hex, .eep) from ELF output file.
%.hex: %.elf
$(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@

%.eep: %.elf
-$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \
--change-section-lma .eeprom=0 -O $(FORMAT) $< $@

# Create extended listing file from ELF output file.
%.lss: %.elf
$(OBJDUMP) -h -S $< > $@



# Link: create ELF output file from object files.
.SECONDARY : $(TARGET).elf
.PRECIOUS : $(OBJ)
%.elf: $(OBJ)
$(CC) $(ALL_CFLAGS) $(OBJ) --output $@ $(LDFLAGS)


# Compile: create object files from C source files.
%.o : %.c
$(CC) -c $(ALL_CFLAGS) $< -o $@


# Compile: create assembler files from C source files.
%.s : %.c
$(CC) -S $(ALL_CFLAGS) $< -o $@


# Assemble: create object files from assembler source files.
%.o : %.S
$(CC) -c $(ALL_ASFLAGS) $< -o $@






# Target: clean project.
clean: begin clean_list finished end

clean_list :
$(REMOVE) $(TARGET).hex
$(REMOVE) $(TARGET).eep
$(REMOVE) $(TARGET).obj
$(REMOVE) $(TARGET).cof
$(REMOVE) $(TARGET).elf
$(REMOVE) $(TARGET).map
$(REMOVE) $(TARGET).obj
$(REMOVE) $(TARGET).a90
$(REMOVE) $(TARGET).sym
$(REMOVE) $(TARGET).lnk
$(REMOVE) $(TARGET).lss
$(REMOVE) $(OBJ)
$(REMOVE) $(LST)
$(REMOVE) $(SRC:.c=.s)
$(REMOVE) $(SRC:.c=.d)


# Automatically generate C source code dependencies.
# (Code originally taken from the GNU make user manual and modified
# (See README.txt Credits).)
#
# Note that this will work with sh (bash) and sed that is shipped with WinAVR
# (see the SHELL variable defined above).
# This may not work with other shells or other seds.
#
%.d: %.c
set -e; $(CC) -MM $(ALL_CFLAGS) $< \
| sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > $@; \
[ -s $@ ] || rm -f $@


# Remove the '-' if you want to see the dependency files generated.
-include $(SRC:.c=.d)



# Listing of phony targets.
.PHONY : all begin finish end sizebefore sizeafter gccversion coff extcoff \
clean clean_list program



ich will einfach den Ordner first try so benutzen wie er ist. Also das Makefile wie oben geändert.
Dann im Test .c ein Programm eingefügt, geschlossen, und Änderung gespeichert.
Wenn ich jetzt doppelt auf makeall.bat klicke verschwindet die test.hex datei.
Was mache ich bloß falsch, und was macht man mit makeall.168.bat???
Gruß Frank

Valen
12.02.2010, 18:53
# additional Include path for libraries
#LIBPATH = C:/ASURO_SRC/AsuroLib/lib
LIBPATH = C:\ASURO_src\AsuroLib
LIBFILE = asuro
Die fett gedrückte regel hier oben ist eingentlich gut (aber make machts nichts mit diesen regel weil es aus-kommentiert is mit diesen "#".) Aber nur als den install.txt wirklich in dem mappe C:/ASURO_SRC/AsuroLib ausgepackt ist. Das vermutte ich aber, auf basis der nächste LIBPATH regel der du vermutlich geändert hat. Diese ist aber falsch. Siehst du das du back-slashes drin hat. Der orginale (beispiel) "#LIBPATH" regel dort oben hat forward-slashes drin. Warum das ist? Verstehe ich auch nicht. Hat etwas mit das alten Unix zu machen. Windows zeigt back-slashes zwischen mappe, Unix/linux/internet-url haben forward-slashes.

Ausserdem, den lib dateien (.c, .h, usw. ) stehen im AsuroLib/lib".


# Define directories, if needed.
DIRAVR = c:/WinAVR-20090313
Stimmt das mit das richtigen pfad zum AVR compiler? Jedenfalls hat er die richtige (forward)slash.

Valen
12.02.2010, 19:15
makeall.168.bat ist ein kleines Batch-script. (.bat dateien stammen aus dem MSDOS zeit) Du kannst das öffnen (zum lesen) mit notepad und den make commandos drin lesen. Ausfuhren kannst du durch doppeltclicken.

ABER, die 168-datei ist speziel fur den Atmega168 chip. Fur den orginale Asurochip (atmega8) solltest du nur die make-all.bat ausfuhren. Diesen batch-script gibt erst das kommando das Make.exe die mappe rein machen soll (alte .hex und weitere dateien lösschen). Dannach macht er neue aktuelle versionen von diesen dateien beim compilieren. Dannach wartet es mit einer pause. (Wenn du keine .hex datei findest ist das compilier prozess nicht gelungen.) Die make-clean.bat datei macht die projekt mappe nur rein. Es startet kein compilier prozess.

frank1210
12.02.2010, 19:23
OK, aber dann klappt das Compillieren nie. Habe schon mehrere Programme in test.c kopiert, klappt aber nicht zu compillieren. kann mann das nicht mit Programmers notpad machen? und wenn ja, muß man den extra einstellen?
Ich wll dopch endlich mal ein Programm verwenden was die neuste Lib braucht.
Gruß Frank

Valen
12.02.2010, 19:28
Du hat aber auch nicht erzählt wo genau du deine lib ausgepakt had. Wo stehen die dateien?

Und ohne genaue fehlermeldungen können wir auch nicht ahnen was schief geht. "Klappts nicht" sagt nichts.

Valen
12.02.2010, 19:31
Programmers Notepad, gleich so benutzt wie in dem Asuro anleitung, started auch nur diesen batch datei. Wenn die pfaden im makefile nicht stimmen geht das auch nicht.

frank1210
12.02.2010, 19:37
Die Lib habe ich nachC:Asuro_src/Asurolib installiert. Auch auf c befindet sich c:/WinAVR-20090313 . Das makefile habe ich wie oben angepasst. Ich benutze Unter exampl. den Ordner FirstTry, und will den garnicht umbenennen, sondern die Programme bzw. Texte in Test.c einfügen und dann Compillieren und die hex Datei dan Flashen. Mit Klappt nicht meine ich das ich keine hex bekomme wenn ich auf makeall.bat klicke
Gruß Frank

Valen
12.02.2010, 20:02
Das verstehe ich, aber das make kein .hex date machen kan hat seine ursache. Wir mussen wissen wodurch das nicht geht. Hmmm, bekommst du dan keine fehlermeldungen im venster wie diese?

http://members.home.nl/rico.v.jansen/fehlermeldung_make-all.jpg

frank1210
14.02.2010, 15:10
Ich habs geschafft-JUHU.
Brauche ich jetzt nur #include " myasuro.h"
einfügen?? Und in myasuro die Werte anpassen??
Wenn ich nicht myasuro.h einfüge, woher nimmt das Programm die Werte für GO und TURN??
Und jetzt kommt wieder ein altes Problem hoch. Ich hab die Odometrie modifiziert, d.H. Encoderscheiben mit 8 Flächen vorn am Motorritzel. Ich find aber kein ordentliches Programm um die Encoder auszulesen.
Und Abschließend ne reine Verständnissfrage:
Bei einem Meter Fahrweg muß sich ein Rad 8,2 mal drehen.
Bei meiner Übersetzung wäre das 8,2x5x5x8=1640 Ticks pro Meter. Stimmt meine Überlegung?ß
Danke Frank
PS wenn ich die Daten in myasuro ändere ändert sich aber im Verhalten vom ASURO nicht´s.??????????

Valen
15.02.2010, 18:54
Erst mal, was war den lösung?

myasuro.h wirdt durch den lib eingefügt. Dein program hat dammit nichts zu tun. Das darfst du, ist aber uberflüssig. Du musst erst den lib compilieren. Dammit werden deine specifische werten eingebaut in dem lib. Nur dannach kannst du ein eigenes program schreiben (und compilieren) wobei dan automatisch diese specifische werten mittels den lib eingebaut werden.

Wieviel ticks genau weis ich nicht. Das hintenrad hat einen umfang von ungefehr 120mm pro radumdrehung. (pi*38mm bei mir) Das könnte ein wenig bei jedem ändern. Ein getriebe stufe ist 5. Und das anzahl von flachen ist bei dir 8. Sind das aber 8 weisse und 8 schwarze, oder 8 flachen total? Dann komme ich auf 3mm pro tick oder 1.5mm pro tick (bei 8 schwarz und weiss). Also 333 oder 667 ist näher in die richtung. Die zweite getriebe stuffe gilt nur fur den kraftmoment, aber nicht fur das tick anzahl pro meter. Ich habe aber keine ahnung wie diesen werten im myasuro.h definiert sind. Auf welche strecke das beziehen wird.

Diesen thread kann vielleicht helfen. Weiss aber nicht ob das compatibel ist mit lib 2.80