Hallo, ich kenn mich noch nicht so gut aus mit diesen Makefiles. Dieses erzeug zwar ein HEX File korrect, aber kein ELF File für die Simulation in AVR STUDIO. Kann mir da einer helfen, . Wie macht man das? Bernd # makefile, written by guido socher MCU=attiny2313 CC=avr-gcc OBJCOPY=avr-objcopy OBJDUMP=avr-objdump REMOVE = rm -f AVRINC=C:/WinAVR/avr/include/avr AVRINCINT=C:/WinAVR/avr/include OUTPUTDIR=Out OBJLIBDIR=Obj OBJ = $(ASRC:.s=.o) $(SRC:.c=.o) CFLAGS=-g -mmcu=$(MCU) -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums \ -std=gnu99 -Wall -Wstrict-prototypes -Os -I$(OBJLIBDIR) ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp -Wall #------------------- .PHONY: all all: mm_example.hex #------------------- mm_example.hex : mm_example.out $(OBJCOPY) -R .eeprom -O ihex $(OUTPUTDIR)/mm_example.out $(OUTPUTDIR)/mm_example.hex avr-size $(OUTPUTDIR)/mm_example.out @echo " " @echo "Expl.: data=initialized data, bss=uninitialized data, text=code" @echo " " mm_example.out : mm_example.o $(CC) $(CFLAGS) -mno-interrupts -o $(OUTPUTDIR)/mm_example.out -Wl,-Map,$(OUTPUTDIR)/mm_example.map \ $(OUTPUTDIR)/mm_example.o $(OBJLIBDIR)/mm_mod1.o $(OBJLIBDIR)/mm_mod2.o #------------------- mm_example.o : mm_example.c $(OBJLIBDIR)/mm_module.h $(CC) $(CFLAGS) -Os -c -o $(OUTPUTDIR)/mm_example.o mm_example.c # avrdude program: mm_example.hex avrdude -p attiny2313 -c stk200 -P lpt1 -e -U flash:w:$(OUTPUTDIR)/mm_example.hex #------------------- clean: $(REMOVE) $(OUTPUTDIR)/*.o $(REMOVE) $(OUTPUTDIR)/*.hex $(REMOVE) $(OUTPUTDIR)/*.map $(REMOVE) $(OUTPUTDIR)/*.out $(REMOVE) $(OUTPUTDIR)/*.lss #-------------------
Hallo, ja klappt, wunderbar... Noch ein Problem jetzt. Folgendes Programm soll eine Led 8 mal an aus schalten Beim ersten mal geht es, auch mit anderen Werten #define uint8_t Blkz = 8 ; int main(void) while(1) // Hauptschleife while(0 < Blkz) { Blkz -=1; PORTD = (1<<PD1); /*LED on*/ ... hier delay PORTD = (0<<PD1); /*LED off*/ ... hier delay } ... MM_Data holen, klappt alles switch (MM_Data) { case 0: PORTB = (1<<PB0); Blkz = 1;break; case 1: PORTB = (1<<PB1); Blkz = 2;break; case 2: PORTB = (1<<PB2); Blkz = 3;break; case 3: PORTB = (1<<PB3); Blkz = 4;break; case 4: PORTB = (1<<PB4); Blkz = 5;break; case 5: PORTB = (1<<PB5); Blkz = 6;break; case 6: PORTB = (1<<PB6); Blkz = 7;break; case 7: PORTB = (1<<PB7); Blkz = 8;break; } } //ende von main Wenn die Variable Blkz dann z.B. auf 1 gesetzt wird blinkt es 4 mal, bei 2 8mal usw... Was mache ich da falsch ? Gruss Bernd
Bernd Bömer wrote: > Noch ein Problem jetzt. Mach dafür bitte einen neuen Thread auf (wegen der Leute, die den alten über die Suche finden und dann völlig unverwandtes Zeug darin vorfinden werden). Beschreibe dabei auch deine Umgebung (*) und bau das Beispiel so, dass man es auch zum Test compilieren kann statt irgendwas irgendwie abzutippen -- du wärst nicht der erste, der sich dabei auch mal vertippt, sodass man dann völlig falschen Fehlern hinterherrennt. (*) Wo ist die LED dran, wofür sind die PORTB-Pins gut bei dir?
Hallo Jörg, ok. Werde mich dran halten. Hat sich aber schon erledigt. Habe das Problem gefunden. Die case anweisungen wurden mehrfach durchlafen und deshalb auch in der whileschleife die Ausgabe mehrfach... Danke fuer die Antwort. Aber dieses makefile macht mir immer noch Probleme mit dem Verstaendniss. Wie kann man denn zusaetzlich ein epp File erzeugen lassen. Bernd
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.