Es lag aber wirklich nicht am Quellcode, sondern am Makefile. Die Prozeduren hatte ich aus dem AVR-GCC-Tutorial abgepinnt (http://www.mikrocontroller.net/wiki/...UART.2C_Teil_1).
Ich hatte mir als ich auf avr-gcc umgestiegen bin von irgendeiner Seite ein fertiges Makefile gezogen und auf meinen µC angepasst. Ich hatte schon damlas kein gutes Gefühl gehabt, da ich nicht richtig durchgeblickt habe was darin stand. Aber die ersten Projekte (IO-Test) funktionierten und seitdem habe ich die Datei bei allen Projekten benutzt.
Für die, die interessiert sind, habe ich hier die Makefile, die Schuld an meinem Problem war.
Code:
# AVR-GCC Makefile
# LET 16 March 2K+2
#
CPROG=uarttest
#OPT = -O2
OPT = -Os
#MMCU = atmega16
#DEBUG = -g
CC=avr-gcc
LD=avr-ld
OBJCOPY=avr-objcopy
AVRPATH=/usr/local/avr
INCLUDES=-I$(AVRPATH)/avr/include
CFLAGS= $(DEBUG) -mmcu=$(MMCU) $(OPT) -Wall
$(CPROG).hex: $(CPROG).out
$(OBJCOPY) -j .text -O ihex $(CPROG).out $(CPROG).hex
$(CPROG).out: $(CPROG).o
$(LD) -m AVR5 -o $(CPROG).out \
$(AVRPATH)/avr/lib/avr5/crtm16.o \
-L$(AVRPATH)/lib/gcc-lib/avr/3.3.1 \
-L$(AVRPATH)/avr/lib \
$(CPROG).o
$(CPROG).o: $(CPROG).c
$(CC) $(CFLAGS) $(INCLUDES) -c $(CPROG).c
program1: $(CPROG).hex
# Disassemble after linking
source: $(CPROG).out
/usr/local/avr/bin/avr-objdump -S $(CPROG).out > $(CPROG).ss
clean:
rm -f $(CPROG).o
rm -f $(CPROG).out
rm -f $(CPROG).map
rm -f $(CPROG).hex
Lesezeichen