PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Asuro lib einbinden



alias_host
28.07.2007, 11:38
Hallo,

ich bin ein totaler nobody im bereich programmieren und so. ich habe es bis jetzt geschafft, ein zwei programme zu schreiben und auf den asuro raufzuladen. ich habe mir nun die asuro lib rc2 runtergeladen. ich komme aber nicht weiter. bzw. ich kapiere nicht, wie man die installieren muss. bis jetzt habe ich die ersten anweisungen befolgt:

Zur Installation der Asuro Lib kopiert man das File \lib\libasuro.a
in das WinAVR\avr\lib Verzeichnis.
Das File \lib\inc\asuro.h kopiert man in das WinAVR\avr\include Verzeichnis.


nun steht da aber:
Um die Lib neu zu übersetzen startet man den Make Prozess im Verzeichnis lib mit:
make clean
make all

ist mit den verzeichnis der extrahierte ordner gemeint oder muss man den MakeFile auch rüberkopieren?

wenn ich dann lie lib "installiert" habe, wie kann ich diese dann nutzen??? ich habe bis jetzt in meinem verzeichnes des programms immer die dateien asuro.c und asuro.h reinkopiert und include asuro in meinem code reingeschrieben. muss ich da dann was ändern???

Mfg alias_host

ps: ist warscheinlich eine dumme frage, weil das für leute, die sich damit auskennen zum verständnis gehört. ich habe aber davon leider keine ahnung

ehenkes
28.07.2007, 11:57
Um die Lib neu zu übersetzen startet man den Make Prozess im Verzeichnis lib mit:
make clean
make all

ist mit den verzeichnis der extrahierte ordner gemeint oder muss man den MakeFile auch rüberkopieren?
libasuro.a nach C:\WinAVR\avr\lib verschieben ist o.k., da gehört diese auch hin, aber überflüssig (siehe unten).
Keine MakeFiles dorthin kopieren, sondern in C:\ASURO_SRC\AsuroLib\lib ausführen: make-lib.bat einfach anklicken.
Da drinnen steht:
make clean
make all
make install

Das install ist eine Kopierroutine (cp bedeutet copy, der Rest sind Variablen für Pfade/Dateien):
install:
cp $(LIBFILE) $(DIRLIB)/$(LIBFILE)
cp inc/$(HEADER) $(DIRINC)/$(HEADER)
Was die Variablen (in Klammern bedeuten, findest Du im MakeFile definiert)

libasuro.a wird automatisch durch install in das WinAVR-Lib-Verzeichnis kopiert (erste Zeile in install).

ehenkes
28.07.2007, 12:00
wenn ich dann lie lib "installiert" habe, wie kann ich diese dann nutzen??? ich habe bis jetzt in meinem verzeichnes des programms immer die dateien asuro.c und asuro.h reinkopiert und include asuro in meinem code reingeschrieben. muss ich da dann was ändern???
Die Pfade für die Header und für die Bibliotheken (Lib) gibt man immer im "Werkzeug" an, also keine Dateien durch die Gegend kopieren, das gibt nur Müll. Ich empfehle Dir das Atmel AVR Studio, das hat einen WinAVR PlugIn, erkennt also eine vorhandene WinAVR-Installation. Da findest Du sehr schön Einstellungen für Header und Bibliotheken.

alias_host
28.07.2007, 16:34
ich habe die lib erfolgreich installiert.

nun kommt aber folgender fehler:

> "make.exe" all
set -e; avr-gcc -MM -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=test.lst test.c \
| sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > test.d; \
[ -s test.d ] || rm -f test.d
avr-gcc.exe: _spawnvp: No such file or directory
-------- begin --------
avr-gcc --version
avr-gcc (GCC) 4.1.1 (WinAVR 20070122)
Copyright (C) 2006 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 1578 0
.data 10 8388704
.bss 1 8388714
.stab 888 0
.stabstr 113 0
.debug_aranges 64 0
.debug_pubnames 276 0
.debug_info 1037 0
.debug_abbrev 428 0
.debug_line 1354 0
.debug_frame 304 0
.debug_str 421 0
.debug_loc 530 0
Total 7004


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
avr-gcc: _spawnvp: No such file or directory
make.exe: *** [test.o] Error 1

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

ehenkes
28.07.2007, 16:46
Benutzt Du etwa dieses MS Windows Vista?
http://www.madwizard.org/extern/winavr-vista/

Du benötigst das aktuellste WinAVR und AVR Stduio 4.13. Dann verschwindet das.

alias_host
28.07.2007, 18:04
für was brauche ich das avr studio denn??? da kann man doch nur assemblercode reinpacken und simulieren oder??? das c programm schreibt man doch in c oder??? dafür verwende ich bis jetzt das programmers notepad.

ehenkes
28.07.2007, 18:38
für was brauche ich das avr studio denn??? da kann man doch nur assemblercode reinpacken und simulieren oder??? das c programm schreibt man doch in c oder??? dafür verwende ich bis jetzt das programmers notepad.Das ist völlig in Ordnung, wenn Du damit klar kommst. AVR Studio arbeitet hervorragend mit WinAVR zusammen. Ich programmiere damit, z.B. für den Nibo, projektorientiert in C und daneben auch in Assembler für andere µC-Schaltungen und kann das nur empfehlen. Easy!

alias_host
28.07.2007, 19:08
Benutzt Du etwa dieses MS Windows Vista?
http://www.madwizard.org/extern/winavr-vista/

Du benötigst das aktuellste WinAVR und AVR Stduio 4.13. Dann verschwindet das.


daran liegt es glaube ich nicht. wenn man die aktuellste version von winAVR installiert, dann braucht man den vista patch glaub ich nicht. ich habe auf jeden fall ein paar beispielprogramme ohne den patch compilieren können. der fehler ist erst aufgetreten, als ich die installation für die asuro-lib ausgeführt habe. ich versuche jetzt noch mal alles von vorn.

alias_host
28.07.2007, 19:28
ich habe jetzt die lib installiert. man muss aber immer:


# include "C:/Users/michael/Asuro/Asuro lib/AsuroLib-v270rc3/lib/asuro.h"
# include "C:/Users/michael/Asuro/Asuro lib/AsuroLib-v270rc3/lib/motor.c"
darüber schreiben, sonst hat er keinen pfad auf die methoden. ist zwar nicht sehr praktisch, aber es geht.

kann mir einer sagen, wie man das geschickter lößen kann???

ehenkes
28.07.2007, 19:31
So etwas ist der letzte Murks! Switche auf das AVR Studio. :)

alias_host
28.07.2007, 20:14
also ich soll mit den studio mein programm schreiben und da auch compilieren??? geht das???

ehenkes
28.07.2007, 20:41
... nicht nur das Compilieren geht dort, sondern sogar das Linken! ;-)

alias_host
28.07.2007, 21:58
woher bekommt man den die avrgccplugin.exe???

ehenkes
28.07.2007, 23:47
Das ist im AVR Studio bereits integriert. Also einfach AVR Studio Version 4.13 kostenlos bei Atmel downloaden und installieren. Neues Projekt eröffnen, Pfade zu includes und libs einstellen, Compiler-/Linker-Flags setzen (z.B. -Os) und loslegen.



Integration of avr-gcc and Make in AVR Studio

Start the compiler, clean the project, set project options and debug the project from AVR Studio.
Tools from the WinAVR distribution are detected by the plug-in.

AvrPluginavrgccplugin.dll
avrgccplugin.xml
avrgccpluginhelp.chm
im Pfad C:\Programme\Atmel\AVR Tools

alias_host
29.07.2007, 11:10
also ich habe jetzt einfach mal unter den Projektoptionen unter include directories

AsuroLib-v270rc3\lib

hinzugefügt

und dann die libraries libsauro.a... hinzugefügt.

war es das schon, was man machen muss. wenn ich nämlich auf compilieren drücke, dann erstellt er mir einen hex file.

er sagt zwar:

Build succeeded with 7 Warnings...

aber es wird keine hex datei erstellt

ehenkes
29.07.2007, 11:21
also ich habe jetzt einfach mal unter den Projektoptionen unter include directories AsuroLib-v270rc3\lib hinzugefügt

Na immerhin, Du kommst voran und siehst, dass man mit AVR Studio arbeiten kann. Jetzt musst Du noch die Pfade für Header und Bibliotheken korrekt einbinden.

Bitte nicht include (inc) und library (lib) verwechseln. Im einen sind die Header, also z.B. asuro.h, und im anderen die (statischen) Bibliotheken, also z.B. libasuro.a.

Bei mir (Pfade bei Dir anpassen):
Header: C:\ASURO_SRC\AsuroLib\lib\inc bzw. C:\WinAVR\avr\include
Bibliothek: C:\ASURO_SRC\AsuroLib\lib bzw. C:\WinAVR\avr\lib

Ganz wichtig ist es noch, die asuro.c im AVR Studio unter AVR GCC bei den "Source Files" hinzuzufügen, da diese Datei in der libasuro.a nicht mit dabei ist, damit man in asuro.c im Projekt Änderungen durchführen kann.

Du musst also immer genau zwischen drei Typen unterscheiden:
1) Header-Dateien (Header)
2) Bibliotheken (Libraries)
3) Source Files (Implementations-Dateien, Sources)

Bei mir werden z.B. im Zielverzeichnis C:\ASURO_SRC\Projekte\ASURO_001\default die beiden Objekt-Dateien asuro.o und asuro_001.o mit der (statischen) Bibliothek libasuro.a zu der im ATmega8L lauffähigen Binärdatei asuro_001.hex gelinkt (=zusammen gebunden).

Das schaffst Du auch! :)

Testprogramm:


#include "asuro.h"

int main()
{
Init();

int i=0;
for (i=0;i<100;++i)
{
BackLED (OFF, ON);
Msleep(200);
BackLED (ON, OFF);
Msleep(200);
}
BackLED (OFF, OFF);

while (1); //ansonsten endlos
return 0; //wird nicht erreicht
}
Output: asuro_001.hex mit 3965 Bytes.

Jetzt musst Du nur noch auf die Compiler Flags achten, die muss man beim AVR Studio manuell hinzufügen.

Vergleich zweier MakeFiles in diesem Bereich:

Beispiel FirstTry:

OPT = s
CFLAGS = -g -O$(OPT) -I../../lib/inc\
-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums \
-Wall -Wstrict-prototypes \
-Wa,-ahlms=$(<:.c=.lst)

Beispiel ASURO_001:

COMMON = -mmcu=$(MCU)
## Compile options common for all C compilation units.
CFLAGS = $(COMMON)
CFLAGS += -Wall -gdwarf-2 -DF_CPU=8000000UL -Os -fsigned-char
CFLAGS += -MD -MP -MT $(*F).o -MF dep/$(@F).d

Besonders wichtig ist die Optimierung -Os

alias_host
29.07.2007, 12:10
ich habe die libs und die incs hinnzugefügt. wo kann ich die source files hinzufügen???

mein Programm sieht bis jetzt so aus:

#include "asuro.h"


void Sleep3ms(short b);
int main(void)
{
Init();
while(1){
if(PollSwitch()!=0) {
SerPrint("Achtung\n");
if(PollSwitch()>7){//links
SetMotorPower (0,0);
Sleep3MS(50);
SetMotorPower (0,-100);
Sleep3MS(200);
SetMotorPower (100,100);
}
else{//rechts
SetMotorPower (0,0);
Sleep3MS(50);
SetMotorPower (-100,0);
Sleep3MS(200);
SetMotorPower (100,100);

}
}
else{
SetMotorPower (100,100);
Sleep3MS(30);


}
}
}

void Sleep3MS(short b){
short t;
for(t=0;t<=b;t++){
Sleep(216);
}
}


wenn ich es compiliere bringt er mir einige fehler:



../TestProjekt.c:10: warning: pointer targets in passing argument 1 of 'SerPrint' differ in signedness
../TestProjekt.c:13: warning: implicit declaration of function 'Sleep3MS'
../TestProjekt.c:36: warning: conflicting types for 'Sleep3MS'
../TestProjekt.c:13: warning: previous implicit declaration of 'Sleep3MS' was here


am schluss wird aber ausgegeben, dass die compilierung erflogreich war:
Build succeeded with 4 Warnings...

aber ein hex-file wird nicht erstellt.

in deinem beispielprogramm gibt er keine fehler aus, aber erstellt auch da keinen hex-file

ehenkes
29.07.2007, 13:57
ich habe die libs und die incs hinzugefügt
Na, super!

wo kann ich die source files hinzufügen?
OK, das geht an einer anderen Stelle, nämlich in der Projektübersicht, in der die beteiligten Files angezeigt werden.
Das findest Du im Menü bei View - Toolbars - AVR GCC !
Danach klickst Du auf den Stierkopf :) , dann Rechtsklick auf das Ordnersymbol "Source Files" und "Add Existing Source File(s)". Da gibst Du asuro.c und Deine sonstigen Source-Files (aber nicht die, die bereits in libasuro.a verarbeitet sind! Siehe unten.) hinzu, die Du benötigst. Probiere bitte alles aus, was dieses Menü "View - Toolbars" enthält, damit Du Dich da auskennst. Die hex-Datei landete dann im Projekt-Ordner unter default (Pfad kannst Du unter General bei Output File Directory ändern).

Files in libasuro.a, Auszug aus entsprechendem MakeFile:

OBJECTS = globals.o adc.o encoder.o encoder_low.o i2c.o leds.o lcd.o\
motor.o motor_low.o print.o rc5.o sound.o switches.o\
time.o uart.o version.o
Diese Source-Files (im MakeFile sind für den Linker die Object-Files aufgeführt, die der Compiler vor dem Linken aus den Sources xxx.c erzeugt hat) müssen nicht mehr in den Ordner "Source File(s)" hinzu, sonst füllt man den Flash-Speicher völlig sinnlos voll!

alias_host
29.07.2007, 14:46
also ich denke mal, dass du mit dem asuro.c file den asuro file unter

C:\...\Asuro lib\AsuroLib-v270rc3\lib

meinst.

den habe ich hinzugefügt, so dass unter "Source Files" nun
001.c
asuro.c
und
TestProjekt.c
aufgelistet ist.

unter External Dependencies ist zu finden:

asuro.h
interrupt.h
inttypes.h
io.h
iom8.h
libasuro.a
libasuro.a
libc.a
libm.a
libprintf_flt.a
...
und noch ein paar andere h dateien mit unidentifizierbarem namen :)

der outputFileName ist program.hex in directory default.

auch ein häckchen ist bei Create Hex File gesetzt.



im Makefile unter dafault dteht nun:


################################################## #############################
# Makefile for the project TestProjekt
################################################## #############################

## General Flags
PROJECT = TestProjekt
MCU = atmega8
TARGET = program.hex
CC = avr-gcc.exe

## Options common to compile, link and assembly rules
COMMON = -mmcu=$(MCU)

## Compile options common for all C compilation units.
CFLAGS = $(COMMON)
CFLAGS += -Wall -gdwarf-2 -Os -fsigned-char
CFLAGS += -MD -MP -MT $(*F).o -MF dep/$(@F).d

## Assembly specific flags
ASMFLAGS = $(COMMON)
ASMFLAGS += $(CFLAGS)
ASMFLAGS += -x assembler-with-cpp -Wa,-gdwarf2

## Linker flags
LDFLAGS = $(COMMON)
LDFLAGS +=


## Intel Hex file production flags
HEX_FLASH_FLAGS = -R .eeprom

HEX_EEPROM_FLAGS = -j .eeprom
HEX_EEPROM_FLAGS += --set-section-flags=.eeprom="alloc,load"
HEX_EEPROM_FLAGS += --change-section-lma .eeprom=0 --no-change-warnings


## Include Directories
INCLUDES = -I"C:\Users\michael\Asuro\Workspace\eigener test\TestProjekt\..\..\..\Asuro lib\AsuroLib-v270rc3\lib\inc" -I"C:\Users\michael\Asuro\Workspace\eigener test\TestProjekt\..\..\..\..\..\..\WinAVR\avr\incl ude"

## Library Directories
LIBDIRS = -L"C:\Users\michael\Asuro\Asuro lib\AsuroLib-v270rc3\lib" -L"C:\WinAVR\avr\lib"

## Libraries
LIBS = -lasuro -lc -lm -lprintf_flt -lprintf_min -lscanf_flt -lscanf_min -lasuro -lc -lm -lprintf_flt -lprintf_min -lscanf_flt -lscanf_min -lasuro -lasuro -lc -lm -lprintf_flt -lprintf_min -lscanf_flt -lscanf_min

## Objects that must be built in order to link
OBJECTS = TestProjekt.o 001.o asuro.o

## Objects explicitly added by the user
LINKONLYOBJECTS = "crt86401.o" "crtc8534.o" "crts1200.o" "crts2313.o" "crts2323.o" "crts2333.o" "crts2343.o" "crts4414.o" "crts4433.o" "crts4434.o" "crts8515.o" "crts8535.o" "crttn11.o" "crttn12.o" "crttn13.o" "crttn15.o" "crttn22.o" "crttn2313.o" "crttn24.o" "crttn25.o" "crttn26.o" "crttn261.o" "crttn28.o" "crttn44.o" "crttn45.o" "crttn461.o" "crttn84.o" "crttn85.o" "crttn861.o" "crt86401.o" "crtc8534.o" "crts1200.o" "crts2313.o" "crts2323.o" "crts2333.o" "crts2343.o" "crts4414.o" "crts4433.o" "crts4434.o" "crts8515.o" "crts8535.o" "crttn11.o" "crttn12.o" "crttn13.o" "crttn15.o" "crttn22.o" "crttn2313.o" "crttn24.o" "crttn25.o" "crttn26.o" "crttn261.o" "crttn28.o" "crttn44.o" "crttn45.o" "crttn461.o" "crttn84.o" "crttn85.o" "crttn861.o"

## Build
all: $(TARGET) program.hex program.eep size

## Compile
TestProjekt.o: ../TestProjekt.c
$(CC) $(INCLUDES) $(CFLAGS) -c $<

001.o: ../001.c
$(CC) $(INCLUDES) $(CFLAGS) -c $<

asuro.o: ../../../../Asuro lib/AsuroLib-v270rc3/lib/asuro.c
$(CC) $(INCLUDES) $(CFLAGS) -c $<

##Link
$(TARGET): $(OBJECTS)
$(CC) $(LDFLAGS) $(OBJECTS) $(LINKONLYOBJECTS) $(LIBDIRS) $(LIBS) -o $(TARGET)

%.hex: $(TARGET)
avr-objcopy -O ihex $(HEX_FLASH_FLAGS) $< $@

%.eep: $(TARGET)
-avr-objcopy $(HEX_EEPROM_FLAGS) -O ihex $< $@ || exit 0

%.lss: $(TARGET)
avr-objdump -h -S $< > $@

size: ${TARGET}
@echo
@avr-size -C --mcu=${MCU} ${TARGET}

## Clean target
.PHONY: clean
clean:
-rm -rf $(OBJECTS) program.hex dep/* program.hex program.eep

## Other dependencies
-include $(shell mkdir dep 2>/dev/null) $(wildcard dep/*)






aber eine hex wird immer noch nicht erzeugt. auch die warnungen erscheinen bei meinem testprogramm immer noch.

habe ich irgend etwas vergessen???

ehenkes
29.07.2007, 15:16
Vergessen - das erscheint mir etwas überfüllt. Ich zeige Dir mal mein MakeFile des AVR Studio für das ASURO-Projekt:


################################################## #############################
# Makefile for the project ASURO_001
################################################## #############################

## General Flags
PROJECT = ASURO_001
MCU = atmega8
TARGET = ASURO_001.elf
CC = avr-gcc.exe

## Options common to compile, link and assembly rules
COMMON = -mmcu=$(MCU)

## Compile options common for all C compilation units.
CFLAGS = $(COMMON)
CFLAGS += -Wall -gdwarf-2 -DF_CPU=8000000UL -Os -fsigned-char
CFLAGS += -MD -MP -MT $(*F).o -MF dep/$(@F).d

## Assembly specific flags
ASMFLAGS = $(COMMON)
ASMFLAGS += $(CFLAGS)
ASMFLAGS += -x assembler-with-cpp -Wa,-gdwarf2

## Linker flags
LDFLAGS = $(COMMON)
LDFLAGS += -Wl,-Map=ASURO_001.map


## Intel Hex file production flags
HEX_FLASH_FLAGS = -R .eeprom

HEX_EEPROM_FLAGS = -j .eeprom
HEX_EEPROM_FLAGS += --set-section-flags=.eeprom="alloc,load"
HEX_EEPROM_FLAGS += --change-section-lma .eeprom=0 --no-change-warnings


## Include Directories
INCLUDES = -I"C:\ASURO_SRC\Projekte\ASURO_001\..\..\AsuroLib\lib \inc"

## Libraries
LIBS = -lasuro

## Objects that must be built in order to link
OBJECTS = ASURO_001.o asuro.o

## Objects explicitly added by the user
LINKONLYOBJECTS =

## Build
all: $(TARGET) ASURO_001.hex ASURO_001.eep ASURO_001.lss size

## Compile
ASURO_001.o: ../ASURO_001.c
$(CC) $(INCLUDES) $(CFLAGS) -c $<

asuro.o: ../../../AsuroLib/lib/asuro.c
$(CC) $(INCLUDES) $(CFLAGS) -c $<

##Link
$(TARGET): $(OBJECTS)
$(CC) $(LDFLAGS) $(OBJECTS) $(LINKONLYOBJECTS) $(LIBDIRS) $(LIBS) -o $(TARGET)

%.hex: $(TARGET)
avr-objcopy -O ihex $(HEX_FLASH_FLAGS) $< $@

%.eep: $(TARGET)
-avr-objcopy $(HEX_EEPROM_FLAGS) -O ihex $< $@ || exit 0

%.lss: $(TARGET)
avr-objdump -h -S $< > $@

size: ${TARGET}
@echo
@avr-size -C --mcu=${MCU} ${TARGET}

## Clean target
.PHONY: clean
clean:
-rm -rf $(OBJECTS) ASURO_001.elf dep/* ASURO_001.hex ASURO_001.eep ASURO_001.lss ASURO_001.map


## Other dependencies
-include $(shell mkdir dep 2>/dev/null) $(wildcard dep/*)


z.B.:
## Libraries
LIBS = -lasuro

... und dann diese ganzen Objektdateien "crt86401.o" "crtc8534.o" ....

Du linkst ja Deinen ganzen Computer in den winzigen ASURO. :)
Das Programm ist wahrscheinlich so groß, dass es nicht in den ATmega8 passt. Abrüsten ist bei Dir angesagt! ;-)

Sieh das ganze positiv! Du liest MakeFiles (können die wenigsten) und arbeitest bereits mit dem Atmel AVR Studio. Jetzt musst Du nur noch die Fehlermeldungen verstehen lernen. Wirf mal den ganzen Müll raus.

alias_host
29.07.2007, 15:46
also ich habe mal versucht, die makefiles zu vergleichen und die einstellungen zu verändern. nun sieht der file folgendermaßen aus:



################################################## #############################
# Makefile for the project TestProjekt
################################################## #############################

## General Flags
PROJECT = TestProjekt
MCU = atmega8
TARGET = program.elf
CC = avr-gcc.exe

## Options common to compile, link and assembly rules
COMMON = -mmcu=$(MCU)

## Compile options common for all C compilation units.
CFLAGS = $(COMMON)
CFLAGS += -Wall -gdwarf-2 -DF_CPU=8000000UL -Os -fsigned-char
CFLAGS += -MD -MP -MT $(*F).o -MF dep/$(@F).d

## Assembly specific flags
ASMFLAGS = $(COMMON)
ASMFLAGS += $(CFLAGS)
ASMFLAGS += -x assembler-with-cpp -Wa,-gdwarf2

## Linker flags
LDFLAGS = $(COMMON)
LDFLAGS += -Wl,-Map=program.map


## Intel Hex file production flags
HEX_FLASH_FLAGS = -R .eeprom

HEX_EEPROM_FLAGS = -j .eeprom
HEX_EEPROM_FLAGS += --set-section-flags=.eeprom="alloc,load"
HEX_EEPROM_FLAGS += --change-section-lma .eeprom=0 --no-change-warnings


## Include Directories
INCLUDES = -I"C:\Users\michael\Asuro\Workspace\eigener test\TestProjekt\..\..\..\Asuro lib\AsuroLib-v270rc3\lib\inc"

## Library Directories
LIBDIRS = -L"C:\WinAVR\avr\lib" -L"C:\Users\michael\Asuro\Asuro lib\AsuroLib-v270rc3\lib"

## Libraries
LIBS = -lasuro

## Objects that must be built in order to link
OBJECTS = TestProjekt.o 001.o asuro.o

## Objects explicitly added by the user
LINKONLYOBJECTS =

## Build
all: $(TARGET) program.hex program.eep program.lss size

## Compile
TestProjekt.o: ../TestProjekt.c
$(CC) $(INCLUDES) $(CFLAGS) -c $<

001.o: ../001.c
$(CC) $(INCLUDES) $(CFLAGS) -c $<

asuro.o: ../../../../Asuro lib/AsuroLib-v270rc3/lib/asuro.c
$(CC) $(INCLUDES) $(CFLAGS) -c $<

##Link
$(TARGET): $(OBJECTS)
$(CC) $(LDFLAGS) $(OBJECTS) $(LINKONLYOBJECTS) $(LIBDIRS) $(LIBS) -o $(TARGET)

%.hex: $(TARGET)
avr-objcopy -O ihex $(HEX_FLASH_FLAGS) $< $@

%.eep: $(TARGET)
-avr-objcopy $(HEX_EEPROM_FLAGS) -O ihex $< $@ || exit 0

%.lss: $(TARGET)
avr-objdump -h -S $< > $@

size: ${TARGET}
@echo
@avr-size -C --mcu=${MCU} ${TARGET}

## Clean target
.PHONY: clean
clean:
-rm -rf $(OBJECTS) program.elf dep/* program.hex program.eep program.lss program.map


## Other dependencies
-include $(shell mkdir dep 2>/dev/null) $(wildcard dep/*)




aber eine hex wird immer noch nicht erstellt. mein programm sieht nun so aus:


#include "asuro.h"


//void Sleep3ms(short b);
int main(void)
{
Init();
while(1){
if(PollSwitch()!=0) {
//SerPrint("Achtung\n");
if(PollSwitch()>7){//links
SetMotorPower (0,0);
// Sleep3MS(50);
SetMotorPower (0,-100);
// Sleep3MS(200);
SetMotorPower (100,100);
}
else{//rechts
SetMotorPower (0,0);
// Sleep3MS(50);
SetMotorPower (-100,0);
// Sleep3MS(200);
SetMotorPower (100,100);

}
}
else{
SetMotorPower (100,100);
// Sleep3MS(30);


}
}
}

//void Sleep3MS(short b){
//short t;
// for(t=0;t<=b;t++){
// Sleep(216);
// }
//}


also so, dass es keine fehler bringt:

Build succeeded with 0 Warnings...


muss man den makefile noch mal extern starten oder ist noch etwas falsch eingestellt???

ehenkes
29.07.2007, 16:09
Build succeeded with 0 Warnings...

Wenn das nicht positiv klingt!
Wie hast Du MakeFile verändert, direkt oder durch Änderungen in den Einstellungen des AVR Studio (ich hoffe doch letzteres).
Momentan sehe ich den Fehler leider nicht klar, weil ich nicht weiß, was Du wirklich machst. ;-)
Vielleicht wird das hex-File erstellt und durch make clean gleich wieder gelöscht (ich hatte mal so einen Fall), sollte aber im AVR Studio selbst nicht passieren.

alias_host
29.07.2007, 16:32
hmm also ich habe die einstellungen im avr studio verändert. ich compiliere den file, indem ich unter "Source Files" auf die datei "TestProjekt.c" rechts klicke und dann durch "compile" den compiler starte.

habe aber noch einen fehler gefunden:

habe ein bischen rumgespielt und mal auf "Build Active Configuration" gedrückt. da kommt folgender fehler:

make: *** No rule to make target `../../../../Asuro', needed by `asuro.o'. Stop.

ehenkes
29.07.2007, 16:45
ich compiliere den file, indem ich unter "Source Files" auf die datei "TestProjekt.c" rechts klicke und dann durch "compile" den compiler starte.
Das ergibt lediglich eine Objekt-Datei aus der entsprechenden Source-Datei. Wenn Du ein hex.File erzeugen willst, musst Du im Menü unter "Build" auf "Build" oder "Rebuild All" klicken. Das ergibt bei Fehlerfreiheit ein hex-File. Du musst in einem Projekt denken, nicht in einzelnen Files.

Präprozessor:
Die Header werden per #include in die Source Files integriert.
Die #defines werden einfach ersetzt.

Compiler:
Source Files werden in Object Files verwandelt.

Linker:
Packt Object Files und statische Libraries zusammen.

Das Ergebnis ist eine auf dem Ziel-Prozessor lauffähige hex-Datei.


Dein MakeFile sieht o.k. aus, sollte klappen. Vielleicht stimmt etwas mit der Verbindung zu WinAVR nicht, dann würde AVR Studio aber motzen oder abstürzen. Du verwendest AVR Studio Version 4.13?

"Build Active Configuration" finde ich nicht im Menü. Wie kommt man dorthin?

alias_host
29.07.2007, 18:03
also der gleiche fehler kommt auch, wenn ich compilieren möchte. so wie du das beschrieben hast. habe ich ja dann gar nicht compiliert.

wenn ich Rebuild all drücke kommt:



Build started 29.7.2007 at 18:57:13
avr-gcc.exe -I"C:\Users\michael\Asuro\Workspace\eigener test\TestProjekt\..\..\..\Asuro lib\AsuroLib-v270rc3\lib\inc" -mmcu=atmega8 -Wall -gdwarf-2 -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT
TestProjekt.o -MF dep/TestProjekt.o.d -c ../TestProjekt.c

avr-gcc.exe -I"C:\Users\michael\Asuro\Workspace\eigener test\TestProjekt\..\..\..\Asuro lib\AsuroLib-v270rc3\lib\inc" -mmcu=atmega8 -Wall -gdwarf-2 -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT
001.o -MF dep/001.o.d -c ../001.c

make: *** No rule to make target `../../../../Asuro', needed by `asuro.o'. Stop.
Build failed with 1 errors and 0 warnings...

ehenkes
29.07.2007, 18:17
So kann ich Dir nicht mehr weiter helfen. Das Problem liegt im Gesamtsystem. Schau Dir mal diese Diskussionen an. Vielleicht trifft ein Punkt auf Deine Installation zu:
https://www.roboternetz.de/phpBB2/viewtopic.php?t=3242
https://www.roboternetz.de/phpBB2/viewtopic.php?t=10427
http://www.mikrocontroller.net/topic/23991
http://www.mikrocontroller.net/topic/47369
http://www.kreatives-chaos.com/artikel/winavr-tutorial

damaltor
29.07.2007, 19:34
also ich muss ja sagen, ich komme ganz gut ohne winavr klar... =) linux fetzt... programmieren in vi, dann make... fertig. ;)

ehenkes
29.07.2007, 19:53
... komme ganz gut ohne winavr klar... linux ... programmieren in vi, ... make... fertig.
Selbstverständlich geht das konsolenorientiert. Ich habe ihm AVR Studio in Kombination mit WinAVR empfohlen, weil man sich damit gerade nicht um MakeFiles kümmern muss. Seitdem wühlt er nur noch in MakeFiles herum. Wenn er Deinem Vorschlag auch noch folgt, wird seine Breitenbildung signifikant erhöht. Ob er zum gewünschten hex-File gelangt, bleibt noch offen. :)
Ich bevorzuge das AVR Studio bei ISP, da man nach dem Kompilieren/Linken mit einem einzigen Mausklick flashen kann.

Sternthaler
30.07.2007, 02:33
Hallo alias_host,
willkommen im Forum.

Die 3 letzten warnings in deinem Programm kommen dadurch, dass du
--> void Sleep3ms(short b); <--- mit Kleinbuchstaben bei 3ms deklarierst, aber
--> void Sleep3MS(short b) <-- mit GROSSBuchstaben bei 3MS definierst.
Woher das erste warning kommt sehe ich im Moment nicht.

P.S.: Sorry, auch ich tendiere, wie damaltor, zur Konsole.

alias_host
30.07.2007, 12:14
also wenn ich heute mal noch zeit habe, dann mache ich mal ne doku, wie ich das alles installiere und einstelle. dann kann ehenkes noch mal gucken. wenn er den fehler nicht findet, dann mach ich alles über konsole... ich habe gehört, es soll auch ein plugin für eclipse geben???

ehenkes
30.07.2007, 14:19
Es geht auch mit Dev-C++. ;-)

alias_host
30.07.2007, 22:36
also ich habe hier mal eine kleine doku raufgeladen, wie ich das avr studio eingerichtet habe, welchen quellcode ich verwendet haben und was für fehlermeldungen kamen. wenn ich was falsch beschrieben habe oder was vergessen habe, könnt ihr es ja verbessern, mit z.b. rot markieren und neu hochladen.

danke

ehenkes
30.07.2007, 23:44
Im Verzeichnis selbst musst Du nur Deine test.c haben, nix anderes! asuro.c kommt beim Projekt dazu. Die notwendigen Header includierst Du.

... und mache erst mal was einfaches, z.B. Init() in main(), sonst nix, dann das einfache Programm, das ich Dir gezeigt habe. Dann geht es nit dem Schmodder weiter.

Dir fehlen in asuro.c Header. Schau mal beim Include-Verzeichnis, ob da alles stimmt. Muss exakt der Pfad von asuro.h sein!

Bei MS Vista dreht sich mir sowieso die Galle um. Da könnte ich auch noch zum "Linux-Kommandeur" werden. ;-)

Du bist kurz davor, nicht aufgeben. Sind die Includes.

izaseba
30.07.2007, 23:57
*spam*


Seitdem wühlt er nur noch in MakeFiles herum. Wenn er Deinem Vorschlag auch noch folgt, wird seine Breitenbildung signifikant erhöht. Ob er zum gewünschten hex-File gelangt, bleibt noch offen.
Dafür wühlt er jetzt in AVRStudio herum ...


Ich bevorzuge das AVR Studio bei ISP, da man nach dem Kompilieren/Linken mit einem einzigen Mausklick flashen kann.

:-s, wie ? Du mußt zu Maus greifen ? :-s
Ich erledige das mit einem Tastendruck von Emacs aus, bin etwa 3 Sekunden schneller als Du und schone meine Gelenke :mrgreen:
*/spam*


P.S.
Der Editor von Avr Studio ist das letzte, wenn man vi oder Emacs kennt, will man nichts anderes mehr haben ...

ehenkes
31.07.2007, 00:11
Wenn ich direkt auf das c-File klicke, geht MS VC++ 2005 auf. Der Editor ist professionell! Aber ich schreibe mit jedem Editor. Das ist übrigens wirklich nicht sein Problem ;-), er kann sogar MS Word bedienen. :) Sein Problem ist das Verständnis für die Projektorganisation und den Ablauf des Kompilierens und Linkens. Deshalb hat er auch Funktionen und Variablen im Programm, die niemand kennt! Von Linux (habe nix dagegen!) und MS Vista möchte ich momentan wenig wissen, ich habe mich an W2K und XP gewöhnt, das reicht.
Ich verwende Windows, weil ich MS VC++ verwende und das Office-Paket und ... ;-)

PS: Ich musste bei Linux einmal den Kern neu compilieren, als ich einen 3D-Treiber installieren wollte, habe es sogar geschafft, danach (ca. 30 min.) war ich aber bedient. ;-)

damaltor
31.07.2007, 11:17
hrhr... ich kann izaseba nur beipflichten.... wer mal mit linux angefangen hat und sich ein wenig damit beschäftigt hat, wird nicht mehr wechseln wollen..... =)

Pinguine sind halt cooler als fahnen...

ehenkes
31.07.2007, 11:33
Ist hier nicht noch ein begeisterter Mac-User, der uns von seinem Apple Betriebssystem überzeugen will? Das einzig Wahre sind sowieso selbstgemachte Betriebssysteme. :)


@alias_host: Wie sieht es aus? Schon ein hex-File aufgetaucht?

alias_host
31.07.2007, 11:57
ehenkes, das musst du mir noch einmal genauer erklären.



Im Verzeichnis selbst musst Du nur Deine test.c haben, nix anderes!

also ich habe die asuro. dateien wieder aus meinem workspace rausgeschmissen.



asuro.c kommt beim Projekt dazu. Die notwendigen Header includierst Du.

was meinst du damit genau??? ich habe nicht wirklich viel ahnung von solchen sachen, habe bis jetzt immer nur java programmiert und da gibts kein .c und .h ... :)
also ich bin einfach mal unter "Header Files" gegangen und habe über "Add existing header" "asuro.h" "i2c.h" "lcd.h" "myasuro.h" "rc5.h" hinzugefügt.



... und mache erst mal was einfaches, z.B. Init() in main(), sonst nix, dann das einfache Programm, das ich Dir gezeigt habe.

ich habe jetzt einfach mal dein programm reingeladen. das ist ja ansich das gleiche. main, init gibts alles drin. da bringt er jetzt nur noch den fehler:

../testStudio.c:5: undefined reference to `Init'

also ich denke einfach mal, dass er die Methoden nicht findet.



Dir fehlen in asuro.c Header. Schau mal beim Include-Verzeichnis, ob da alles stimmt. Muss exakt der Pfad von asuro.h sein!

was du mit header meinst habe ich ja am anfang schon gefragt. der pfad müsste ansich stimmen, kannst ja in der doku nachsehen.

der Pfad ist:"..\..\..\..\..\AsuroLib\lib\inc\" auf meinem computer liegt asuro.h auch unter "C:\AsuroLib\lib\inc".

ich habe die doku noch mal so umgeändert, wie mein momentaner stand ist

ehenkes
31.07.2007, 17:09
Ich habe mir deine word-datei angeschaut. Dir fehlt nur noch asuro.c unter Sources im Project Tree ("Stierkopf") wegen Init().



... und habe über "Add existing header" "asuro.h" "i2c.h" "lcd.h" "myasuro.h" "rc5.h" hinzugefügt.
Nein! Obige Header hast Du ja bereits über das include-Verzeichnis bekannt gemacht, die gehören ja auch nicht konkret zu Deinem Projekt, sondern sind allgemein!

Genau wie asuro.c. Das gehört allgemein zur ASURO-Bibliothek, also wird es nur über den Project Tree ("Stierkopf", "AVR GCC").

Also nochmal:
Konkretes aus Deinem Projekt ist in deinem richtigen Windows Explorer-Verzeichnis dabei, bei Dir lediglich test.c.

Wirklich ins Projekt eingebunden werden die Files übrigens nur über den Stierkopf, den Project Tree.

Allgemeines wird an drei Stellen eingebunden:
1) Include-Verzeichnis (inc)
2) Bibliotheksverzeichnis (Library, lib)
3) "Stierkopf" (so eine Art virtueller Explorer! Jeder der Visual Studio benutzt, kennt das!)

So nun zu Deinem winzigen Problem:


da bringt er jetzt nur noch den fehler:
../testStudio.c:5: undefined reference to `Init'
OK, dabei bleiben wir jetzt! Kein Gefrickel!!!
Init() ist eine Funktion in der Datei asuro.c, die er nicht findet. Klar, weil asuro.c nicht bei den Sources bekannt gemacht wurde.

Also zum Vergleich, wie sieht das bei mir aus?
Im Pfad des Projektes (also richtig im Windows-Explorer!) findet sich:
test.c ( das ist die Datei mit deiner Funktion main(){...} )
test.aps
test.aws
Sonst nix!!! Sonst nix!!! Sonst nix!!!

Die Funktion Init() steht in asuro.c, also muss diese dazu gelinkt werden, steht auch nicht in libasuro.a, weil dort asuro.c fehlt.

asuro.c wird nun im Project Tree im AVR Studio (vorne beim Steierkopf "AVR GCC") hinzugefügt ("Add Existing Source File(s)").
Damit wird aus asuro.c durch Compilieren die Objekt-Datei asuro.o, die dann dazu gelinkt werden kann.

Nimmt man asuro.c wieder weg erhält man den Fehler:
../ASURO_001.c:5: undefined reference to `Init'

Probiere es aus! Rein - Raus - Rein - Raus ... (nur im Project Tree "AVR GCC", dort steuerst Du Deine Files im Projekt! Nicht im Windows-Explorer, nur dort)

Geht das nun? Wenn nein, bitte Fehlermeldung.

Fazit:
a) im Project Tree: test.c (oder wie das auch immer heißt) und asuro.c
b) LIB-Verzeichnis: libasuro.a
c) INCLUDE-Verzeichnis: asuro.h und alle anderen xxx.h

b) und c) werden im Project Tree über "External Dependencies" ausgewiesen.

Mehr brauchst Du nicht am Anfang. Dann packt man später seine eigenen Header und Sources mit ins Projekt-Verzeichnis in Windows und im Project Tree.

Wichtig ist die Trennung Allgemeine Dateien und Dateien im Projekt.
asuro.c ist ein Zwitter! Das liegt an der beschissenen ASURO-Bibliothek.

ehenkes
31.07.2007, 17:11
Wenn das klappt - was ich doch nun schwer hoffe - probierst Du folgendes Progrämmchen:


#include "asuro.h"

int main()
{
Init();

int i=0;
for (i=0;i<100;++i)
{
BackLED (OFF, ON);
Msleep(200);
BackLED (ON, OFF);
Msleep(200);
}
BackLED (OFF, OFF);

while (1);
return 0; //wird nicht erreicht
}

Sternthaler
31.07.2007, 18:30
Das liegt an der beschissenen ASURO-Bibliothek.
Na, na, na! [-X

ehenkes
31.07.2007, 18:36
@Sternthaler: Doch dazu stehe ich! Schau Dir mal andere C-Bibliotheken an.
Warum wird denn asuro.c nicht eingebunden in libasuro.a? Warum gibt es keine Header-Datei, die die spezifischen Prozessorbezeichnungen mittels #define in für den ASURO sprechenden Symbole umwandelt? (vgl. z.B. iodefs.h beim Nibo)

Sternthaler
31.07.2007, 18:48
@ehenekes
Weil es die Asuro-LIB ist, bei der du nicht mehr angeben must, dass es sich um einen ATmega8 handelt der mit 8MHz betrieben wird.
Ausserdem ist die CPU-Bezeichnung/Typ im Makefile mit MCU=atmega8 angegeben. Es ist halt so, dass zur Zeit kein Bedarf für eine Auswertung in den C-Sourcen zur LIB besteht.
Warum die asuro.c nicht in der libasuro.a ist? Steht in der Doku von m.a.r.v.i.n. Als Hinweis: Im Source sind die Interrupt-Funktionen drin.

ehenkes
31.07.2007, 18:59
@Sternthaler:
Das ist ein völlig anderes Thema. Ich möchte das hier deshalb nicht weiter ausführen. Es empfindet auch jeder anders, abhängig von Erfahrung und Ordnungsvorstellung. Wenn Du einen Thread "ASURO-Bibliothek" eröffnest können wir das gerne weiter ausführen, falls Du dies für konstruktiv hältst.
Für mich ist die Nibo-Bibliothek vorbildhaft. Die RP6-Bibliothek kenne ich noch nicht genau.

Nun warten wir mal ab, ob alias_host erfolgreich ist. Ich habe zumindest keine weiteren Probleme gesehen, aber bei Vista weiß man nie. Alles noch mit heißer Nadel gestrickt.

alias_host
31.07.2007, 19:07
hmmmm

ich glaube ich lass es also mit vista funzt der scheiß bestimmt nicht...


wenn ich alles so einreichte, also die header raus und asuro.c rein, dann geht zwar alles, es kommt keine fehlermeldung aber wenn er fertig mit compilieren ist, dann stürtzt das programm ab...

wenn ich das programm dann neu starte, dann das projekt aufrufe, dann hängt es wieder. ein neues projekt erstellen kann ich aber. es kommt aber der gleiche fehler, wenn ich das neu erstellte wieder compiliert habe.

dann alles wieder von vorne.


das vista update für avr studio ist doch nur für 4.12 oder??

alias_host
31.07.2007, 19:10
ich les mir mal https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=30358 durch

ehenkes
31.07.2007, 19:11
Noch ein Hinweis:

int i=0;
for (i=0;i<100;++i)

Wer dies im C++-Stil programmieren will, also

for (int i=0;i<100;++i)

muss einfach als Compilerflag -std=C99 einfügen. So etwas geht beim AVR Studio allerdings nur manuell, also keine Combo-Box zur Auswahl.

ehenkes
31.07.2007, 19:15
wenn er fertig mit compilieren ist, dann stürtzt das programm ab... Ist übrigens nicht abgestürzt! Sondern läuft mit 99% CPU-Auslastung (schau mal im Task Manager nach)
Den Fehler kenne ich! Das liegt an AVR Studio Version 4.12!!! (aus dem Jahr 2005!)
Es gibt einen Servicepack für 4.12! Danach ging es bei W2k.
Besser ist 4.13

PS: Geschäftskunden haben übrigens, z.B. von Dell, wieder XP gefordert. Vista ist noch nicht reif, ist wie eine grüne Tomate, die zu früh vom Strauch gefallen ist. Bei Windows-Versionen sollte man immer mindestens 1-2 Jahre warten, wenn man damit arbeiten muss. Ab SP2 kann man mitmachen (XP: SP2, W2K: SP4)

alias_host
31.07.2007, 19:18
also die datei, die da den fehler hervorrufen soll gibt es leider nicht auf meinem pc :(

C:\Program Files\Common Files\Microsoft Shared\OFFICE12\MSOXMLMF.DLL

den pfad zwar schon aber die datei nicht.

ps: ich nutze w2007

ehenkes
31.07.2007, 19:20
Du bist kein Troll?
http://www.dlldump.com/download-dll-files_new.php/dllfiles/M/MSOXMLMF.DLL/11.0.5510/download.html

ehenkes
31.07.2007, 19:29
OK, ein echtes Problem, unfassbar.


The only noticible difference was a bind to C:\Program Files\Common Files\Microsoft Shared\OFFICE12\MSOXMLMF.DLL, the Microsoft Office XML MIME Filter. To verify that this was the problem, I renamed that DLL, and BINGO, the problem goes away. Bei Dir fehlt diese Datei und trotzdem ein Problem? Du hast schon das neue WinAVR vom Mai 2007?

Naja, wie auch immer. AVR Studio hast Du dadurch gut kennen gelernt. ;-)

@Sternthaler: die ASURO-Bibliothek ist hier nicht das Problem. :)

alias_host
31.07.2007, 19:39
also ich danke euch allen, wie mir geholfen haben eine HEX datei mit dem AVR Studio zu erstellen.

ES HAT GEKLAPPT!!!

soll ich die doku irgend wo hochladen. als html oder so???


oder meint ihr es stellt sich niemand so blöd an???


PS: wenigstens weiß ich jetzt, was .h, .c ... heißt

ehenkes
31.07.2007, 19:42
ES HAT GEKLAPPT!!! Was war noch der letzte entscheidende Fehler gewesen?

alias_host
31.07.2007, 19:52
mein fehler:

Im Verzeichnis selbst musst Du nur Deine test.c haben, nix anderes! asuro.c kommt beim Projekt dazu. Die notwendigen Header includierst Du.

habe gedacht, dass du das verzeichnis im avr studio meinst, weil ich bei java / eclipse gelernt habe, dass es nicht nötig ist, was im explorer verzeichnis zu verändern.
habe das etwas missverstanden. habe gedacht, dass asuro.c schon in den includes und in der lib dabei ist, wenn ich die pfade unter Projekteinstellungen festlege.

PS: das mit der if-Schleife habe ich schon gemerkt... danke

PSS: habe heute mal wieder meine VM Ware workstation angeworfen

ehenkes
31.07.2007, 20:20
Gratulation! Manche Wege sind verschlungen. Zum Glück prägen sich solche Dinge aber intensiv ein. Das nennt man dann Erfahrung.

... habe gedacht, dass asuro.c schon in den includes und in der lib dabei istJa, das wäre so auch besser! Liegt am Design der ASURO-Bibliothek. Da wird für neue Ideen munter in asuro.c herum gewühlt, obwohl dort die grundlegenden Funktionen für den ASURO stehen, z.B. Init(). Das ist "gewollter Murks".

ASURO ist fast schon Geschichte. Die Nachfolger können es besser machen. So etwas muss von Anfang an richtig gemacht werden, weil sonst die Programme nicht mehr mit der neuen Version laufen.

Sternthaler
31.07.2007, 20:26
@ehenkes
Und wer ist dann immer so fleißig im Asuro-Bereich, wenn es schon 'fast Geschichte' ist? Es gab Zeiten, da hat jemand täglich 5 Beiträge hinterlassen.
Warum werden dann 5 Links zu 'verschiedensten' Beiträgen ohne Lösung in 'verschiedene' Foren angegeben, ohne auf den Thread zur Asuro-Lib zu verweisen? Da hätte man alles, auch zu den Einstellungen im Win-Avr, schon auf der ersten Seite nachlesen können.
Wer redet denn ständig von Lib's die nichts mit dem Asuro zu tun haben?

ehenkes
31.07.2007, 21:00
alias_host hat sein Problem in den Griff bekommen. Das zählt.

ASURO ist ein einfacher Einstieg, nicht mehr und nicht weniger. Ich empfehle ihn Anfängern immer noch, weil er leicht zu "löten" ist. Diesbezüglich finde ich ihn auch immer noch interessant. Die Bibliothek ist genau genommen aber "Anfänger-unfreundlich", weil zu "Prozessor-nah". Aber das ist alles Ansichtssache. :-k

Du kannst das ja alles besser machen als ich, hindert Dich ja niemand daran. Was fällt Dir eigentlich ein, meine täglichen Beiträge zu zählen? ;-)

Sternthaler
01.08.2007, 02:35
@ehenkes
Na jetzt sieht dein editierter Eintrag ja viel freundlicher aus.
Gezählt habe ich nicht, nur geschätzt. Ausserdem sind die ja auch nicht schlecht, so dass man das ja auch lesen kann. (Warum muss denn da gelötet werden? ;-) )
Mit der LIB gebe ich dir recht, dass hier einige Probleme vorhanden sind. Allerdings sehe ich vor allem die 'Inbetriebnahme' als das größte Problem und nicht unbedingt den Inhalt. Haben wir hier ja miterlebt.

ehenkes
01.08.2007, 08:41
@sternthaler: Was alias_host hier vollführt hat, war in der Tat nahe an der Troll-Grenze. :) Dieses Thema der Projekterstellung mit AVR Studio werde ich in http://www.henkessoft.de/Roboter/ASURO.htm verarbeiten.

Meine bisherige Einschätzung zum ASURO:

Plus:
- leicht und schnell aufzubauen (einfache Platine, gute Anleitung)
- Jumper für Akkus/Batterien
- gute Dokumentation
- einfache Schaltung
- große Community, gutes Forum, zwei Bücher
- interessant für Bastler
- Man lernt den Prozessor und Regelungsstrategien (PID) selbst kennen
- Erweiterung ist einfach möglich (allerdings nicht I²C)
- kostengünstig (ca. 40 Euro)
- ebay-gängig

Neutral:
- Flash via IR (für Anfänger wichtig, bei Besitz von STK500 eher lästig)

Minus:
- programmtechnisch nicht einfach in Betrieb zu nehmen
- Kabelbinderbefestigungen (Motoren, Akkus)
- keine stabilisierte Spannung
- I²C-Bus blockiert
- vorhandene Bibliothek nicht optimal strukturiert (dadurch auch nicht anfängerfreundlich)
- Akkus AAA-Size
- Achsen kleben/löten
- aufgeklebter halber Tischtennisball (scheuert schnell durch, blockiert Elektronik)
- Erweiterung verdrängt Linienverfolgung
- Beschränkung durch ATmega8 (kleiner Speicher, kein sicherer "fast mode" auf I²C wegen 8 MHz, keine Co-Controller)

alias_host
01.08.2007, 19:27
muss einfach als Compilerflag -std=C99 einfügen.

hmmm muss man das unter "Custom Compilation Options" einfügen???

ehenkes
01.08.2007, 19:41
Klasse, Du bist mit AVR Studio beim C proggen und interessierst Dich schon für Compiler Flags. Weiter so! Einfach für [All files] in das Edit-Feld links neben "Add" einfügen und auf den Button "Add" klicken. Probiere es aus. Es funktioniert.

alias_host
01.08.2007, 21:22
hmmm ja das habe ich ja auch gemacht...

aber dann kommt beim compilieren folgende fehlermeldung:

cc1.exe: error: unrecognized command line option "-std=C99"

ehenkes
01.08.2007, 21:40
-std=c99 sorry c wird klein geschrieben.
Auf diese Weise hast Du das Verzeichnis C:\WinAVR\libexec\gcc\avr\4.1.1 und seine drei exe-Dateien kennen gelernt.

izaseba
01.08.2007, 21:41
Die Bibliothek ist genau genommen aber "Anfänger-unfreundlich", weil zu "Prozessor-nah"

Ein klares NACK !

Was heißt hier zu "Prozessor-nah" ich finde es gut , es soll so Prozessornah wie möglich sein, abstrakte Sachen auf 8 Bit Prozessoren sind Käse, schau Dir mal Bascom und die Probleme, die die Leute damit haben an.
Da wird nicht überlegt, daß man einfachen Code schreibt, nein es wird mit Fließkommazahlen gearbeitet, sekundenlange Pausen in Interrupts gemacht mit Winkelfunktionen rumgebastelt und danach kommen Fragen und geheule.
Ich würde jeden Anfänger durch Assemblergrundkurs jagen, damit sie ein Gefühl für die Hardware bekommen.
Und nein Asuro ist lange nicht tot und glaub mir, kein anderer Roboterbausatz wird soviel Erfolg haben, wie Asuro.

Gruß Sebastian

ehenkes
01.08.2007, 21:51
Ich würde jeden Anfänger durch Assemblergrundkurs jagen, damit sie ein Gefühl für die Hardware bekommen.
Akzeptiert! Gute Idee.
Daher habe ich auch folgendes Tutorial begonnen:
http://www.henkessoft.de/Roboter/stk500.htm

Zum ASURO:
Für Anfänger wirklich geeignet wegen der einfachen Platine. Das ist der Hauptvorteil. Eine Alternative ist ein Fertig-Roboter (wie RP6).
Mein Urteil zum ASURO ist ja noch ausgewogen.
Persönlich sehe ich ihn kritisch wegen der Bibliothek. Ich bevorzuge saubere Schichtungen und sprechende Symbole. An welchem Port meine rote oder grüne LED wirklich hängt, kann ich im Schaltplan und in einer iodef.h nachschauen.

izaseba
01.08.2007, 21:59
Daher habe ich auch folgendes Tutorial begonnen:
http://www.henkessoft.de/Roboter/stk500.htm


Schön, vielleicht hast Du Lust zusammenzuarbeiten ?

Ich habe das hier (http://www.izaseba.roboterbastler.de/)
angefangen, leider keine Zeit/Lust gehabt weiterzumachen :-#

Gruß Sebastian

alias_host
01.08.2007, 22:02
@ehenkes

danke

ehenkes
01.08.2007, 22:07
Schön, vielleicht hast Du Lust zusammenzuarbeiten ?
Das ist ein nettes Angebot, das ich gerne annehme. :)

ehenkes
01.08.2007, 22:11
@alias_host:
Hat das geklappt?

Willst Du mal was richtig Schwieriges machen? Nämlich mit AVR Studio in C++ programmieren? Da musst Du das MakeFile exportieren, manipulieren und als externes MakeFile wieder einbinden. ;-)
http://www.mikrocontroller.net/topic/52866

alias_host
01.08.2007, 22:11
vllt habe ich da was für euch wir haben in der schule auch assembler gelernt. da hat unser lehrer na anleitung geschrieben... auch für dumme... alles schritt für schritt erklärt. timer interrupt und so n paar sachen.

jedoch hat er uns dafür eine platine zusammengelötet

baustein ist der atmel 8252

hier erst mal eine übersicht. da gibts auch gute sachen zu abel und zu alus...
http://josef-durler-schule.de/projekte/_index.htm

und hier das eigentliche:
http://josef-durler-schule.de/projekte/digitaltechnik/8051-Assembler_Kurs_F/Rahmen1.htm

vllt findet ihrs ja gut

alias_host
01.08.2007, 22:13
ich glaub da warte ich noch versuch grad nen timer

Sternthaler
01.08.2007, 22:50
@izaseba
An dich geht ein ACK.

izaseba
01.08.2007, 22:56
@izaseba
An dich geht ein ACK.
:cheesy: danke Sternthaler !

ehenkes
04.08.2007, 08:51
@Sternthaler:
ergänzend zur ASURO-Bibliothek:

Die hohe Schule der C-Programmierung ist daher alle Hardwarezugriffe zu kapseln, d.h. in separate Treiberrroutinen zu verbannen. Also so ähnlich, wie beim PC.http://www.progforum.com/showthread.php?t=2764
Daher auch meine Forderung nach einer sauberen Strukturierung incl. iodef.h (oben angesprochene "Kapselung" der Hardwarezugriffe)

Sternthaler
04.08.2007, 15:34
@ehenkes
Wir haben beim Asuro keine Treiber. Hier nennt sich das Funktion oder Makro.
Jede/s Funktion/Makro deutet über ihren Namen an, was im Asuro passieren soll. Wenn zufälligerweise ein Port-Bit in der Funktion gesetzt wird, um z.B. einen Pin auf +5V zu legen, könnte es darauf hindeuten, dass dann eine LED angeht. Der Funktions-/Makro-Name für so einen Fall könnte dann z.B.: StatusLED() heißen, und bekommt Parameter, über die dann die LED OFF, GREEN, RED oder YELLOW geschaltet werden kann. (Dieser Sachverhalt wir meistens in einer Dokumentation aufgeführt. Natürlich gibt es auch Dokumentationen zu den einzelnen Port-Pins. Diese kann aber machmal an einer anderen Stelle, also nicht bei der Beschreibung der hier beispielhaft erwähnten, fiktiven Funktion StatusLED() beschrieben worden sein.)

Ein Programmierer, der den Wunsch verspürt in seinem Programm eine LED an- und auszuschalten darf dann diese/s Funktion/Makro nutzen. Natürlich kann er sich auch erst durch viele Treiber, Includes Dokumentationen wühlen, im Internet nach Beispielen suchen oder in Foren Fragen stellen.

ehenkes
04.08.2007, 15:37
Siehe https://www.roboternetz.de/phpBB2/viewtopic.php?p=303976#303976


Wir haben beim Asuro keine Treiber. Hier nennt sich das Funktion oder Makro. Hänge Dich nicht am Wort "Treiber" auf. Die "Hardwarekapselung" ist der entscheidende Halbsatz. ;)

damaltor
04.08.2007, 18:51
hat er recht.. man kann auch beim asuro treiber schreiben... =)