PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Fehler beim kompilieren von LCD-Programmen



Vistakiller
01.08.2008, 14:19
Hallo

Ich versuche gerade, mein Display für den Asuro selbst zu programmieren.
Beim kompilieren erhalte ich folgende Fehler:



> "make"
set -e; avr-gcc -MM -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=i2c.lst i2c.c \
| sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > i2c.d; \
[ -s i2c.d ] || rm -f i2c.d
-------- begin --------
avr-gcc --version
avr-gcc (WinAVR 20080610) 4.3.0
Copyright (C) 2008 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.

avr-gcc -c -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=i2c.lst i2c.c -o i2c.o
i2c.c:41: warning: function definition has qualified void return type
i2c.c: In function 'i2c_init':
i2c.c:52: warning: implicit declaration of function 'cbi'
i2c.c: In function 'i2c_start':
i2c.c:64: warning: implicit declaration of function 'sbi'
avr-gcc -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=test.o test.o asuro.o i2c.o pcf8574.o lcd.o --output test.elf -Wl,-Map=test.map,--cref -lm
i2c.o: In function `i2c_read':
C:\ASURO_src\FirstTry/i2c.c:150: undefined reference to `sbi'
C:\ASURO_src\FirstTry/i2c.c:151: undefined reference to `cbi'
C:\ASURO_src\FirstTry/i2c.c:154: undefined reference to `cbi'
C:\ASURO_src\FirstTry/i2c.c:160: undefined reference to `sbi'
C:\ASURO_src\FirstTry/i2c.c:162: undefined reference to `cbi'
C:\ASURO_src\FirstTry/i2c.c:163: undefined reference to `sbi'
C:\ASURO_src\FirstTry/i2c.c:166: undefined reference to `cbi'
i2c.o: In function `i2c_write':
C:\ASURO_src\FirstTry/i2c.c:115: undefined reference to `sbi'
C:\ASURO_src\FirstTry/i2c.c:117: undefined reference to `cbi'
C:\ASURO_src\FirstTry/i2c.c:118: undefined reference to `sbi'
C:\ASURO_src\FirstTry/i2c.c:121: undefined reference to `cbi'
C:\ASURO_src\FirstTry/i2c.c:126: undefined reference to `sbi'
C:\ASURO_src\FirstTry/i2c.c:127: undefined reference to `cbi'
C:\ASURO_src\FirstTry/i2c.c:130: undefined reference to `cbi'
i2c.o: In function `i2c_start':
C:\ASURO_src\FirstTry/i2c.c:64: undefined reference to `sbi'
i2c.o: In function `i2c_stop':
C:\ASURO_src\FirstTry/i2c.c:97: undefined reference to `sbi'
C:\ASURO_src\FirstTry/i2c.c:98: undefined reference to `sbi'
C:\ASURO_src\FirstTry/i2c.c:100: undefined reference to `cbi'
C:\ASURO_src\FirstTry/i2c.c:102: undefined reference to `cbi'
i2c.o: In function `i2c_rep_start':
C:\ASURO_src\FirstTry/i2c.c:77: undefined reference to `sbi'
C:\ASURO_src\FirstTry/i2c.c:79: undefined reference to `cbi'
C:\ASURO_src\FirstTry/i2c.c:81: undefined reference to `cbi'
C:\ASURO_src\FirstTry/i2c.c:83: undefined reference to `sbi'
i2c.o: In function `i2c_init':
C:\ASURO_src\FirstTry/i2c.c:51: undefined reference to `cbi'
C:\ASURO_src\FirstTry/i2c.c:53: undefined reference to `cbi'
C:\ASURO_src\FirstTry/i2c.c:54: undefined reference to `cbi'
C:\ASURO_src\FirstTry/i2c.c:55: undefined reference to `cbi'
lcd.o: In function `lcd_puts_p':
C:\ASURO_src\FirstTry/lcd.c:173: undefined reference to `PRG_RDB'
make: *** [test.elf] Error 1

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

uwegw
01.08.2008, 15:02
Da scheint irgendeine nötige Datei nicht inkludiert zu sein... und was steht in Zeile 41?

Vistakiller
01.08.2008, 15:05
Hier die i2c.c Datei

uwegw
01.08.2008, 15:17
i2c.c:41: warning: function definition has qualified void return type
Heißt: Die Funktion gibt void zurück, dieses void iist bei dir aber noch mit einem Qualifier als volatile gekennzeichnet. Das darf eigentlich nicht sein...

Und die Funktionen sbi und cbi sind bloß veraltet. Entweder du ersetzt sie duch die aktuelle PORT |= (1<<BIT) - Schreibweise, oder du inkludierst noch #include <compat/deprected.h>

Sternthaler
01.08.2008, 17:39
Hallo Vistakiller,

erst einmal willkommen im Forum.

Keine Ahnung, wo du den Source her hast.
Ich hänge dir mal die beiden (halbwegs) aktuellen Dateien i2c.c und i2c.h aus der Asuro-LIB an.
ACHTUNG: Die Funktionsnamen sind anders. (Deshalb bin ich mir auch relativ sicher, dass deine Datei nicht aus einer alten Asuro-LIB kommt.)

Viel Erfolg mit dem Asuro.

Gruß Sternthaler