also ich hab jetzt das UART beispiel aus dem Wiki genommen und auf mein board (myavr mit megaabgestimmt, aber jetzt lässt sich das beispiel nicht compelieren, aber das wollt es vorher auch nicht...
bei dem board ist ein schon kompeliertes beispiel dabei, es funktioniert auch einwandfrei nur code hab ich leider keinen.
ich währ euch sehr dankbar wenn mir wer helfen könnte...
uart.c :
uart.h :Code:#include "uart.h" #define BAUDRATE 9600UL //Definition als unsigned long, sonst gibt es Fehler in der Berechnung void uart_init() { uint16_t ubrr = (uint16_t) ((uint32_t) F_CPU/(16*BAUDRATE) - 1); UBRRH = (uint8_t) (ubrr>>8); UBRRL = (uint8_t) (ubrr); // UART Receiver und Transmitter anschalten // Data mode 8N1, asynchron UCSRB = (1 << RXEN) | (1 << TXEN); UCSRC = (1 << URSEL) | (1 << UCSZ1) | (1 << UCSZ0); // Flush Receive-Buffer (entfernen evtl. vorhandener ungültiger Werte) do { UDR; } while (UCSRA & (1 << RXC)); }
das Makefile:Code:#ifndef _UART_H_ #define _UART_H_ #include <avr/io.h> extern void uart_init(); static inline int uart_putc (const uint8_t c) { // Warten, bis UDR bereit ist für einen neuen Wert while (!(UCSRA & (1 << UDRE))) ; // UDR Schreiben startet die Übertragung UDR = c; return 1; } static inline uint8_t uart_getc_wait() { // Warten, bis etwas empfangen wird while (!(UCSRA & (1 << RXC))) ; // Das empfangene Zeichen zurückliefern return UDR; } static inline int uart_getc_nowait() { // Liefer das empfangene Zeichen, falls etwas empfangen wurde; -1 sonst return (UCSRA & (1 << RXC)) ? (int) UDR : -1; } #endif /* _UART_H_ */
Und jetzt das was er beim compelieren ausgibt:Code:############################################################################### # Makefile for the project uarttest ############################################################################### ## General Flags PROJECT = uarttest MCU = atmega8 TARGET = uarttest.elf CC = avr-gcc ## 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 -std=gnu99 -DF_CPU=3686400UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums 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=uarttest.map ## Intel Hex file production flags HEX_FLASH_FLAGS = -R .eeprom -R .fuse -R .lock -R .signature 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 ## Objects that must be built in order to link OBJECTS = uart.o ## Objects explicitly added by the user LINKONLYOBJECTS = ## Build all: $(TARGET) uarttest.hex uarttest.eep uarttest.lss size ## Compile uart.o: ../uart.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) uarttest.elf dep/* uarttest.hex uarttest.eep uarttest.lss uarttest.map ## Other dependencies -include $(shell mkdir dep 2>/dev/null) $(wildcard dep/*)
danke schon im voraus lg mystboyCode:rm -rf uart.o uarttest.elf dep/* uarttest.hex uarttest.eep uarttest.lss uarttest.map Build succeeded with 0 Warnings... avr-gcc -mmcu=atmega8 -Wall -gdwarf-2 -std=gnu99 -DF_CPU=3686400UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT uart.o -MF dep/uart.o.d -c ../uart.c avr-gcc -mmcu=atmega8 -Wl,-Map=uarttest.map uart.o -o uarttest.elf //bis hier passt noch alles aber mit dem kann ich nichts anfangen... e:/winavr-20081205/bin/../lib/gcc/avr/4.3.2/../../../../avr/lib/avr4/crtm8.o:(.init9+0x0): undefined reference to `main' make: *** [uarttest.elf] Error 1 Build failed with 1 errors and 0 warnings...







Zitieren

Lesezeichen