PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : "undefined reference" bei AVRStudio



BlueEagle
17.08.2006, 14:42
Hallo!

Ich habe angefangen ein Programm in AVR-Studio zu schreiben. Ich benutze das AVR-GCC-Plugin.

Nun binde ich per include die Datei twi_slave.h ein.

#include "twi_slave.h"

Wenn ich nun versuche eine Funktion aufzurufen, die in dieser Datei vorhanden ist bekomme ich den Fehler:

../ServoAtmega48.c:234: undefined reference to `TWI_Slave_Initialise'

(Dieser Fehler tritt bei allen Funktionen auf die ich aus dieser Datei aufrufen möchte)

Im linken Bereich unter "External Dependencies" ist diese Datei aufgeführt.

Wie ich in anderen Threads erfahren habe handelt es sich um einen Fehler im Linker. Ich habe es so verstanden dass die Datei nicht kompiliert wurde und so der Linker die Funktion nicht findet und diese Fehlermeldung ausgibt.

Die Makefile wird ja vom AVRStudio verwaltet und so müsste dort alles stimmen. Woher kommt dann der Fehler?

Grüße
BlueEagle

robocat
17.08.2006, 15:11
entweder "twi_slave.h" liegt nicht im selben verzeichnis wie der code, oder `TWI_Slave_Initialise' ist falsch geschrieben oder kA? was anderes fällt mir nicht ein, könntest höchstens mal ein stück twi_slave.h posten.

AVR Studio 4? wäre nett, wenn du kurz etwas zu diesem gcc plugin sagen könntest, oder einen link hättest. das interessiert mich.

gruesse

BlueEagle
17.08.2006, 15:55
Hi

Danke für deine Antwort.

Das AVR-GCC Plugin ist der Plugin der automatisch von AVRStudio erkannt wird wenn WinAVR installiert ist.

Einfach die neueste Version von AVR-Studio installieren und dann die neueste von WinAVR. Dann kann man bei einem neuen Projekt wählen ob man Assembler coden will oder in C.

Die TWI_Slave.h ist die Datei aus dem Beispiel AVR311 (http://www.atmel.com/dyn/products/app_notes.asp?family_id=607)von Atmel.

Diese Datei liegt in dem gleichen Verzeichniss wie der Code. Die Funktion(en) sind richtig geschrieben.

Ich hab keine Ahnung was da schief läuft...

Grüße
BlueEagle

robocat
17.08.2006, 16:52
versuch mal eine andere header datei (kann leer sein) einzubinden. wenn das funktioniert ist der fehler auf die twi_slave.h eingegrenzt.
vielleicht hilft das?

"TWI_" oder "twi_"? das ist case-sensitive...

gruesse

BlueEagle
17.08.2006, 17:52
Hallo!

Ich denke die Probleme werden dadurch verursacht, dass der Code nich für den AVR-GCC- Compiler gedacht sind sondern für den IAR.

Daher habe ich mich entschieden auf einen anderen Code auszuweichen.

Ich habe mich für diesen (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=19341) entschieden.

Ich habe dazu nur eine kleine Verständnissfrage:
Ich muss in der Main-Funktion des Programms bei einem SlaveReceiver doch nur in einer Schleife die Funktion SR aufrufen und der ein Array aus Integerzahlen übergeben(und die maximale Länge). Dann kann ich doch hinterher auf das Array wieder zugreifen und die übertragenen Bytes auslesen, oder ?

Hoffe ich hab mich verständlich ausgedrückt... O:)

Grüße
BlueEagle